{"version":3,"file":"js/6197-be7c303832405a5a6eb6.js","mappings":";+KAGA,SAASA,IAeP,OAdAA,EAAWC,OAAOC,QAAU,SAAUC,GACpC,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAASF,UAAUD,GAEvB,IAAK,IAAII,KAAOD,EACVN,OAAOQ,UAAUC,eAAeC,KAAKJ,EAAQC,KAC/CL,EAAOK,GAAOD,EAAOC,IAK3B,OAAOL,GAGFH,EAASY,MAAMC,KAAMR,WAkB9B,IAAIS,EAAY,CAAC,KAAM,SAQnBC,GAA8B,IAAAC,aAAW,SAAwBC,EAAMC,GACzE,IAAIC,EAAUF,EAAKG,GACfC,OAAmB,IAAZF,EAAqB,OAASA,EACrCG,EAAaL,EAAKM,MAClBA,OAAuB,IAAfD,EAAwB,GAAKA,EACrCE,EA5BN,SAAuCjB,EAAQkB,GAC7C,GAAc,MAAVlB,EAAgB,MAAO,GAC3B,IAEIC,EAAKJ,EAFLD,EAAS,GACTuB,EAAazB,OAAO0B,KAAKpB,GAG7B,IAAKH,EAAI,EAAGA,EAAIsB,EAAWpB,OAAQF,IACjCI,EAAMkB,EAAWtB,GACbqB,EAASG,QAAQpB,IAAQ,IAC7BL,EAAOK,GAAOD,EAAOC,IAGvB,OAAOL,EAgBK0B,CAA8BZ,EAAMH,GAEhD,OAAoB,IAAAgB,eAAcT,EAAMrB,EAAS,CAC/CkB,IAAKA,EACLK,MAAOvB,EAAS,CACd+B,OAAQ,EACRC,KAAM,gBACNC,OAAQ,MACRC,OAAQ,OACRC,SAAU,SACVC,QAAS,EACTC,SAAU,WACVC,MAAO,MAEPC,WAAY,SACZC,SAAU,UACTjB,IACFC,OCzDL,SAASiB,EAAiBC,GACxB,MCT4B,qBAAXC,QAA0BA,OAAOC,UAAYD,OAAOC,SAASd,cDSzDY,EAAUA,EAAQG,cAAgBD,SAAW,KEPpE,SAASE,EAAkBC,EAAKC,IACnB,MAAPA,GAAeA,EAAMD,EAAIzC,UAAQ0C,EAAMD,EAAIzC,QAE/C,IAAK,IAAIF,EAAI,EAAG6C,EAAO,IAAIC,MAAMF,GAAM5C,EAAI4C,EAAK5C,IAAK6C,EAAK7C,GAAK2C,EAAI3C,GAEnE,OAAO6C,EAYT,SAASE,EAAgCC,EAAGC,GAC1C,IAAIC,EAEJ,GAAsB,qBAAXC,QAAgD,MAAtBH,EAAEG,OAAOC,UAAmB,CAC/D,GAAIN,MAAMO,QAAQL,KAAOE,EAb7B,SAAqCF,EAAGM,GACtC,GAAKN,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAON,EAAkBM,EAAGM,GACvD,IAAIC,EAAI1D,OAAOQ,UAAUmD,SAASjD,KAAKyC,GAAGS,MAAM,GAAI,GAEpD,MADU,WAANF,GAAkBP,EAAEU,cAAaH,EAAIP,EAAEU,YAAYC,MAC7C,QAANJ,GAAqB,QAANA,EAAoBT,MAAMc,KAAKZ,GACxC,cAANO,GAAqB,2CAA2CM,KAAKN,GAAWb,EAAkBM,EAAGM,QAAzG,GAOgCQ,CAA4Bd,KAAOC,GAAkBD,GAAyB,kBAAbA,EAAE9C,OAAqB,CAChHgD,IAAIF,EAAIE,GACZ,IAAIlD,EAAI,EACR,OAAO,WACL,OAAIA,GAAKgD,EAAE9C,OAAe,CACxB6D,MAAM,GAED,CACLA,MAAM,EACNC,MAAOhB,EAAEhD,OAKf,MAAM,IAAIiE,UAAU,yIAItB,OADAf,EAAKF,EAAEG,OAAOC,aACJc,KAAKC,KAAKjB,GAStB,SAASkB,EAAUtD,EAAKkD,GACtB,GAAW,MAAPlD,EAEJ,GCxCF,SAAoBkD,GAElB,SAAUA,GAAoC,qBAA3B,GAAGR,SAASjD,KAAKyD,IDsChCK,CAAWvD,GACbA,EAAIkD,QAEJ,IACElD,EAAIwD,QAAUN,EACd,MAAOO,GACP,MAAM,IAAIC,MAAM,wBAA2BR,EAAQ,aAAiBlD,EAAM,MEpDhF,SAAS,IAeP,OAdA,EAAWjB,OAAOC,QAAU,SAAUC,GACpC,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAASF,UAAUD,GAEvB,IAAK,IAAII,KAAOD,EACVN,OAAOQ,UAAUC,eAAeC,KAAKJ,EAAQC,KAC/CL,EAAOK,GAAOD,EAAOC,IAK3B,OAAOL,GAGF,EAASS,MAAMC,KAAMR,WAkB9B,IAkBIwE,EAlBA,EAAY,CAAC,KAAM,WAAY,QAM/BlD,EAAO,CACTmD,QAAS,EACTC,WAAY,GAEV,EAAW,CACbD,OAAQ,GACRC,UAAW,IAETC,EAAc,CAChBF,OAAQ,KACRC,UAAW,MAcTE,GAAqB,IAAAjE,aAAW,SAAeC,EAAMiE,GACvD,IAAI/D,EAAUF,EAAKG,GACfC,OAAmB,IAAZF,EAAqB,MAAQA,EACpCgE,EAAWlE,EAAKkE,SAChBC,EAAYnE,EAAKoE,KACjBC,OAA2B,IAAdF,EAAuB,SAAWA,EAC/C5D,EAnDN,SAAuCjB,EAAQkB,GAC7C,GAAc,MAAVlB,EAAgB,MAAO,GAC3B,IAEIC,EAAKJ,EAFLD,EAAS,GACTuB,EAAazB,OAAO0B,KAAKpB,GAG7B,IAAKH,EAAI,EAAGA,EAAIsB,EAAWpB,OAAQF,IACjCI,EAAMkB,EAAWtB,GACbqB,EAASG,QAAQpB,IAAQ,IAC7BL,EAAOK,GAAOD,EAAOC,IAGvB,OAAOL,EAuCK,CAA8Bc,EAAM,GAE5CsE,GAAS,IAAAC,QAAO,MAChBtE,EFRN,WACE,IAAK,IAAIuE,EAAOpF,UAAUC,OAAQoF,EAAO,IAAIxC,MAAMuC,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQtF,UAAUsF,GAGzB,OAAO,IAAAC,cAAY,SAAUC,GAC3B,IAAK,IAAuDC,EAAnDC,EAAY5C,EAAgCuC,KAAgBI,EAAQC,KAAa5B,MAExFK,EADUsB,EAAM1B,MACDyB,KAGhBH,GEHOM,CAAgBd,EAAcK,GACpCU,GAAQ,IAAAC,UAAQ,WAClB,OAAoB,IAAApE,eAAcT,EAAM,EAAS,GAAIG,EAAO,CAC1DN,IAAKA,EACL,oBAAoB,IAClBiE,KAEN,CAACA,EAAU3D,IAEX,OAkFF,SAA0B8D,EAAY5C,EAASxB,GAC7C,IAAIiF,ECpKN,SAAqB/B,GACnB,IAAIlD,GAAM,IAAAsE,QAAO,MAIjB,OAHA,IAAAY,YAAU,WACRlF,EAAIwD,QAAUN,IACb,CAACA,IACGlD,EAAIwD,QD+JI2B,CAAYf,GACvBgB,GAAS,IAAAd,QAAO,MAChBe,GAAU,IAAAf,SAAO,IACrB,IAAAY,YAAU,WACR,IAAIvD,EAAgBJ,EAAiBvB,EAAIwD,SAEpC6B,EAAQ7B,QAIFyB,IAAab,GACtBgB,EAAO5B,SAAW4B,EAAO5B,QAAQ8B,UACjCF,EAAO5B,QAAU+B,EAAanB,EAAYzC,GAC1CyD,EAAO5B,QAAQgC,MAAMhE,IAErB4D,EAAO5B,SAAW4B,EAAO5B,QAAQiC,OAAOjE,IARxC6D,EAAQ7B,SAAU,EAClB4B,EAAO5B,QAAU+B,EAAanB,EAAYzC,GAC1CyD,EAAO5B,QAAQgC,MAAMhE,MAQtB,CAACA,EAAS4C,EAAYa,EAAUjF,KACnC,IAAAkF,YAAU,WACR,OAAO,WACLE,EAAO5B,SAAW4B,EAAO5B,QAAQ8B,aAElC,IA1GHI,CAAiBtB,EAAYW,EAAOV,GAC7BU,KAeT,SAASQ,EAAapB,EAAMwB,GAC1B,IAAIrG,IAAQmB,EAAK0D,GAyBjB,MAAO,CACLqB,MAxBU,SAASA,EAAMhE,GACzB,GAAIsC,EAAYK,GACd,EAASA,GAAM7E,GAAOkC,EACtBoE,QACK,CACL,IAAIjB,EAAOgB,EAAI/E,cAAc,OAC7B+D,EAAKkB,aAAa,mBAAqB1B,EAAM,QAC7CL,EAAYK,GAAQQ,EACpBgB,EAAIG,KAAKC,YAAYjC,EAAYK,IACjCqB,EAAMhE,KAgBRiE,OAZW,SAAgBjE,GAC3B,EAAS2C,GAAM7E,GAAOkC,EACtBoE,KAWAN,QARY,kBACL,EAASnB,GAAM7E,GACtBsG,MAUJ,SAASA,IACY,MAAfjC,GACFlC,OAAOuE,aAAarC,GAGtBA,EAAclC,OAAOwE,YAAW,WAC9BlH,OAAO0B,KAAK,GAAUyF,SAAQ,SAAUC,GACtC,IAAI/B,EAAa+B,EACDrC,EAAYM,KAG1B,IAAAgC,SAAqB,IAAAxF,eAAcf,EAAgB,CACjDK,GAAI,QACU,IAAAU,eAAc,MAAO,CAQnCyF,KAAqB,cAAfjC,EAA6B,QAAU,SAC7C,YAAaA,GACZrF,OAAO0B,KAAK,EAAS2D,IAAakC,KAAI,SAAUhH,GACjD,OAAoB,IAAAiH,cAAa,EAASnC,GAAY9E,GAAM,CAC1DA,IAAKA,EACLU,IAAK,YAEH8D,EAAYM,SAGrB,KA6BL,4CE5LA,IAAIoC,EAAuB,EAAQ,OAEnC,SAASC,KACT,SAASC,KACTA,EAAuBC,kBAAoBF,EAE3CG,EAAOC,QAAU,WACf,SAASC,EAAKxG,EAAOyG,EAAUC,EAAeC,EAAUC,EAAcC,GACpE,GAAIA,IAAWX,EAAf,CAIA,IAAIY,EAAM,IAAI1D,MACZ,mLAKF,MADA0D,EAAIvE,KAAO,sBACLuE,GAGR,SAASC,IACP,OAAOP,EAFTA,EAAKQ,WAAaR,EAMlB,IAAIS,EAAiB,CACnBC,MAAOV,EACPW,OAAQX,EACRY,KAAMZ,EACNa,KAAMb,EACNc,OAAQd,EACRe,OAAQf,EACRgB,OAAQhB,EACRiB,OAAQjB,EAERkB,IAAKlB,EACLmB,QAASZ,EACT7F,QAASsF,EACTX,YAAaW,EACboB,WAAYb,EACZ1C,KAAMmC,EACNqB,SAAUd,EACVe,MAAOf,EACPgB,UAAWhB,EACXiB,MAAOjB,EACPkB,MAAOlB,EAEPmB,eAAgB9B,EAChBC,kBAAmBF,GAKrB,OAFAc,EAAekB,UAAYlB,EAEpBA,0BC9CPX,EAAOC,QAAU,EAAQ,MAAR,mCCNnBD,EAAOC,QAFoB,sECT3B,OA2HA,SAAY6B,EAAMC,IAMd,WAAY,IAAW,IAAIC,WAAW,GAAG,IAAIC,YAAY,GAAG,IAAIC,WAAW,GAAI,OAAO,MAAMC,IAAI,SAASC,EAAEC,EAAEC,GAAG,OAAOvJ,KAAKgD,MAAMsG,EAAEC,GAAG,SAASC,EAAEC,EAAEH,GAAM9J,UAAUC,OAAO,IAAG6J,EAAE,GAAE,IAAI,IAAIC,EAAE,EAAEG,EAAED,EAAEhK,OAAO8J,EAAEG,IAAIH,IAAID,EAAGtJ,KAAKsJ,GAAQ,IAALG,EAAEF,GAAQ,SAASI,EAAEL,GAAG,IAAIC,EAAE,GAAc,kBAAJD,EAAa,CAACC,EAAE,IAAIlH,MAAMiH,GAAG,IAAI,IAAII,EAAE,EAAEA,EAAEJ,IAAII,EAAGH,EAAEG,GAAG,OAAQH,EAAED,EAAEtG,MAAM,GAA6G,OAA1GuG,EAAEK,SAASP,EAAEE,EAAEM,OAAON,EAAEA,EAAEO,WAAWP,EAAE9J,OAAO8J,EAAEQ,IAAIP,EAAgB,kBAAJF,GAAcA,EAAEO,SAAQN,EAAEM,OAAOP,EAAEO,QAAcN,EAAE,IAAIzH,OAAOmH,WAAWU,EAAE,MAAMP,IAAI,IAAItH,OAAOoH,YAAYS,EAAE,MAAMP,IAAI,IAAItH,OAAOqH,WAAWQ,EAAE,MAAMP,KAAxiB,GAAijB,WAAY,IAAI,GAAmB,qBAATtH,OAAsB,OAAO,GAAG,SAAUA,OAAQ,OAAO,IAAIyH,EAAE,oEAAoEzH,OAAOkI,KAAK,SAASN,GAAG,IAAaN,EAAEE,EAAXD,EAAE,GAAW,IAAID,EAAE,EAAEE,EAAEI,EAAEjK,OAAO2J,EAAEE,EAAEF,GAAG,EAAE,CAAC,IAAIa,EAAkB,IAAhBP,EAAEQ,WAAWd,GAAWe,EAAoB,IAAlBT,EAAEQ,WAAWd,EAAE,GAAWK,EAAoB,IAAlBC,EAAEQ,WAAWd,EAAE,GAAkBI,GAAM,EAAFS,IAAM,EAAIE,GAAG,EAAO5H,EAAE6G,EAAE,EAAEE,GAAM,GAAFa,IAAO,EAAIV,GAAG,EAAG,GAAOW,EAAEhB,EAAE,EAAEE,EAAK,GAAFG,EAAM,GAAGJ,GAAGE,EAAEc,OAAtFJ,GAAG,GAA6FV,EAAEc,OAAOb,GAAGD,EAAEc,OAAO9H,GAAGgH,EAAEc,OAAOD,GAAG,OAAOf,GAAG,MAAMiB,KAA/c,GAMjjB,IAGIC,EAHAC,EAAO,mEAGiE,SAASC,EAAWnB,EAAEK,EAAEN,GAAS,MAAHC,IAAY,iBAAiBA,EAAGtJ,KAAK0K,WAAWpB,EAAEK,EAAEN,GAAc,MAAHM,GAAS,iBAAiBL,EAAGtJ,KAAK2K,WAAWrB,EAAE,KAAUtJ,KAAK2K,WAAWrB,EAAEK,IAAM,SAASiB,IAAM,OAAO,IAAIH,EAAW,MAAujB,+BAAnBI,UAAUC,SAAyCL,EAAW7K,UAAUmL,GAAjf,SAAa1B,EAAE2B,EAAEC,EAAE3B,EAAE/G,EAAEgH,GAAyB,IAAtB,IAAIY,EAAI,MAAFa,EAAQE,EAAEF,GAAG,KAAWzB,GAAG,GAAE,CAAC,IAAII,EAAU,MAAR3J,KAAKqJ,GAAaD,EAAEpJ,KAAKqJ,MAAM,GAAOiB,EAAEY,EAAEvB,EAAEP,EAAEe,EAA4C5H,IAA1CoH,EAAEQ,EAAER,IAAM,MAAFW,IAAU,IAAIW,EAAE3B,IAAM,WAAF/G,MAAqB,KAAK+H,IAAI,IAAIY,EAAE9B,GAAG7G,IAAI,IAAI0I,EAAE3B,KAAO,WAAFK,EAAa,OAAOpH,GAA8RgI,EAAM,IAAqC,YAAnBM,UAAUC,SAAsBL,EAAW7K,UAAUmL,GAA1rB,SAAa1B,EAAEE,EAAEe,EAAEhB,EAAEI,EAAEN,GAAG,OAAQA,GAAG,GAAE,CAAC,IAAIO,EAAEJ,EAAEvJ,KAAKqJ,KAAKiB,EAAEhB,GAAGI,EAAEA,EAAEyB,KAAKC,MAAMzB,EAAE,UAAUW,EAAEhB,KAAO,SAAFK,EAAW,OAAOD,GAA8kBa,EAAM,KAAQE,EAAW7K,UAAUmL,GAAnZ,SAAa1B,EAAE2B,EAAEC,EAAE3B,EAAE/G,EAAEgH,GAAyB,IAAtB,IAAIY,EAAI,MAAFa,EAAQE,EAAEF,GAAG,KAAWzB,GAAG,GAAE,CAAC,IAAII,EAAU,MAAR3J,KAAKqJ,GAAaD,EAAEpJ,KAAKqJ,MAAM,GAAOiB,EAAEY,EAAEvB,EAAEP,EAAEe,EAA+B5H,IAA7BoH,EAAEQ,EAAER,IAAM,MAAFW,IAAU,IAAIW,EAAE3B,GAAG/G,IAAQ,KAAK+H,GAAG,IAAIY,EAAE9B,EAAE6B,EAAE3B,KAAO,UAAFK,EAAY,OAAOpH,GAAyNgI,EAAM,IAAIE,EAAW7K,UAAUyL,GAAGd,EAAME,EAAW7K,UAAU0L,IAAK,GAAGf,GAAO,EAAGE,EAAW7K,UAAU2L,GAAI,GAAGhB,EAAoBE,EAAW7K,UAAU4L,GAAGL,KAAKM,IAAI,EAApC,IAA6ChB,EAAW7K,UAAU8L,GAAlE,GAA2EnB,EAAME,EAAW7K,UAAU+L,GAAG,EAAEpB,EAA3G,GAAuH,IAA2EqB,EAAGC,EAAzBC,EAAM,IAAIzJ,MAAuC,IAArBuJ,EAAG,IAAI1B,WAAW,GAAO2B,EAAG,EAAEA,GAAI,IAAIA,EAAIC,EAAMF,KAAMC,EAAwB,IAArBD,EAAG,IAAI1B,WAAW,GAAO2B,EAAG,GAAGA,EAAG,KAAKA,EAAIC,EAAMF,KAAMC,EAAwB,IAArBD,EAAG,IAAI1B,WAAW,GAAO2B,EAAG,GAAGA,EAAG,KAAKA,EAAIC,EAAMF,KAAMC,EAAG,SAASE,EAASxC,GAAG,MAAzQ,uCAAsRc,OAAOd,GAAG,SAASyC,EAAM1B,EAAEf,GAAG,IAAII,EAAEmC,EAAMxB,EAAEJ,WAAWX,IAAI,OAAU,MAAHI,GAAU,EAAEA,EAA4M,SAASsC,EAAI1C,GAAG,IAAIe,EAAEM,IAAmB,OAAbN,EAAE4B,QAAQ3C,GAAUe,EAA4/C,SAAS6B,EAAM5C,GAAG,IAAQe,EAAJd,EAAE,EAAoI,OAAjH,IAAXc,EAAEf,IAAI,MAAQA,EAAEe,EAAEd,GAAG,IAAgB,IAATc,EAAEf,GAAG,KAAOA,EAAEe,EAAEd,GAAG,GAAe,IAATc,EAAEf,GAAG,KAAOA,EAAEe,EAAEd,GAAG,GAAe,IAATc,EAAEf,GAAG,KAAOA,EAAEe,EAAEd,GAAG,GAAe,IAATc,EAAEf,GAAG,KAAOA,EAAEe,EAAEd,GAAG,GAASA,EAA4rF,SAAS4C,EAAQ7C,GAAGvJ,KAAKoK,EAAEb,EAA2pB,SAAS8C,EAAW9C,GAAGvJ,KAAKoK,EAAEb,EAAEvJ,KAAKsM,GAAG/C,EAAEgD,WAAWvM,KAAKwM,IAAY,MAARxM,KAAKsM,GAAStM,KAAKyM,IAAIzM,KAAKsM,IAAI,GAAGtM,KAAK0M,IAAI,GAAInD,EAAE8B,GAAG,IAAK,EAAErL,KAAK2M,IAAI,EAAEpD,EAAEqD,EAGrgO,SAASC,IAAU7M,KAAKT,EAAE,EAAES,KAAKyJ,EAAE,EAAEzJ,KAAK8M,EAAE,IAAIzK,MAHq8M+J,EAAQxM,UAAUmN,QAAlS,SAAkBxD,GAAG,OAAGA,EAAEyD,EAAE,GAAGzD,EAAE0D,UAAUjN,KAAKoK,IAAI,EAAUb,EAAE2D,IAAIlN,KAAKoK,GAAeb,GAA2N6C,EAAQxM,UAAUuN,OAA1O,SAAiB5D,GAAG,OAAOA,GAA8N6C,EAAQxM,UAAUwN,OAA9O,SAAiB7D,GAAGA,EAAE8D,SAASrN,KAAKoK,EAAE,KAAKb,IAAkN6C,EAAQxM,UAAU0N,MAAjO,SAAgB/D,EAAEC,EAAEc,GAAGf,EAAEgE,WAAW/D,EAAEc,GAAGtK,KAAKoN,OAAO9C,IAAyL8B,EAAQxM,UAAU4N,MAAxM,SAAgBjE,EAAEe,GAAGf,EAAEkE,SAASnD,GAAGtK,KAAKoN,OAAO9C,IAAksC+B,EAAWzM,UAAUmN,QAAlsB,SAAqBxD,GAAG,IAAIe,EAAEM,IAA0H,OAApHrB,EAAEmE,MAAMC,UAAU3N,KAAKoK,EAAEwC,EAAEtC,GAAGA,EAAE+C,SAASrN,KAAKoK,EAAE,KAAKE,GAAMf,EAAEyD,EAAE,GAAG1C,EAAE2C,UAAUxC,EAAWmD,MAAM,GAAG5N,KAAKoK,EAAEyD,MAAMvD,EAAEA,GAAUA,GAAujB+B,EAAWzM,UAAUuN,OAA1kB,SAAoB5D,GAAG,IAAIe,EAAEM,IAAiC,OAA3BrB,EAAEuE,OAAOxD,GAAGtK,KAAKoN,OAAO9C,GAAUA,GAAuhB+B,EAAWzM,UAAUwN,OAA1iB,SAAoB7D,GAAG,KAAMA,EAAEqD,GAAG5M,KAAK2M,KAAKpD,EAAEA,EAAEqD,KAAK,EAAE,IAAI,IAAIpD,EAAE,EAAEA,EAAExJ,KAAKoK,EAAEwC,IAAIpD,EAAE,CAAC,IAAIc,EAAO,MAALf,EAAEC,GAAaG,EAAGW,EAAEtK,KAAKwM,MAAOlC,EAAEtK,KAAKyM,KAAKlD,EAAEC,IAAI,IAAIxJ,KAAKwM,IAAKxM,KAAK0M,KAAK,IAAKnD,EAAE+B,GAAoD,IAApC/B,EAAbe,EAAEd,EAAExJ,KAAKoK,EAAEwC,IAAQ5M,KAAKoK,EAAEW,GAAG,EAAEpB,EAAEJ,EAAEC,EAAE,EAAExJ,KAAKoK,EAAEwC,GAASrD,EAAEe,IAAIf,EAAEgC,IAAIhC,EAAEe,IAAIf,EAAEgC,GAAGhC,IAAIe,KAAMf,EAAEwE,QAAQxE,EAAEyE,UAAUhO,KAAKoK,EAAEwC,EAAErD,GAAMA,EAAE0D,UAAUjN,KAAKoK,IAAI,GAAGb,EAAEsE,MAAM7N,KAAKoK,EAAEb,IAA2O8C,EAAWzM,UAAU0N,MAAvM,SAAmB/D,EAAEC,EAAEc,GAAGf,EAAEgE,WAAW/D,EAAEc,GAAGtK,KAAKoN,OAAO9C,IAA+J+B,EAAWzM,UAAU4N,MAAjS,SAAmBjE,EAAEe,GAAGf,EAAEkE,SAASnD,GAAGtK,KAAKoN,OAAO9C,IAAspBG,EAAW7K,UAAUkO,OAA9qN,SAAmBxD,GAAG,IAAI,IAAIf,EAAEvJ,KAAK4M,EAAE,EAAErD,GAAG,IAAIA,EAAGe,EAAEf,GAAGvJ,KAAKuJ,GAAGe,EAAEsC,EAAE5M,KAAK4M,EAAEtC,EAAE0C,EAAEhN,KAAKgN,GAA2mNvC,EAAW7K,UAAUsM,QAA9nN,SAAoB3C,GAAGvJ,KAAK4M,EAAE,EAAE5M,KAAKgN,EAAGzD,EAAE,GAAI,EAAE,EAAKA,EAAE,EAAGvJ,KAAK,GAAGuJ,EAAUA,GAAG,EAAGvJ,KAAK,GAAGuJ,EAAEvJ,KAAKuL,GAAQvL,KAAK4M,EAAE,GAAiiNnC,EAAW7K,UAAU+K,WAAhgN,SAAuBjB,EAAEF,GAAG,IAAIF,EAAE,GAAM,IAAHE,EAAOF,EAAE,OAAO,GAAM,GAAHE,EAAMF,EAAE,OAAO,GAAM,KAAHE,EAAQF,EAAE,OAAO,GAAM,GAAHE,EAAMF,EAAE,OAAO,GAAM,IAAHE,EAAOF,EAAE,MAAM,CAAC,GAAM,GAAHE,EAAmC,YAApBxJ,KAAKiO,UAAUvE,EAAEF,GAA1BF,EAAE,EAAuCtJ,KAAK4M,EAAE,EAAE5M,KAAKgN,EAAE,EAA6B,IAA3B,IAAI5D,EAAEM,EAAEjK,OAAOkK,GAAE,EAAMN,EAAE,IAAUD,GAAG,GAAE,CAAC,IAAIG,EAAM,GAAHD,EAAW,IAALI,EAAEN,GAAO4C,EAAMtC,EAAEN,GAAMG,EAAE,EAAmB,KAAbG,EAAEW,OAAOjB,KAASO,GAAE,IAAcA,GAAE,EAAY,GAAHN,EAAMrJ,KAAKA,KAAK4M,KAAKrD,EAAUF,EAAEC,EAAEtJ,KAAKqL,IAAIrL,KAAKA,KAAK4M,EAAE,KAAKrD,GAAI,GAAIvJ,KAAKqL,GAAGhC,GAAI,IAAKA,EAAErJ,KAAKA,KAAK4M,KAAMrD,GAAIvJ,KAAKqL,GAAGhC,GAASrJ,KAAKA,KAAK4M,EAAE,IAAIrD,GAAGF,GAAGA,GAAGC,IAAQtJ,KAAKqL,KAAIhC,GAAGrJ,KAAKqL,KAAU,GAAH/B,GAAkB,IAAN,IAALI,EAAE,MAAY1J,KAAKgN,GAAG,EAAK3D,EAAE,IAAGrJ,KAAKA,KAAK4M,EAAE,KAAM,GAAI5M,KAAKqL,GAAGhC,GAAI,GAAIA,IAAGrJ,KAAK+N,QAAWpE,GAAGc,EAAWmD,KAAKC,MAAM7N,KAAKA,OAA+5LyK,EAAW7K,UAAUmO,MAA76L,WAAyC,IAArB,IAAIxE,EAAEvJ,KAAKgN,EAAEhN,KAAKsL,GAAStL,KAAK4M,EAAE,GAAG5M,KAAKA,KAAK4M,EAAE,IAAIrD,KAAKvJ,KAAK4M,GAAy2LnC,EAAW7K,UAAU+N,UAAp0J,SAAsBnE,EAAEc,GAAG,IAAIf,EAAE,IAAIA,EAAEvJ,KAAK4M,EAAE,EAAErD,GAAG,IAAIA,EAAGe,EAAEf,EAAEC,GAAGxJ,KAAKuJ,GAAG,IAAIA,EAAEC,EAAE,EAAED,GAAG,IAAIA,EAAGe,EAAEf,GAAG,EAAEe,EAAEsC,EAAE5M,KAAK4M,EAAEpD,EAAEc,EAAE0C,EAAEhN,KAAKgN,GAAiuJvC,EAAW7K,UAAUoO,UAApvJ,SAAsBxE,EAAEc,GAAG,IAAI,IAAIf,EAAEC,EAAED,EAAEvJ,KAAK4M,IAAIrD,EAAGe,EAAEf,EAAEC,GAAGxJ,KAAKuJ,GAAGe,EAAEsC,EAAEzB,KAAK+C,IAAIlO,KAAK4M,EAAEpD,EAAE,GAAGc,EAAE0C,EAAEhN,KAAKgN,GAAqqJvC,EAAW7K,UAAUuO,SAAxrJ,SAAqB1E,EAAEH,GAAG,IAAiGK,EAA7FW,EAAEb,EAAEzJ,KAAKqL,GAAO9B,EAAEvJ,KAAKqL,GAAGf,EAAMlB,GAAG,GAAGG,GAAG,EAAMF,EAAE8B,KAAKC,MAAM3B,EAAEzJ,KAAKqL,IAAI3B,EAAG1J,KAAKgN,GAAG1C,EAAGtK,KAAKsL,GAAK,IAAI3B,EAAE3J,KAAK4M,EAAE,EAAEjD,GAAG,IAAIA,EAAGL,EAAEK,EAAEN,EAAE,GAAIrJ,KAAK2J,IAAIJ,EAAGG,EAAEA,GAAG1J,KAAK2J,GAAGP,IAAIkB,EAAE,IAAIX,EAAEN,EAAE,EAAEM,GAAG,IAAIA,EAAGL,EAAEK,GAAG,EAAEL,EAAED,GAAGK,EAAEJ,EAAEsD,EAAE5M,KAAK4M,EAAEvD,EAAE,EAAEC,EAAE0D,EAAEhN,KAAKgN,EAAE1D,EAAEyE,SAAg9ItD,EAAW7K,UAAUwO,SAA79I,SAAqBhF,EAAEO,GAAGA,EAAEqD,EAAEhN,KAAKgN,EAAE,IAAI1D,EAAE6B,KAAKC,MAAMhC,EAAEpJ,KAAKqL,IAAI,GAAG/B,GAAGtJ,KAAK4M,EAAGjD,EAAEiD,EAAE,MAAlB,CAA2B,IAAItC,EAAElB,EAAEpJ,KAAKqL,GAAO9B,EAAEvJ,KAAKqL,GAAGf,EAAMjB,GAAG,GAAGiB,GAAG,EAAEX,EAAE,GAAG3J,KAAKsJ,IAAIgB,EAAE,IAAI,IAAId,EAAEF,EAAE,EAAEE,EAAExJ,KAAK4M,IAAIpD,EAAGG,EAAEH,EAAEF,EAAE,KAAKtJ,KAAKwJ,GAAGH,IAAIE,EAAEI,EAAEH,EAAEF,GAAGtJ,KAAKwJ,IAAIc,EAAKA,EAAE,IAAGX,EAAE3J,KAAK4M,EAAEtD,EAAE,KAAKtJ,KAAKgN,EAAE3D,IAAIE,GAAEI,EAAEiD,EAAE5M,KAAK4M,EAAEtD,EAAEK,EAAEoE,UAA4tItD,EAAW7K,UAAUiO,MAAzuI,SAAkBlE,EAAEN,GAAsC,IAAnC,IAAIC,EAAE,EAAEF,EAAE,EAAEkB,EAAEa,KAAKkD,IAAI1E,EAAEiD,EAAE5M,KAAK4M,GAAStD,EAAEgB,GAAGlB,GAAGpJ,KAAKsJ,GAAGK,EAAEL,GAAGD,EAAEC,KAAKF,EAAEpJ,KAAKsL,GAAGlC,IAAIpJ,KAAKqL,GAAG,GAAG1B,EAAEiD,EAAE5M,KAAK4M,EAAE,CAAQ,IAAPxD,GAAGO,EAAEqD,EAAQ1D,EAAEtJ,KAAK4M,GAAGxD,GAAGpJ,KAAKsJ,GAAGD,EAAEC,KAAKF,EAAEpJ,KAAKsL,GAAGlC,IAAIpJ,KAAKqL,GAAGjC,GAAGpJ,KAAKgN,MAAM,CAAW,IAAV5D,GAAGpJ,KAAKgN,EAAQ1D,EAAEK,EAAEiD,GAAGxD,GAAGO,EAAEL,GAAGD,EAAEC,KAAKF,EAAEpJ,KAAKsL,GAAGlC,IAAIpJ,KAAKqL,GAAGjC,GAAGO,EAAEqD,EAAE3D,EAAE2D,EAAG5D,EAAE,GAAI,EAAE,EAAKA,GAAG,EAAGC,EAAEC,KAAKtJ,KAAKuL,GAAGnC,EAAUA,EAAE,IAAGC,EAAEC,KAAKF,GAAGC,EAAEuD,EAAEtD,EAAED,EAAE0E,SAA85HtD,EAAW7K,UAAU2N,WAA36H,SAAuB/D,EAAEF,GAAG,IAAIgB,EAAEtK,KAAK0N,MAAMrE,EAAEG,EAAEkE,MAAU/D,EAAEW,EAAEsC,EAAY,IAAVtD,EAAEsD,EAAEjD,EAAEN,EAAEuD,IAAUjD,GAAG,GAAGL,EAAEK,GAAG,EAAE,IAAIA,EAAE,EAAEA,EAAEN,EAAEuD,IAAIjD,EAAGL,EAAEK,EAAEW,EAAEsC,GAAGtC,EAAES,GAAG,EAAE1B,EAAEM,GAAGL,EAAEK,EAAE,EAAEW,EAAEsC,GAAGtD,EAAE0D,EAAE,EAAE1D,EAAEyE,QAAW/N,KAAKgN,GAAGxD,EAAEwD,GAAGvC,EAAWmD,KAAKC,MAAMvE,EAAEA,IAAyvHmB,EAAW7K,UAAU6N,SAA1wH,SAAqB9D,GAAoC,IAAjC,IAAIJ,EAAEvJ,KAAK0N,MAAUpD,EAAEX,EAAEiD,EAAE,EAAErD,EAAEqD,IAAUtC,GAAG,GAAGX,EAAEW,GAAG,EAAE,IAAIA,EAAE,EAAEA,EAAEf,EAAEqD,EAAE,IAAItC,EAAE,CAAC,IAAIhB,EAAEC,EAAEwB,GAAGT,EAAEf,EAAEe,GAAGX,EAAE,EAAEW,EAAE,EAAE,IAAOX,EAAEW,EAAEf,EAAEqD,IAAIrD,EAAEwB,GAAGT,EAAE,EAAE,EAAEf,EAAEe,GAAGX,EAAE,EAAEW,EAAE,EAAEhB,EAAEC,EAAEqD,EAAEtC,EAAE,KAAKf,EAAEgC,KAAI5B,EAAEW,EAAEf,EAAEqD,IAAIrD,EAAEgC,GAAG5B,EAAEW,EAAEf,EAAEqD,EAAE,GAAG,GAAMjD,EAAEiD,EAAE,IAAGjD,EAAEA,EAAEiD,EAAE,IAAIrD,EAAEwB,GAAGT,EAAEf,EAAEe,GAAGX,EAAE,EAAEW,EAAE,EAAE,IAAGX,EAAEqD,EAAE,EAAErD,EAAEoE,SAAshHtD,EAAW7K,UAAUyN,SAAniH,SAAqBvK,EAAE4G,EAAEN,GAAG,IAAIkF,EAAExL,EAAE4K,MAAM,KAAGY,EAAE1B,GAAG,GAAR,CAAkB,IAAIzC,EAAEnK,KAAK0N,MAAM,GAAGvD,EAAEyC,EAAE0B,EAAE1B,EAAuD,OAA9C,MAAHlD,GAASA,EAAEwC,QAAQ,QAAS,MAAH9C,GAASpJ,KAAK8N,OAAO1E,IAAgB,MAAHA,IAASA,EAAEwB,KAAM,IAAIjB,EAAEiB,IAAMrB,EAAEvJ,KAAKgN,EAAE/C,EAAEnH,EAAEkK,EAAMuB,EAAEvO,KAAKqL,GAAGc,EAAMmC,EAAEA,EAAE1B,EAAE,IAAO2B,EAAE,GAAGD,EAAEH,SAASI,EAAE5E,GAAGQ,EAAEgE,SAASI,EAAEnF,KAAQkF,EAAER,OAAOnE,GAAGQ,EAAE2D,OAAO1E,IAAG,IAAI8B,EAAEvB,EAAEiD,EAAMtC,EAAEX,EAAEuB,EAAE,GAAG,GAAM,GAAHZ,EAAH,CAAgB,IAAI/H,EAAE+H,GAAG,GAAGtK,KAAK0L,KAAMR,EAAE,EAAGvB,EAAEuB,EAAE,IAAIlL,KAAK2L,GAAG,GAAO6C,EAAExO,KAAKwL,GAAGjJ,EAAEkM,GAAG,GAAGzO,KAAK0L,IAAInJ,EAAEmM,EAAE,GAAG1O,KAAK2L,GAAOgD,EAAEvF,EAAEwD,EAAEI,EAAE2B,EAAEzD,EAAE7B,EAAM,MAAHK,EAASkB,IAAMlB,EAA4G,IAA1GC,EAAEgE,UAAUX,EAAE3D,GAAMD,EAAE6D,UAAU5D,IAAI,IAAGD,EAAEA,EAAEwD,KAAK,EAAExD,EAAEyE,MAAMxE,EAAED,IAAGqB,EAAWmE,IAAIjB,UAAUzC,EAAE7B,GAAGA,EAAEwE,MAAMlE,EAAEA,GAASA,EAAEiD,EAAE1B,GAAGvB,EAAEA,EAAEiD,KAAK,EAAE,OAAQI,GAAG,GAAE,CAAC,IAAIxD,EAAGJ,IAAIuF,IAAIrE,EAAGtK,KAAKsL,GAAGH,KAAKC,MAAMhC,EAAEuF,GAAGH,GAAGpF,EAAEuF,EAAE,GAAGD,GAAGD,GAAG,IAAIrF,EAAEuF,IAAIhF,EAAEoB,GAAG,EAAEvB,EAAEJ,EAAE4D,EAAE,EAAE9B,IAAI1B,EAAiC,IAA9BG,EAAEgE,UAAUX,EAAE3D,GAAGD,EAAEyE,MAAMxE,EAAED,GAASA,EAAEuF,KAAKnF,GAAGJ,EAAEyE,MAAMxE,EAAED,GAAW,MAAHM,IAASN,EAAE4E,UAAU9C,EAAExB,GAAMH,GAAGU,GAAGQ,EAAWmD,KAAKC,MAAMnE,EAAEA,IAAIN,EAAEwD,EAAE1B,EAAE9B,EAAE2E,QAAWQ,EAAE,GAAGnF,EAAEgF,SAASG,EAAEnF,GAAMG,EAAE,GAAGkB,EAAWmD,KAAKC,MAAMzE,EAAEA,MAAyrFqB,EAAW7K,UAAU2M,SAA3nE,WAAuB,GAAGvM,KAAK4M,EAAE,EAAG,OAAO,EAAE,IAAIrD,EAAEvJ,KAAK,GAAG,GAAU,IAAJ,EAAFuJ,GAAS,OAAO,EAAE,IAAIe,EAAI,EAAFf,EAAsH,OAA9Be,GAAtCA,GAAxBA,GAAtBA,EAAGA,GAAG,GAAK,GAAFf,GAAMe,GAAI,KAAS,GAAK,IAAFf,GAAOe,GAAI,MAAU,IAAO,MAAFf,GAASe,EAAG,QAAS,QAAY,EAAEf,EAAEe,EAAEtK,KAAKuL,IAAKvL,KAAKuL,IAAY,EAAGvL,KAAKuL,GAAGjB,GAAGA,GAA46DG,EAAW7K,UAAUiP,OAAx8B,WAAqB,OAAuC,IAA/B7O,KAAK4M,EAAE,EAAY,EAAR5M,KAAK,GAAMA,KAAKgN,IAAi6BvC,EAAW7K,UAAUkP,IAAh7B,SAAgBpF,EAAED,GAAG,GAAGC,EAAE,YAAYA,EAAE,EAAG,OAAOe,EAAWmE,IAAI,IAAIvF,EAAEuB,IAAMrB,EAAEqB,IAAMjB,EAAEF,EAAEsD,QAAQ/M,MAAMwJ,EAAE2C,EAAMzC,GAAG,EAAc,IAAZC,EAAEmE,OAAOzE,KAAWG,GAAG,GAAgB,GAAbC,EAAE+D,MAAMnE,EAAEE,IAAOG,EAAG,GAAGF,GAAI,EAAGC,EAAE6D,MAAM/D,EAAEI,EAAEN,OAAO,CAAC,IAAIiB,EAAEjB,EAAEA,EAAEE,EAAEA,EAAEe,EAAG,OAAOb,EAAE0D,OAAO9D,IAA0tBoB,EAAW7K,UAAUmD,SAA7zM,SAAoByG,GAAG,GAAGxJ,KAAKgN,EAAE,EAAG,MAAM,IAAIhN,KAAK+O,SAAShM,SAASyG,GAAG,IAAIF,EAAE,GAAM,IAAHE,EAAOF,EAAE,OAAO,GAAM,GAAHE,EAAMF,EAAE,OAAO,GAAM,GAAHE,EAAMF,EAAE,OAAO,GAAM,IAAHE,EAAOF,EAAE,MAAM,CAAC,GAAM,GAAHE,EAAe,OAAOxJ,KAAKgP,QAAQxF,GAA7BF,EAAE,EAAkC,IAAeW,EAAXb,GAAG,GAAGE,GAAG,EAAIC,GAAE,EAAMG,EAAE,GAAGL,EAAErJ,KAAK4M,EAAMnD,EAAEzJ,KAAKqL,GAAIhC,EAAErJ,KAAKqL,GAAI/B,EAAE,GAAGD,KAAI,EAAwD,IAAlDI,EAAEzJ,KAAKqL,KAAKpB,EAAEjK,KAAKqJ,IAAII,GAAG,IAAGF,GAAE,EAAKG,EAAEqC,EAAS9B,IAASZ,GAAG,GAAMI,EAAEH,GAAGW,GAAGjK,KAAKqJ,IAAK,GAAGI,GAAG,IAAMH,EAAEG,EAAGQ,GAAGjK,OAAOqJ,KAAKI,GAAGzJ,KAAKqL,GAAG/B,KAAQW,EAAGjK,KAAKqJ,KAAKI,GAAGH,GAAIF,EAAKK,GAAG,IAAGA,GAAGzJ,KAAKqL,KAAKhC,IAAMY,EAAE,IAAGV,GAAE,GAAQA,IAAGG,GAAGqC,EAAS9B,IAAK,OAAOV,EAAEG,EAAE,KAAs1Le,EAAW7K,UAAUmP,OAAv2L,WAAoB,IAAIxF,EAAEqB,IAAoC,OAA9BH,EAAWmD,KAAKC,MAAM7N,KAAKuJ,GAAUA,GAAkzLkB,EAAW7K,UAAU8N,IAAr0L,WAAiB,OAAO1N,KAAKgN,EAAE,EAAGhN,KAAK+O,SAAS/O,MAA+xLyK,EAAW7K,UAAUqN,UAA/yL,SAAqB3C,GAAG,IAAIX,EAAE3J,KAAKgN,EAAE1C,EAAE0C,EAAE,GAAM,GAAHrD,EAAM,OAAOA,EAAE,IAAIH,EAAExJ,KAAK4M,EAAU,GAAM,IAAdjD,EAAEH,EAAEc,EAAEsC,GAAW,OAAO5M,KAAKgN,EAAE,GAAIrD,EAAEA,EAAE,OAAQH,GAAG,GAAG,GAAqB,IAAjBG,EAAE3J,KAAKwJ,GAAGc,EAAEd,IAAQ,OAAOG,EAAG,OAAO,GAA+pLc,EAAW7K,UAAUqP,UAA7gL,WAAuB,OAAGjP,KAAK4M,GAAG,EAAU,EAAS5M,KAAKqL,IAAIrL,KAAK4M,EAAE,GAAGT,EAAMnM,KAAKA,KAAK4M,EAAE,GAAI5M,KAAKgN,EAAEhN,KAAKsL,KAAy7Kb,EAAW7K,UAAUsN,IAA7/F,SAAe5C,GAAG,IAAId,EAAEoB,IAA8F,OAAxF5K,KAAK0N,MAAML,SAAS/C,EAAE,KAAKd,GAAMxJ,KAAKgN,EAAE,GAAGxD,EAAEyD,UAAUxC,EAAWmD,MAAM,GAAGtD,EAAEuD,MAAMrE,EAAEA,GAAUA,GAA04FiB,EAAW7K,UAAUsP,UAA98B,SAAqB5E,EAAEf,GAAG,IAAIC,EAAkE,OAA1CA,EAAnBc,EAAE,KAAKf,EAAEsF,SAAY,IAAIzC,EAAQ7C,GAAU,IAAI8C,EAAW9C,GAAUvJ,KAAK8O,IAAIxE,EAAEd,IAAk3BiB,EAAWmD,KAAK3B,EAAI,GAAGxB,EAAWmE,IAAI3C,EAAI,GAG7tRY,EAAQjN,UAAUuP,KAApa,SAAkB3F,GAAG,IAAID,EAAEI,EAAEW,EAAE,IAAIf,EAAE,EAAEA,EAAE,MAAMA,EAAGvJ,KAAK8M,EAAEvD,GAAGA,EAAM,IAAJI,EAAE,EAAMJ,EAAE,EAAEA,EAAE,MAAMA,EAAGI,EAAEA,EAAE3J,KAAK8M,EAAEvD,GAAGC,EAAED,EAAEC,EAAE/J,QAAQ,IAAI6K,EAAEtK,KAAK8M,EAAEvD,GAAGvJ,KAAK8M,EAAEvD,GAAGvJ,KAAK8M,EAAEnD,GAAG3J,KAAK8M,EAAEnD,GAAGW,EAAEtK,KAAKT,EAAE,EAAES,KAAKyJ,EAAE,GAAiQoD,EAAQjN,UAAU6D,KAAjR,WAAoB,IAAI8F,EAAuH,OAArHvJ,KAAKT,EAAES,KAAKT,EAAE,EAAE,IAAIS,KAAKyJ,EAAEzJ,KAAKyJ,EAAEzJ,KAAK8M,EAAE9M,KAAKT,GAAG,IAAIgK,EAAEvJ,KAAK8M,EAAE9M,KAAKT,GAAGS,KAAK8M,EAAE9M,KAAKT,GAAGS,KAAK8M,EAAE9M,KAAKyJ,GAAGzJ,KAAK8M,EAAE9M,KAAKyJ,GAAGF,EAASvJ,KAAK8M,EAAEvD,EAAEvJ,KAAK8M,EAAE9M,KAAKT,GAAG,MAAiH,IAGpgB6P,EAAcC,EAAaC,EAAgN,SAASC,IAAhN,IAAsBhG,EAAAA,GAAuN,IAAIiG,MAAOC,UAA/NJ,EAASC,MAAe,IAAF/F,EAAM8F,EAASC,MAAc/F,GAAG,EAAG,IAAI8F,EAASC,MAAc/F,GAAG,GAAI,IAAI8F,EAASC,MAAc/F,GAAG,GAAI,IAAO+F,GAHiV,MAG5TA,GAH4T,KAG3O,GAAa,MAAVD,EAAe,CAACA,EAAS,GAAGC,EAAS,EAAQ,IAAI,GAAGxN,OAAO4N,QAAQ5N,OAAO4N,OAAOC,gBAAgB,CAAC,IAAIC,EAAG,IAAI3G,WAAW,IAAsC,IAAlCnH,OAAO4N,OAAOC,gBAAgBC,GAAQhD,EAAE,EAAEA,EAAE,KAAKA,EAAGyC,EAASC,KAAYM,EAAGhD,QAAS,GAAG9K,OAAO+N,UAAU/N,OAAO+N,SAASF,gBAAgB,CAAKC,EAAG,IAAI3G,WAAW,IAAwC,IAApCnH,OAAO+N,SAASF,gBAAgBC,GAAQhD,EAAE,EAAEA,EAAE,KAAKA,EAAGyC,EAASC,KAAYM,EAAGhD,QAAS,GAAG9K,OAAO4N,QAAQ5N,OAAO4N,OAAOI,OAAO,CAAC,IAAIrB,EAAE3M,OAAO4N,OAAOI,OAAO,IAAI,IAAIlD,EAAE,EAAEA,EAAE6B,EAAEhP,SAASmN,EAAGyC,EAASC,KAA4B,IAAhBb,EAAEvE,WAAW0C,IAAW,MAAMtD,IAAI,KAAMgG,EAH3S,KAG+T1C,EAAEzB,KAAKC,MAAM,MAAMD,KAAK2E,UAAUT,EAASC,KAAY1C,IAAI,EAAEyC,EAASC,KAAc,IAAF1C,EAAM0C,EAAS,EAAEC,IAAgB,SAASQ,IAAe,GAAc,MAAXX,EAAgB,CAAoE,IAAnEG,KAAgBH,EAHxkB,IAAIvC,GAGwmBsC,KAAKE,GAAcC,EAAS,EAAEA,EAASD,EAAS5P,SAAS6P,EAAUD,EAASC,GAAU,EAAEA,EAAS,EAAE,OAAOF,EAAU3L,OAAoF,SAASuM,KAG/4B,SAASC,IAASjQ,KAAK8C,EAAE,KAAK9C,KAAKsJ,EAAE,EAAEtJ,KAAK2J,EAAE,KAAK3J,KAAKkL,EAAE,KAAKlL,KAAKgL,EAAE,KAAKhL,KAAKkQ,KAAK,KAAKlQ,KAAKmQ,KAAK,KAAKnQ,KAAKoQ,MAAM,KAGjd,SAASpF,EAAEV,GAAG,MAAMA,EANwuC0F,EAAapQ,UAAUyQ,UAA7H,SAAuB/F,GAAG,IAAIf,EAAE,IAAIA,EAAE,EAAEA,EAAEe,EAAE7K,SAAS8J,EAAGe,EAAEf,GAAGwG,KAG7PE,EAAOrQ,UAAU0Q,SAApX,SAAqB/G,GAAG,OAAOA,EAAE2F,UAAUlP,KAAKsJ,EAAEtJ,KAAK8C,IAAkVmN,EAAOrQ,UAAU2Q,UAAvjB,SAAsBjG,EAAEf,GAAS,MAAHe,GAAY,MAAHf,GAASe,EAAE7K,OAAO,GAAG8J,EAAE9J,OAAO,GAAGO,KAAK8C,EAAhjB,SAAqBwH,EAAEf,GAAG,OAAO,IAAIkB,EAAWH,EAAEf,GAAggBiH,CAAYlG,EAAE,IAAItK,KAAKsJ,EAAEmH,SAASlH,EAAE,KAASmH,MAAM,2BAA4cT,EAAOrQ,UAAU+Q,QAAxY,SAAoBrG,GAAG,IAAIf,EAAhqB,SAAmBC,EAAEJ,GAAG,GAAGA,EAAEI,EAAE/J,OAAO,GAAsC,OAAlCiR,MAAM,4BAAmC,KAAwC,IAAnC,IAAIrH,EAAE,IAAIhH,MAAYiH,EAAEE,EAAE/J,OAAO,EAAQ6J,GAAG,GAAGF,EAAE,GAAGC,IAAID,GAAGI,EAAEF,KAAKD,IAAID,GAAG,EAA6C,IAA3C,IAAIO,EAAE,IAAIqG,EAAmBzG,EAAE,IAAIlH,MAAc+G,EAAE,GAAE,CAAQ,IAAPG,EAAE,GAAG,EAAc,GAANA,EAAE,IAAOI,EAAE0G,UAAU9G,GAAGF,IAAID,GAAGG,EAAE,GAAqB,OAAlBF,IAAID,GAAG,EAAEC,IAAID,GAAG,EAAS,IAAIqB,EAAWpB,GAAgXuH,CAAUtG,EAAGtK,KAAK8C,EAAEmM,YAAY,GAAI,GAAG,GAAM,MAAH1F,EAAS,OAAO,KAAK,IAAID,EAAEtJ,KAAKsQ,SAAS/G,GAAG,GAAM,MAAHD,EAAS,OAAO,KAAK,IAAIK,EAAEL,EAAEvG,SAAS,IAAI,OAAiB,IAAJ,EAAT4G,EAAElK,QAAqBkK,EAAa,IAAIA,GAA+MsG,EAAOrQ,UAAUiR,YAA7N,SAAuBtH,GAAG,IAAIe,EAAEtK,KAAK2Q,QAAQpH,GAAG,OAAGe,EAZ31B,SAAiBX,GAAG,IAAIW,EAAMhB,EAAMC,EAAE,GAAG,IAAIe,EAAE,EAAEA,EAAE,GAAGX,EAAElK,OAAO6K,GAAG,EAAGhB,EAAEmH,SAAS9G,EAAEmH,UAAUxG,EAAEA,EAAE,GAAG,IAAIf,GAAGiB,EAAOH,OAAOf,GAAG,GAAGkB,EAAOH,OAAS,GAAFf,GAA0L,IAAjLgB,EAAE,GAAGX,EAAElK,QAAQ6J,EAAEmH,SAAS9G,EAAEmH,UAAUxG,EAAEA,EAAE,GAAG,IAAIf,GAAGiB,EAAOH,OAAOf,GAAG,IAAWgB,EAAE,GAAGX,EAAElK,SAAQ6J,EAAEmH,SAAS9G,EAAEmH,UAAUxG,EAAEA,EAAE,GAAG,IAAIf,GAAGiB,EAAOH,OAAOf,GAAG,GAAGkB,EAAOH,QAAU,EAAFf,IAAM,KAAoB,EAATC,EAAE9J,QAAU,GAAG8J,GAAhW,IAA8W,OAAOA,EAYofwH,CAAQzG,GAAe,MAG17B,IAGzBf,EAAOe,EAGb0G,EANmCpE,OAAE,EAAO+B,GAAE,EAAOsC,EAAK,CAACC,OAAO,GAAGC,KAAK,GAAGC,YAAY,GAAGC,KAAK,GAAGC,KAAK,GAAGC,MAAM,GAAGC,UAAU,CAACC,QAAQ,SAASnH,GAAGtK,KAAK+C,SAAS,WAAW,MAAM,YAAY/C,KAAK0R,SAAS1R,KAAK0R,QAAQpH,GAAGqH,QAAQ,SAASrH,GAAGtK,KAAK+C,SAAS,WAAW,MAAM,YAAY/C,KAAK0R,SAAS1R,KAAK0R,QAAQpH,GAAGsH,IAAI,SAAStH,GAAGtK,KAAK+C,SAAS,WAAW,MAAM,QAAQ/C,KAAK0R,SAAS1R,KAAK0R,QAAQpH,GAAGuH,SAAS,SAASvH,GAAGtK,KAAK+C,SAAS,WAAW,MAAM,cAAc/C,KAAK0R,SAAS1R,KAAK0R,QAAQpH,KAA0rC,SAASwH,EAAEC,EAAGC,EAAGC,GAAG,IAAID,EAAGvS,QAAQuL,EAAE,IAAIiG,EAAKO,UAAUG,QAAQ,2BAA2B,IAAIO,EAAEH,EAAGzH,EAAE2H,GAAGE,EAAEH,EAAG,GAAGE,EAAE,GAAGE,EAAEJ,EAAGC,EAAE,EAAE,GAAGC,EAAE,GAAGG,EAAEL,EAAG,GAAGE,EAAE,GAAGF,EAAGA,EAAGC,EAAE,EAAE,GAAGC,EAAE,GAAG,IAAII,EAAExF,EAAEyF,EAAiBC,EAAfC,EAAEP,EAAEzS,OAAO,EAAE,EAAIiT,EAAE,EAAEC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAaZ,GAAVO,EAAEP,EAAG5H,EAAE8H,IAAQ,GAAG,IAAIW,EAAEN,EAAE,GAAG/P,EAAE+P,EAAE,GAAG7I,EAAE6I,EAAE,GAAG/S,EAAE+S,EAAE,GAAG,IAAIE,EAAE,EAAEA,EAAEC,EAAED,IAAKF,EAAEP,EAAGI,IAAI,IAAIS,EAAER,GAAG,GAAG,KAAK7P,EAAE8P,GAAG,EAAE,KAAK5I,EAAK,IAAHuI,GAAQE,EAAEQ,GAAG5F,EAAEiF,EAAGK,IAAI,IAAIQ,EAAEP,GAAG,GAAG,KAAK9P,EAAEyP,GAAI,EAAE,KAAKvI,EAAI,IAAF0I,GAAOD,EAAEQ,EAAE,GAAGH,EAAER,EAAGM,IAAI,IAAIO,EAAEZ,GAAI,GAAG,KAAKzP,EAAE4P,GAAG,EAAE,KAAK1I,EAAI,IAAF2I,GAAOF,EAAEQ,EAAE,GAAGV,EAAGD,EAAGC,IAAK,IAAIY,EAAET,GAAG,GAAG,KAAK5P,EAAE6P,GAAG,EAAE,KAAK3I,EAAI,IAAF4I,GAAOH,EAAEQ,EAAE,GAAGA,GAAG,EAAEP,EAAEG,EAAEF,EAAEtF,EAAEuF,EAAEE,EAAE,IAAIC,EAAE,EAAE,EAAEA,EAAEA,IAAKG,EAAEV,EAAE,GAAGO,EAAEA,GAAGjT,EAAE4S,IAAI,KAAK,GAAG5S,EAAE6S,GAAG,GAAG,MAAM,GAAG7S,EAAE8S,GAAG,EAAE,MAAM,EAAE9S,EAAK,IAAHyS,GAAQE,EAAEQ,KAAKJ,EAAEH,EAAEA,EAAEC,EAAEA,EAAEC,EAAEA,EAAEL,EAAGA,EAAGM,EAAE,OAAOK,EAAg/H,SAASlE,EAAE4D,EAAEC,GAAG,IAAIC,EAAEzF,EAAE0F,EAAEC,EAAEH,EAAEtP,MAAM,GAAG0P,EAAEL,EAAEpH,EAAE2H,EAAEP,EAAE/H,EAAEoE,EAAEgE,EAAE,GAAGC,EAAED,EAAE,GAAGnQ,EAAEmQ,EAAE,GAAGpE,EAAEoE,EAAE,GAAGjJ,EAAEiJ,EAAE,GAAGP,EAAEO,EAAE,GAAGnT,EAAEmT,EAAE,GAAGN,EAAEM,EAAE,GAAG,IAAIH,EAAE,EAAE,GAAGA,EAAEA,IAAK,GAAGA,EAAEzF,EAAE2F,EAAEF,IAAIzF,EAAE2F,EAAEF,EAAE,EAAE,IAAIC,EAAEC,EAAEF,EAAE,GAAG,IAAIzF,EAAE2F,EAAI,GAAFF,IAAOzF,IAAI,EAAEA,IAAI,GAAGA,IAAI,EAAEA,GAAG,GAAGA,GAAG,KAAK0F,IAAI,GAAGA,IAAI,GAAGA,IAAI,GAAGA,GAAG,GAAGA,GAAG,IAAIC,EAAI,GAAFF,GAAME,EAAEF,EAAE,EAAE,IAAI,GAAGzF,EAAEA,EAAEsF,GAAG3I,IAAI,EAAEA,IAAI,GAAGA,IAAI,GAAGA,GAAG,GAAGA,GAAG,GAAGA,GAAG,IAAIlK,EAAEkK,GAAG0I,EAAE5S,IAAIqT,EAAEL,GAAGH,EAAE7S,EAAEA,EAAE4S,EAAEA,EAAE1I,EAAEA,EAAE6E,EAAExB,EAAE,EAAEwB,EAAE/L,EAAEA,EAAEoQ,EAAMjE,EAAE5B,IAAN6F,EAAEjE,GAASnM,EAAE+L,GAAGqE,EAAEpQ,KAAKoQ,IAAI,EAAEA,IAAI,GAAGA,IAAI,GAAGA,GAAG,GAAGA,GAAG,GAAGA,GAAG,IAAI,EAAED,EAAE,GAAGA,EAAE,GAAGhE,EAAE,EAAEgE,EAAE,GAAGA,EAAE,GAAGC,EAAE,EAAED,EAAE,GAAGA,EAAE,GAAGnQ,EAAE,EAAEmQ,EAAE,GAAGA,EAAE,GAAGpE,EAAE,EAAEoE,EAAE,GAAGA,EAAE,GAAGjJ,EAAE,EAAEiJ,EAAE,GAAGA,EAAE,GAAGP,EAAE,EAAEO,EAAE,GAAGA,EAAE,GAAGnT,EAAE,EAAEmT,EAAE,GAAGA,EAAE,GAAGN,EAAE,EAA6hV,SAASS,EAAEzJ,EAAEC,GAAG,IAAII,EAAElK,EAAE0R,EAAKnB,OAAOxB,EAAElF,GAAGM,EAAE,GAAG,IAAID,KAAKlK,EAAGA,EAAEM,eAAe4J,IAAIC,EAAEoJ,KAAKvT,EAAEkK,IAAI,IAAIA,EAAE,EAAEA,EAAEC,EAAEjK,OAAOgK,IAAKC,EAAED,GAAGJ,GAAI,SAAS0J,EAAEzI,GAAG,qBAAqBxI,QAAQA,OAAOkR,aAAa,oBAAoBlR,OAAOkR,YAAYC,IAAIhC,EAAKnB,OAAOoD,WAAWpR,OAAOkR,YAAYC,MAAM3I,EAAE,YAAY2G,EAAKnB,OAAOoD,YAAW,IAAK1D,MAAM2D,UAAU7I,EAAE,YAAY,SAASkE,EAAElE,GAAGA,EAAEA,EAAE8I,EAAE9I,GAAG+I,OAAOD,EAAE9I,IAAIA,EAAEkE,EAAE,IAAIyC,EAAKC,OAAOoC,IAAIhJ,EAAEA,GAAG,SAAS8I,EAAEzJ,GAAG,IAAI,IAAIH,EAAE,EAAE,EAAEA,IAAKG,EAAEN,EAAEG,GAAGG,EAAEN,EAAEG,GAAG,EAAE,GAAEG,EAAEN,EAAEG,IAAIA,KAAM,OAAOG,EAAE6E,EAAEmC,QAAQhH,EAAEN,GAAG,SAASkK,EAAE5J,EAAEH,GAAG,OAAO,WAAWA,EAAEzJ,MAAM4J,EAAEnK,YAAj1iByH,EAAOC,UAAUD,EAAOC,QAAQ+J,GAAqEA,EAAKC,OAAOoC,IAAI,SAAS7J,GAAGzJ,KAAKmK,EAAE,GAAG,GAAG,IAAInK,KAAKuT,IAAI,IAAIhU,EAAE2L,EAAE3I,EAAEO,EAAEsH,EAAEpK,KAAKmK,EAAE,GAAG,GAAGF,EAAEjK,KAAKmK,EAAE,GAAkBA,EAAE,EAA0G,IAAxG,KAAnB5K,EAAEkK,EAAEhK,SAAuB,IAAIF,GAAG,IAAIA,GAAIyL,EAAE,IAAIiG,EAAKO,UAAUG,QAAQ,yBAAyB3R,KAAKsK,EAAE,CAAC/H,EAAEkH,EAAEzG,MAAM,GAAGF,EAAE,IAAQ2G,EAAElK,EAAEkK,EAAE,EAAElK,EAAE,GAAGkK,IAAKyB,EAAE3I,EAAEkH,EAAE,IAAM,IAAIA,EAAElK,GAAG,IAAIA,GAAG,IAAIkK,EAAElK,KAAG2L,EAAEd,EAAEc,IAAI,KAAK,GAAGd,EAAEc,GAAG,GAAG,MAAM,GAAGd,EAAEc,GAAG,EAAE,MAAM,EAAEd,EAAI,IAAFc,GAAO,IAAIzB,EAAElK,IAAI2L,EAAEA,GAAG,EAAEA,IAAI,GAAGf,GAAG,GAAGA,EAAEA,GAAG,EAAE,KAAKA,GAAG,KAAI5H,EAAEkH,GAAGlH,EAAEkH,EAAElK,GAAG2L,EAAE,IAAI3L,EAAE,EAAEkK,EAAElK,IAAIkK,IAAKyB,EAAE3I,EAAI,EAAFhD,EAAIkK,EAAEA,EAAE,GAAG3G,EAAEvD,GAAG,GAAGkK,GAAG,EAAElK,EAAE2L,EAAEjB,EAAE,GAAGG,EAAEc,IAAI,KAAKjB,EAAE,GAAGG,EAAEc,GAAG,GAAG,MAAMjB,EAAE,GAAGG,EAAEc,GAAG,EAAE,MAAMjB,EAAE,GAAGG,EAAI,IAAFc,KAAU+F,EAAKC,OAAOoC,IAAI1T,UAAU,CAAC+Q,QAAQ,SAASrG,GAAG,OAAOwH,EAAE9R,KAAKsK,EAAE,IAAIkJ,QAAQ,SAASlJ,GAAG,OAAOwH,EAAE9R,KAAKsK,EAAE,IAAIH,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,KAAKoJ,EAAE,WAAW,IAA0CZ,EAAEjE,EAAEJ,EAAYtB,EAAEvD,EAAElH,EAAEhD,EAA5DiT,EAAExS,KAAKmK,EAAE,GAAGsI,EAAEzS,KAAKmK,EAAE,GAAGuI,EAAEF,EAAE,GAAGI,EAAEH,EAAE,GAASlE,EAAE,GAAGtD,EAAE,GAAW,IAAI0H,EAAE,EAAE,IAAIA,EAAEA,IAAK1H,GAAGsD,EAAEoE,GAAGA,GAAG,EAAE,KAAKA,GAAG,IAAIA,GAAGA,EAAE,IAAIjE,EAAEJ,EAAE,GAAGoE,EAAEhE,GAAGA,GAAG1B,GAAG,EAAEsB,EAAErD,EAAEqD,IAAI,EAAsI,IAA3G/L,GAAxBA,EAAE+L,EAAEA,GAAG,EAAEA,GAAG,EAAEA,GAAG,EAAEA,GAAG,IAAO,EAAI,IAAF/L,EAAM,GAAGmQ,EAAEhE,GAAGnM,EAAEqQ,EAAErQ,GAAGmM,EAAmBnP,EAAE,UAAnBkK,EAAE8E,EAAEoE,EAAEpE,EAAEvB,EAAEuB,EAAEG,MAAkB,MAAMiE,EAAE,IAAI3F,EAAE,SAAS0B,EAAEjF,EAAE,IAAI8E,EAAEhM,GAAG,SAASA,EAAMoQ,EAAE,EAAE,EAAEA,EAAEA,IAAKH,EAAEG,GAAGjE,GAAGjF,EAAEA,GAAG,GAAGA,IAAI,EAAEgJ,EAAEE,GAAGpQ,GAAGhD,EAAEA,GAAG,GAAGA,IAAI,EAAG,IAAIoT,EAAE,EAAE,EAAEA,EAAEA,IAAKH,EAAEG,GAAGH,EAAEG,GAAG3P,MAAM,GAAGyP,EAAEE,GAAGF,EAAEE,GAAG3P,MAAM,KAAioBiO,EAAKwC,SAAS,CAACC,SAAS,SAASpK,EAAEK,EAAEN,GAAuD,OAApDC,EAAE2H,EAAKwC,SAASf,EAAEpJ,EAAEtG,MAAM2G,EAAE,IAAI,IAAM,GAAFA,IAAO3G,MAAM,GAAUqG,IAAIuD,EAAEtD,EAAE2H,EAAKwC,SAAS1F,MAAMzE,EAAED,EAAEM,IAAIgK,QAAQ,SAAStK,EAAEC,EAAEI,GAAG,IAAIN,EAAE+B,KAAKC,OAAO9B,EAAEI,EAAE,IAAI,QAAkB,IAAVJ,EAAEI,EAAE,EAAEJ,GAAOD,EAAEC,EAAE,GAAG,IAAI,GAAGF,EAAEC,EAAEC,EAAE,GAAG,EAAE,KAAKF,EAAEC,EAAEC,EAAE,GAAG,KAAKF,IAAI,GAAGM,GAAG,GAAG2J,OAAO,SAAShK,EAAEC,GAAG,GAAG,IAAID,EAAE5J,QAAQ,IAAI6J,EAAE7J,OAAQ,OAAO4J,EAAEgK,OAAO/J,GAAG,IAAII,EAAEL,EAAEA,EAAE5J,OAAO,GAAG2J,EAAE6H,EAAKwC,SAASG,WAAWlK,GAAG,OAAO,KAAKN,EAAEC,EAAEgK,OAAO/J,GAAG2H,EAAKwC,SAASf,EAAEpJ,EAAEF,EAAI,EAAFM,EAAIL,EAAErG,MAAM,EAAEqG,EAAE5J,OAAO,KAAKwP,UAAU,SAAStF,GAAG,IAAIH,EAAEG,EAAElK,OAAO,OAAO,IAAI+J,EAAE,EAAE,IAAIA,EAAE,GAAGyH,EAAKwC,SAASG,WAAWjK,EAAEH,EAAE,KAAKuE,MAAM,SAASzE,EAAEK,GAAG,GAAG,GAAGL,EAAE7J,OAAOkK,EAAG,OAAOL,EAA+B,IAAID,GAAjCC,EAAEA,EAAEtG,MAAM,EAAEmI,KAAK0I,KAAKlK,EAAE,MAAalK,OAAgF,OAAzEkK,GAAG,GAAG,EAAEN,GAAGM,IAAIL,EAAED,EAAE,GAAG4H,EAAKwC,SAASK,QAAQnK,EAAEL,EAAED,EAAE,GAAG,YAAYM,EAAE,EAAE,IAAWL,GAAGwK,QAAQ,SAASxK,EAAEK,EAAEN,GAAG,OAAO,KAAKC,EAAEK,GAAGN,EAAI,EAAFM,EAAIA,GAAG,GAAGL,GAAG,cAAcA,GAAGsK,WAAW,SAAStJ,GAAG,OAAOa,KAAK4I,MAAMzJ,EAAE,gBAAgB,IAAI0J,MAAM,SAAS3K,EAAEC,GAAG,GAAG2H,EAAKwC,SAASxE,UAAU5F,KAAK4H,EAAKwC,SAASxE,UAAU3F,GAAI,OAAOqF,EAAE,IAAQvF,EAAJM,EAAE,EAAI,IAAIN,EAAE,EAAEA,EAAEC,EAAE5J,OAAO2J,IAAKM,GAAGL,EAAED,GAAGE,EAAEF,GAAG,OAAO,IAAIM,GAAGgJ,EAAE,SAAStJ,EAAEC,EAAEI,EAAElK,GAAG,IAAImK,EAAM,IAAJA,EAAE,EAAMnK,IAAIqN,IAAIrN,EAAE,IAAI,IAAI8J,EAAEA,GAAG,GAAI9J,EAAEuT,KAAKrJ,GAAGA,EAAE,EAAE,GAAG,IAAIJ,EAAG,OAAO9J,EAAE8T,OAAOjK,GAAG,IAAIM,EAAE,EAAEA,EAAEN,EAAE3J,OAAOiK,IAAKnK,EAAEuT,KAAKrJ,EAAEL,EAAEM,KAAKL,GAAGI,EAAEL,EAAEM,IAAI,GAAGL,EAAoH,OAAlHK,EAAEN,EAAE3J,OAAO2J,EAAEA,EAAE3J,OAAO,GAAG,EAAE2J,EAAE6H,EAAKwC,SAASG,WAAWlK,GAAGnK,EAAEuT,KAAK7B,EAAKwC,SAASK,QAAQzK,EAAED,EAAE,GAAG,GAAGC,EAAED,EAAEK,EAAElK,EAAE0U,MAAM,IAAW1U,GAAG0K,EAAE,SAASN,EAAEH,GAAG,MAAM,CAACG,EAAE,GAAGH,EAAE,GAAGG,EAAE,GAAGH,EAAE,GAAGG,EAAE,GAAGH,EAAE,GAAGG,EAAE,GAAGH,EAAE,KAAK0K,UAAU,SAAS5K,GAAG,IAAIK,EAAEN,EAAE,IAAIM,EAAE,EAAEA,EAAEL,EAAE7J,SAASkK,EAAGN,EAAEC,EAAEK,GAAGL,EAAEK,GAAGN,IAAI,GAAGA,IAAI,EAAE,OAAS,MAAFA,IAAU,EAAEA,GAAG,GAAG,OAAOC,IAAI2H,EAAKM,MAAM4C,WAAW,CAACC,SAAS,SAAShL,GAAG,IAAsC7J,EAAEmK,EAApCL,EAAE,GAAGI,EAAEwH,EAAKwC,SAASxE,UAAU7F,GAAO,IAAI7J,EAAE,EAAEA,EAAEkK,EAAE,EAAElK,IAAK,KAAO,EAAFA,KAAOmK,EAAEN,EAAE7J,EAAE,IAAI8J,GAAGgL,OAAOC,aAAa5K,IAAI,IAAIA,IAAI,EAAE,OAAO6K,mBAAmBC,OAAOnL,KAAKoL,OAAO,SAASpL,GAAGA,EAAEqL,SAASC,mBAAmBtL,IAAI,IAASK,EAALJ,EAAE,GAAKF,EAAE,EAAE,IAAIM,EAAE,EAAEA,EAAEL,EAAE5J,OAAOiK,IAAKN,EAAEA,GAAG,EAAEC,EAAEa,WAAWR,GAAG,KAAO,EAAFA,KAAOJ,EAAEwJ,KAAK1J,GAAGA,EAAE,GAAiD,OAA5C,EAAFM,GAAKJ,EAAEwJ,KAAK7B,EAAKwC,SAASK,QAAQ,GAAK,EAAFpK,GAAKN,IAAWE,IAAI2H,EAAKM,MAAMqD,IAAI,CAACR,SAAS,SAAS9K,GAAG,IAASD,EAALM,EAAE,GAAK,IAAIN,EAAE,EAAEA,EAAEC,EAAE7J,OAAO4J,IAAKM,IAAa,gBAAH,EAALL,EAAED,KAAuBtG,SAAS,IAAI8R,OAAO,GAAG,OAAOlL,EAAEkL,OAAO,EAAE5D,EAAKwC,SAASxE,UAAU3F,GAAG,IAAImL,OAAO,SAASpL,GAAG,IAAIC,EAAOF,EAALM,EAAE,GAAuD,IAAzBN,GAAzBC,EAAEA,EAAEyL,QAAQ,SAAS,KAAQrV,OAAO4J,GAAG,WAAeC,EAAE,EAAEA,EAAED,EAAE5J,OAAO6J,GAAG,EAAGI,EAAEoJ,KAAgC,EAA3BrC,SAASpH,EAAEwL,OAAOvL,EAAE,GAAG,KAAO,OAAO2H,EAAKwC,SAAS1F,MAAMrE,EAAE,EAAEN,KAAK6H,EAAKM,MAAMwD,OAAO,CAACC,EAAE,mEAAmEZ,SAAS,SAAS3K,EAAElK,EAAE2L,GAAG,IAAI3I,EAAE,GAAGO,EAAE,EAAEsH,EAAE6G,EAAKM,MAAMwD,OAAOC,EAAE/K,EAAE,EAAEE,EAAE8G,EAAKwC,SAASxE,UAAUxF,GAA8B,IAA3ByB,IAAId,EAAEA,EAAEyK,OAAO,EAAE,IAAI,MAAU3J,EAAE,EAAE,EAAE3I,EAAE9C,OAAO0K,GAAI5H,GAAG6H,EAAEC,QAAQJ,EAAER,EAAEyB,KAAKpI,KAAK,IAAI,EAAEA,GAAGmH,EAAER,EAAEyB,IAAI,EAAEpI,EAAEA,GAAG,GAAGoI,MAAMjB,IAAI,EAAEnH,GAAG,GAAG,KAAc,EAATP,EAAE9C,SAAWF,GAAIgD,GAAG,IAAI,OAAOA,GAAGkS,OAAO,SAAShL,EAAElK,GAAGkK,EAAEA,EAAEqL,QAAQ,QAAQ,IAAI,IAASvS,EAAgC4H,EAArCe,EAAE,GAAKpI,EAAE,EAAEsH,EAAE6G,EAAKM,MAAMwD,OAAOC,EAAE/K,EAAE,EAA+B,IAA3B1K,IAAI6K,EAAEA,EAAEyK,OAAO,EAAE,IAAI,MAAUtS,EAAE,EAAEA,EAAEkH,EAAEhK,OAAO8C,IAA8B,GAAzB4H,EAAEC,EAAErJ,QAAQ0I,EAAEY,OAAO9H,MAASyI,EAAE,IAAIiG,EAAKO,UAAUG,QAAQ,uBAAuB,GAAG7O,GAAGA,GAAG,GAAGoI,EAAE4H,KAAK7I,EAAEE,IAAIrH,GAAGmH,EAAEE,GAAG,GAAGrH,GAASmH,GAAGE,GAAG,IAAXrH,GAAG,GAA4D,OAA5C,GAAFA,GAAMoI,EAAE4H,KAAK7B,EAAKwC,SAASK,QAAU,GAAFhR,EAAKmH,EAAE,IAAWiB,IAAI+F,EAAKM,MAAM0D,UAAU,CAACb,SAAS,SAAS9J,GAAG,OAAO2G,EAAKM,MAAMwD,OAAOX,SAAS9J,EAAE,EAAE,IAAImK,OAAO,SAASnK,GAAG,OAAO2G,EAAKM,MAAMwD,OAAON,OAAOnK,EAAE,KAAK2G,EAAKE,KAAK+D,OAAO,SAAS5K,GAAGtK,KAAKsK,EAAE,IAAItK,KAAKuT,IAAIjJ,GAAGtK,KAAKiL,EAAEX,EAAEW,EAAEjI,MAAM,GAAGhD,KAAKuC,EAAE+H,EAAE/H,EAAES,MAAM,GAAGhD,KAAK0J,EAAEY,EAAEZ,GAAG1J,KAAKmV,SAASlE,EAAKE,KAAK+D,OAAO/D,KAAK,SAAS7G,GAAG,OAAM,IAAK2G,EAAKE,KAAK+D,QAAQpP,OAAOwE,GAAG8K,YAAYnE,EAAKE,KAAK+D,OAAOtV,UAAU,CAACyV,UAAU,IAAIF,MAAM,WAAqD,OAA1CnV,KAAKiL,EAAEjL,KAAK2S,EAAE3P,MAAM,GAAGhD,KAAKuC,EAAE,GAAGvC,KAAK0J,EAAE,EAAS1J,MAAM8F,OAAO,SAASwD,GAAG,kBAAkBA,IAAIA,EAAE2H,EAAKM,MAAM4C,WAAWM,OAAOnL,IAAI,IAAIK,EAAEN,EAAErJ,KAAKuC,EAAE0O,EAAKwC,SAASJ,OAAOrT,KAAKuC,EAAE+G,GAAkD,IAA/CK,EAAE3J,KAAK0J,EAAEJ,EAAEtJ,KAAK0J,EAAEC,EAAEsH,EAAKwC,SAASxE,UAAU3F,GAAOK,EAAE,IAAIA,GAAG,IAAIA,GAAGL,EAAEK,GAAG,IAAK8E,EAAEzO,KAAKqJ,EAAEiM,OAAO,EAAE,KAAK,OAAOtV,MAAMoV,SAAS,WAAW,IAAI9L,EAAEK,EAAE3J,KAAKuC,EAAE8G,EAAErJ,KAAKiL,EAAyD,IAAI3B,GAA3DK,EAAEsH,EAAKwC,SAASJ,OAAO1J,EAAE,CAACsH,EAAKwC,SAASK,QAAQ,EAAE,MAAarU,OAAO,EAAI,GAAF6J,EAAKA,IAAKK,EAAEmJ,KAAK,GAAyC,IAAtCnJ,EAAEmJ,KAAK3H,KAAKC,MAAMpL,KAAK0J,EAAE,aAAiBC,EAAEmJ,KAAY,EAAP9S,KAAK0J,GAAKC,EAAElK,QAASgP,EAAEzO,KAAK2J,EAAE2L,OAAO,EAAE,KAAkB,OAAbtV,KAAKmV,QAAe9L,GAAGsJ,EAAE,GAAGrI,EAAE,GAAGiJ,EAAE,WAAW,SAASlK,EAAEiB,GAAG,OAAO,YAAYA,EAAEa,KAAKC,MAAMd,IAAI,EAAE,IAAYlB,EAARE,EAAE,EAAEI,EAAE,EAAIL,EAAE,KAAK,GAAGC,EAAEI,IAAI,CAAC,IAAIN,EAAE,EAAEA,EAAEA,GAAGM,EAAEN,IAAK,GAAG,IAAIM,EAAEN,EAAG,SAASC,EAAG,EAAEC,IAAItJ,KAAK2S,EAAErJ,GAAGD,EAAE8B,KAAKM,IAAI/B,EAAE,MAAO1J,KAAKsK,EAAEhB,GAAGD,EAAE8B,KAAKM,IAAI/B,EAAE,EAAE,IAAIJ,OAAuhB2H,EAAKI,KAAKkE,IAAI,CAACrS,KAAK,MAAMyN,QAAQ,SAASrC,EAAEC,EAAEvB,EAAE/B,EAAEC,GAAG,IAAI3I,EAAEO,EAAEyL,EAAEvL,MAAM,GAAGoH,EAAE6G,EAAKwC,SAASlU,EAAE6K,EAAE6E,UAAUjC,GAAG,EAAEvD,EAAEW,EAAE6E,UAAUnM,GAAG,EAAyF,IAAvFoI,EAAEA,GAAG,GAAGD,EAAEA,GAAG,GAAG,EAAE1L,GAAGyL,EAAE,IAAIiG,EAAKO,UAAUG,QAAQ,qCAAyCpP,EAAE,EAAE,EAAEA,GAAGkH,IAAI,EAAElH,EAAEA,KAA2G,OAArGA,EAAE,GAAGhD,IAAIgD,EAAE,GAAGhD,GAAGyN,EAAE5C,EAAE2D,MAAMf,EAAE,GAAG,GAAGzK,IAAIgM,EAAE0C,EAAKI,KAAKkE,IAAIC,EAAElH,EAAEC,EAAEvB,EAAE/B,EAAEC,EAAE3I,GAAGO,EAAEmO,EAAKI,KAAKkE,IAAIrK,EAAEoD,EAAExL,EAAEkK,EAAEuB,EAAErD,EAAE3I,GAAU6H,EAAEiJ,OAAOvQ,EAAE2S,KAAK3S,EAAE4S,MAAMlC,QAAQ,SAASlF,EAAEC,EAAEvB,EAAE/B,EAAEC,GAAGA,EAAEA,GAAG,GAAGD,EAAEA,GAAG,GAAG,IAAI1I,EAAE0O,EAAKwC,SAAS3Q,EAAEP,EAAE0M,UAAUjC,GAAG,EAAE5C,EAAE7H,EAAE0M,UAAUV,GAAGhP,EAAEgD,EAAEwL,MAAMQ,EAAEnE,EAAEc,GAAGzB,EAAElH,EAAEmR,SAASnF,EAAEnE,EAAEc,GAAGd,GAAGA,EAAEc,GAAG,EAAyE,IAAvE,EAAEpI,GAAGkI,EAAE,IAAIiG,EAAKO,UAAUG,QAAQ,qCAAyCpD,EAAE,EAAE,EAAEA,GAAGnE,IAAI,EAAEmE,EAAEA,KAA0L,OAApLA,EAAE,GAAGzL,IAAIyL,EAAE,GAAGzL,GAAGkK,EAAEzK,EAAEwL,MAAMf,EAAE,GAAG,GAAGuB,IAAIhP,EAAE0R,EAAKI,KAAKkE,IAAIrK,EAAEoD,EAAE/O,EAAEyN,EAAEvD,EAAEyB,EAAEqD,GAAGD,EAAE2C,EAAKI,KAAKkE,IAAIC,EAAElH,EAAE/O,EAAEkW,KAAKzI,EAAE/B,EAAEC,EAAEqD,GAAGhM,EAAEyR,MAAMzU,EAAEmW,IAAIpH,IAAItD,EAAE,IAAIiG,EAAKO,UAAUC,QAAQ,2BAAkClS,EAAEkW,MAAMD,EAAE,SAASxI,EAAE/B,EAAEC,EAAE3I,EAAEO,EAAEsH,GAAG,IAAID,EAAE,GAAGV,EAAEwH,EAAKwC,SAASlU,EAAEkK,EAAEQ,EAAoS,KAAlSnH,GAAG,GAAK,GAAG,EAAEA,GAAG,GAAGA,IAAIkI,EAAE,IAAIiG,EAAKO,UAAUG,QAAQ,6BAA6B,WAAWpP,EAAE9C,QAAQ,WAAWwL,EAAExL,SAASuL,EAAE,IAAIiG,EAAKO,UAAUI,IAAI,2CAA2CxH,EAAE,CAACX,EAAEqK,QAAQ,GAAGvR,EAAE9C,OAAO,GAAG,GAAGqD,EAAE,GAAG,EAAEsH,EAAE,KAAIA,EAAEX,EAAE4J,OAAOjJ,EAAEc,IAAK,IAAIzB,EAAEwF,UAAUhE,GAAG,EAAEb,EAAE4C,EAAE2D,QAAQvG,GAAM7H,EAAE9C,OAA+H,IAApG,QAAnByL,EAAEzB,EAAEwF,UAAU1M,GAAG,GAAW4H,EAAE,CAACV,EAAEqK,QAAQ,GAAG5I,IAAI,YAAYA,IAAIf,EAAEV,EAAE4J,OAAO,CAAC5J,EAAEqK,QAAQ,GAAG,QAAQ,CAAC5I,KAAKf,EAAEV,EAAE4J,OAAOlJ,EAAE5H,GAAOA,EAAE,EAAEA,EAAE4H,EAAE1K,OAAO8C,GAAG,EAAG6H,EAAE4C,EAAE2D,QAAQpR,EAAE6K,EAAED,EAAEnH,MAAMT,EAAEA,EAAE,GAAG8Q,OAAO,CAAC,EAAE,EAAE,MAAO,IAAI9Q,EAAE,EAAEA,EAAE0I,EAAExL,OAAO8C,GAAG,EAAG6H,EAAE4C,EAAE2D,QAAQpR,EAAE6K,EAAEa,EAAEjI,MAAMT,EAAEA,EAAE,GAAG8Q,OAAO,CAAC,EAAE,EAAE,MAAM,OAAO5J,EAAEsE,MAAM3D,EAAE,EAAEtH,IAAIoI,EAAE,SAASoD,EAAEC,EAAEvB,EAAE/B,EAAEC,EAAE3I,GAAG,IAAIO,EAAEsH,EAAE6G,EAAKwC,SAAS3Q,EAAEsH,EAAEH,EAAE,IAAI1K,EAAEgP,EAAE9O,OAAOgK,EAAEW,EAAE6E,UAAUV,GAAmG,GAAhGvB,EAAE5C,EAAEiJ,OAAO,CAACjJ,EAAE0J,QAAQ,EAAEvR,EAAE,IAAIyK,GAAGqG,OAAO,CAAC,EAAE,EAAE,IAAIrQ,MAAM,EAAE,GAAGiI,EAAEb,EAAEsJ,SAAS5Q,EAAEmI,EAAEqD,EAAEqC,QAAQ3D,IAAI,EAAE9B,IAAO3L,EAAG,MAAM,CAACmW,IAAIzK,EAAEwK,KAAK,IAAI,IAAI3S,EAAE,EAAEA,EAAEvD,EAAEuD,GAAG,EAAGkK,EAAE,KAAK9B,EAAEoD,EAAEqC,QAAQ3D,GAAGuB,EAAEzL,IAAIoI,EAAE,GAAGqD,EAAEzL,EAAE,IAAIoI,EAAE,GAAGqD,EAAEzL,EAAE,IAAIoI,EAAE,GAAGqD,EAAEzL,EAAE,IAAIoI,EAAE,GAAG,MAAM,CAACwK,IAAIzK,EAAEwK,KAAKrL,EAAE2D,MAAMQ,EAAE9E,MAAMwH,EAAKI,KAAKsE,KAAK,CAACzS,KAAK,OAAOyN,QAAQ,SAAS6B,EAAEC,EAAEC,EAAEE,EAAED,EAAEjE,GAAG,MAAMuC,EAAKwC,SAASxE,UAAUyD,IAAI1H,EAAE,IAAIiG,EAAKO,UAAUG,QAAQ,4BAA4B,IAAIrD,EAAEC,EAAE0C,EAAKI,KAAKsE,KAAKC,EAAE3K,EAAEgG,EAAKwC,SAASzG,EAAE/B,EAAEhB,EAAER,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGiJ,EAAEnE,EAAEiE,EAAE7B,QAAQ+B,IAAI,IAAInQ,EAAEhD,EAAE,GAAmB,IAAhBqT,EAAEA,GAAG,GAAGD,EAAEA,GAAG,GAAOrE,EAAE,EAAEA,EAAE,EAAEmE,EAAEhT,OAAO6O,GAAG,EAAoB7E,EAAEuD,EAAEvD,EAArBlH,EAAEkQ,EAAEzP,MAAMsL,EAAEA,EAAE,IAAY/O,EAAEA,EAAE8T,OAAOrG,EAAE0F,EAAEF,EAAE7B,QAAQ3D,EAAE0F,EAAEnQ,MAAMmQ,EAAEnE,EAAEmE,GAA2M,OAAxMnQ,EAAEkQ,EAAEzP,MAAMsL,GAAGmE,EAAExH,EAAEgE,UAAU1M,GAAG+L,EAAEkE,EAAE7B,QAAQ3D,EAAE0F,EAAE,CAAC,EAAE,EAAE,EAAED,KAAKlQ,EAAE0I,EAAE8C,MAAMf,EAAEzK,EAAE8Q,OAAO,CAAC,EAAE,EAAE,IAAI/E,GAAGmE,GAAGhJ,EAAEuD,EAAEvD,EAAEuD,EAAEzK,EAAE8Q,OAAO,CAAC,EAAE,EAAE,IAAI/E,IAAI7E,EAAE+I,EAAE7B,QAAQ3D,EAAEvD,EAAEuD,EAAE0F,EAAEnE,EAAEmE,MAAME,EAAEnT,SAASgK,EAAEuD,EAAEvD,EAAEiF,EAAEkE,EAAE3B,EAAKI,KAAKsE,KAAKE,KAAKrD,EAAEI,KAAYrT,EAAE8T,OAAOpI,EAAEoI,OAAO9Q,EAAE0I,EAAE8C,MAAMtE,EAAEkJ,MAAMa,QAAQ,SAASlB,EAAEC,EAAEzF,EAAE0F,EAAEC,EAAEC,GAAG,MAAMzB,EAAKwC,SAASxE,UAAUnC,IAAI9B,EAAE,IAAIiG,EAAKO,UAAUG,QAAQ,4BAA4Bc,EAAEA,GAAG,GAAG,IAA2ElE,EAAE9E,EAAzEmJ,EAAE3B,EAAKI,KAAKsE,KAAKC,EAAEjD,EAAE1B,EAAKwC,SAASnF,EAAEqE,EAAE1I,EAAEyE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGnM,EAAEqQ,EAAEN,EAAE3B,QAAQ7D,IAAQuF,EAAEpB,EAAKwC,SAASxE,UAAUsD,GAAGE,EAAElT,EAAE,GAAW,IAARiT,EAAEA,GAAG,GAAO1F,EAAE,EAAEA,EAAE,EAAEuF,EAAE,GAAGvF,GAAG,EAAGyB,EAAED,EAAE/L,EAAE+P,EAAEkB,QAAQlF,EAAE/L,EAAEgQ,EAAEvP,MAAM8J,EAAEA,EAAE,MAAM4B,EAAEJ,EAAEI,EAAEH,GAAGhP,EAAEA,EAAE8T,OAAO9E,GAAGhM,EAAEqQ,EAAErQ,GAAyQ,OAAtQkH,EAAE4I,EAAE,GAAGvF,EAAEyB,EAAE+D,EAAE3B,QAAQrC,EAAE/L,EAAE,CAAC,EAAE,EAAE,EAAEkH,KAAK8E,EAAED,EAAEC,EAAEoE,EAAE5E,MAAMwE,EAAEvP,MAAM8J,GAAGrD,GAAG4J,OAAO,CAAC,EAAE,EAAE,KAAK3E,EAAEJ,EAAEI,EAAEH,GAAGG,EAAE4D,EAAE3B,QAAQrC,EAAEI,EAAEJ,EAAE/L,EAAEqQ,EAAErQ,MAAMiQ,EAAE/S,SAASiP,EAAEJ,EAAEI,EAAEgE,EAAEF,EAAEvB,EAAKI,KAAKsE,KAAKE,KAAKvD,EAAEE,KAAKG,EAAEqB,MAAMrB,EAAE5E,MAAMW,EAAE+D,GAAGE,EAAEe,SAASnB,EAAEF,KAAKrH,EAAE,IAAIiG,EAAKO,UAAUC,QAAQ,2BAAkClS,EAAE8T,OAAOV,EAAE5E,MAAMQ,EAAE9E,KAAKoM,KAAK,SAASpM,EAAElK,GAAG,IAAI2L,EAAE3I,EAAE0O,EAAKI,KAAKsE,KAAKC,EAAE9S,EAAEmO,EAAKwC,SAASrJ,EAAEtH,EAAEmH,EAAEA,EAAE,CAAC,EAAE,EAAE,EAAE,GAA0BE,EAAEC,EAAzBD,EAAEV,EAAEkH,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAUpO,EAAEA,EAAE4H,KAAK,IAAIe,EAAE,EAAEA,EAAE,EAAE3L,EAAEE,OAAOyL,GAAG,EAAGf,EAAE5H,EAAE4H,GAAGF,EAAEG,EAAEH,EAAER,EAAEkH,QAAQvG,EAAED,EAAE5K,EAAEyD,MAAMkI,EAAEA,EAAE,MAAgG,OAA1FA,EAAE3L,EAAEyD,MAAMkI,GAAG,IAAIpI,EAAEmM,UAAU/D,KAAKf,EAAEC,EAAED,EAAE5H,EAAE4H,IAAIe,EAAEpI,EAAEuQ,OAAOnI,EAAE,EAAE,WAAW,EAAE,EAAE,KAAKjB,EAAEG,EAAEH,EAAEiB,GAAUzB,EAAEkH,QAAQvG,EAAE7H,EAAE6H,EAAED,EAAE5H,EAAE4H,KAAKF,KAAK2L,EAAE,SAAStL,GAAG,MAAM,CAACA,EAAE,IAAI,EAAEA,EAAE,KAAK,GAAGA,EAAE,IAAI,EAAEA,EAAE,KAAK,GAAGA,EAAE,IAAI,EAAEA,EAAE,KAAK,GAAGA,EAAE,IAAI,EAAE,KAAKA,EAAE,KAAK,OAAO2G,EAAKI,KAAKyE,IAAI,CAAC5S,KAAK,MAAMyN,QAAQ,SAASjH,EAAEN,EAAEa,EAAEE,EAAEV,GAAG,IAAIlK,EAAE6J,EAAEpG,MAAM,GAAgE,OAA7DoG,EAAE6H,EAAKwC,SAAStJ,EAAEA,GAAG,GAAGT,EAAEuH,EAAKI,KAAKyE,IAAI5K,GAAE,EAAGxB,EAAEnK,EAAE4K,EAAEF,EAAER,GAAG,KAAYL,EAAEiK,OAAO3J,EAAE+L,KAAK/L,EAAEgM,MAAMlC,QAAQ,SAAS/J,EAAElK,EAAE2L,EAAE3I,EAAEO,GAAG,IAAIsH,EAAE7K,EAAEyD,MAAM,GAAGiH,EAAEgH,EAAKwC,SAAStJ,EAAEF,EAAEgF,UAAU7E,GAAyL,OAA7K7H,EAAEA,GAAG,IAAdO,EAAEA,GAAG,MAAeqH,GAAG5K,EAAE0K,EAAEyJ,SAAStJ,EAAED,EAAErH,GAAGsH,EAAEH,EAAEyJ,SAAStJ,EAAE,EAAED,EAAErH,KAAKvD,EAAE6K,EAAEA,EAAE,IAAIX,EAAEwH,EAAKI,KAAKyE,IAAI5K,EAAEyD,EAAElF,EAAEW,EAAE7H,EAAE2I,EAAEpI,GAAGmH,EAAE+J,MAAMvK,EAAEiM,IAAInW,IAAIyL,EAAE,IAAIiG,EAAKO,UAAUC,QAAQ,2BAAkChI,EAAEgM,MAAMxD,EAAE,SAASxI,EAAElK,GAAG,IAAI2L,EAAE3I,EAAEO,EAAEsH,EAAEH,EAAEE,EAAE8G,EAAKwC,SAASxJ,EAA2B,IAAzBnH,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGsH,EAAE7K,EAAEyD,MAAM,GAAOkI,EAAE,EAAE,IAAIA,EAAEA,IAAI,CAAqE,KAAnE3I,EAAE,KAAKkH,EAAE0B,KAAKC,MAAMF,EAAE,KAAK,GAAG,GAAGA,EAAE,OAAOpI,EAAEqH,EAAErH,EAAEsH,IAAIH,EAAE,KAAU,EAALG,EAAE,IAAU7H,EAAE,EAAE,EAAEA,EAAEA,IAAK6H,EAAE7H,GAAG6H,EAAE7H,KAAK,GAAU,EAAP6H,EAAE7H,EAAE,KAAO,GAAG6H,EAAE,MAAM,EAAEH,IAAIG,EAAE,KAAK,WAAW,OAAOtH,GAAGsG,EAAE,SAASA,EAAEC,EAAEI,GAAG,IAAIlK,EAAEmK,EAAED,EAAEhK,OAAoB,IAAb4J,EAAEA,EAAErG,MAAM,GAAOzD,EAAE,EAAEA,EAAEmK,EAAEnK,GAAG,EAAG8J,EAAE,IAAI,WAAWI,EAAElK,GAAG8J,EAAE,IAAI,WAAWI,EAAElK,EAAE,GAAG8J,EAAE,IAAI,WAAWI,EAAElK,EAAE,GAAG8J,EAAE,IAAI,WAAWI,EAAElK,EAAE,GAAG8J,EAAE4H,EAAKI,KAAKyE,IAAI7D,EAAE5I,EAAED,GAAG,OAAOC,GAAG6B,EAAE,SAASoH,EAAEC,EAAEzF,EAAE0F,EAAEC,EAAEC,GAAG,IAAIE,EAAED,EAAErE,EAAEI,EAAEnM,EAAEgM,EAAE9E,EAAE4I,EAAE9S,EAAE0R,EAAKwC,SAAqU,IAA5TlF,EAAEzB,EAAErN,OAAOgK,EAAElK,EAAE0P,UAAUnC,GAAGuF,EAAE9S,EAAE0P,UAAUuD,GAAGG,EAAEpT,EAAE0P,UAAUwD,GAAGG,EAAEL,EAAE5B,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,KAAKgC,GAAGF,EAAEA,EAAEzP,MAAM,GAAGyP,EAAElT,EAAE8T,OAAOZ,EAAE,CAAC,MAAMA,EAAExB,EAAKI,KAAKyE,IAAI1M,EAAEwJ,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGH,GAAGA,EAAExB,EAAKI,KAAKyE,IAAI1M,EAAEwJ,EAAEH,EAAE,CAAC,EAAE,EAAEtH,KAAKC,MAAMuH,EAAE,YAAc,WAAFA,KAAgBA,EAAE1B,EAAKI,KAAKyE,IAAI1M,EAAEwJ,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGJ,GAAGjQ,EAAEkQ,EAAEzP,MAAM,GAAGwP,EAAEG,EAAE3P,MAAM,GAAGsP,IAAIE,EAAEvB,EAAKI,KAAKyE,IAAI1M,EAAEwJ,EAAED,EAAE7F,IAAQ4B,EAAE,EAAEA,EAAEH,EAAEG,GAAG,EAAGnM,EAAE,KAAK+L,EAAEiE,EAAE5B,QAAQpO,GAAGuK,EAAE4B,IAAIJ,EAAE,GAAGxB,EAAE4B,EAAE,IAAIJ,EAAE,GAAGxB,EAAE4B,EAAE,IAAIJ,EAAE,GAAGxB,EAAE4B,EAAE,IAAIJ,EAAE,GAAoN,OAAjNxB,EAAEvN,EAAEwO,MAAMjB,EAAErD,GAAG6I,IAAIE,EAAEvB,EAAKI,KAAKyE,IAAI1M,EAAEwJ,EAAED,EAAE7F,IAAIwF,EAAE,CAACnH,KAAKC,MAAMiH,EAAE,YAAc,WAAFA,EAAalH,KAAKC,MAAM3B,EAAE,YAAc,WAAFA,GAAc+I,EAAEvB,EAAKI,KAAKyE,IAAI1M,EAAEwJ,EAAEJ,EAAEF,GAAGhE,EAAEiE,EAAE5B,QAAQ8B,GAAGD,EAAE,IAAIlE,EAAE,GAAGkE,EAAE,IAAIlE,EAAE,GAAGkE,EAAE,IAAIlE,EAAE,GAAGkE,EAAE,IAAIlE,EAAE,GAAS,CAACoH,IAAInW,EAAEmU,SAASlB,EAAE,EAAEE,GAAG+C,KAAK3I,KAAKmE,EAAKK,KAAKyE,KAAK,SAAS3M,EAAEC,GAAGrJ,KAAKgW,EAAE3M,EAAEA,GAAG4H,EAAKE,KAAK+D,OAAO,IAAc3V,EAAVkK,EAAE,CAAC,GAAG,IAAMC,EAAEL,EAAEzJ,UAAUyV,UAAU,GAAkD,IAA/CrV,KAAK8C,EAAE,CAAC,IAAIuG,EAAE,IAAIA,GAAGD,EAAE3J,OAAOiK,IAAIN,EAAEC,EAAE8H,KAAK/H,IAAQ7J,EAAE,EAAEA,EAAEmK,EAAEnK,IAAKkK,EAAE,GAAGlK,GAAQ,UAAL6J,EAAE7J,GAAakK,EAAE,GAAGlK,GAAQ,WAAL6J,EAAE7J,GAAcS,KAAK8C,EAAE,GAAGgD,OAAO2D,EAAE,IAAIzJ,KAAK8C,EAAE,GAAGgD,OAAO2D,EAAE,IAAIzJ,KAAKiW,EAAE,IAAI5M,EAAErJ,KAAK8C,EAAE,KAAKmO,EAAKK,KAAKyE,KAAKnW,UAAU+Q,QAAQM,EAAKK,KAAKyE,KAAKnW,UAAUsW,IAAI,SAAS5L,GAAmG,OAAhGtK,KAAKyS,GAAGzH,EAAE,IAAIiG,EAAKO,UAAUG,QAAQ,4CAA4C3R,KAAK8F,OAAOwE,GAAUtK,KAAKmW,OAAO7L,IAAI2G,EAAKK,KAAKyE,KAAKnW,UAAUuV,MAAM,WAAWnV,KAAKiW,EAAE,IAAIjW,KAAKgW,EAAEhW,KAAK8C,EAAE,IAAI9C,KAAKyS,EAAE9D,GAAGsC,EAAKK,KAAKyE,KAAKnW,UAAUkG,OAAO,SAASwE,GAAGtK,KAAKyS,GAAE,EAAGzS,KAAKiW,EAAEnQ,OAAOwE,IAAI2G,EAAKK,KAAKyE,KAAKnW,UAAUuW,OAAO,WAAW,IAAI7L,EAAEtK,KAAKiW,EAAEb,WAAW9K,EAAE,IAAKtK,KAAKgW,EAAEhW,KAAK8C,EAAE,IAAKgD,OAAOwE,GAAG8K,WAAwB,OAAbpV,KAAKmV,QAAe7K,GAAG2G,EAAKK,KAAK8E,OAAO,SAASzD,EAAEjE,EAAEJ,EAAEC,EAAEvB,GAAGsB,EAAEA,GAAG,KAAM,EAAEC,GAAG,EAAED,IAAItD,EAAEiG,EAAKO,UAAUG,QAAQ,6BAA6B,kBAAkBgB,IAAIA,EAAE1B,EAAKM,MAAM4C,WAAWM,OAAO9B,IAAI,kBAAkBjE,IAAIA,EAAEuC,EAAKM,MAAM4C,WAAWM,OAAO/F,IAAwBiE,EAAE,IAAtB3F,EAAEA,GAAGiE,EAAKK,KAAKyE,MAAapD,GAAG,IAAI1H,EAAEC,EAAE3I,EAAEkH,EAAEW,EAAE,GAAG7K,EAAE0R,EAAKwC,SAAS,IAAIhK,EAAE,EAAE,GAAGW,EAAE3K,QAAQ8O,GAAG,GAAG9E,IAAI,CAAgC,IAA/BuD,EAAE/B,EAAE0H,EAAEhC,QAAQpR,EAAE8T,OAAO3E,EAAE,CAACjF,KAASyB,EAAE,EAAEA,EAAEoD,EAAEpD,IAAoB,IAAfD,EAAE0H,EAAEhC,QAAQ1F,GAAO1I,EAAE,EAAEA,EAAE0I,EAAExL,OAAO8C,IAAKyK,EAAEzK,IAAI0I,EAAE1I,GAAI6H,EAAEA,EAAEiJ,OAAOrG,GAAuB,OAApBuB,IAAInE,EAAE7K,EAAEwO,MAAM3D,EAAEmE,IAAWnE,GAAG6G,EAAKoF,KAAK,SAAS/L,GAAGtK,KAAKwJ,EAAE,CAAC,IAAIyH,EAAKE,KAAK+D,QAAQlV,KAAKT,EAAE,CAAC,GAAGS,KAAKsW,EAAE,EAAEtW,KAAKgN,EAAE,GAAGhN,KAAK6S,EAAE,EAAE7S,KAAKuW,EAAE,GAAGvW,KAAK4S,EAAE5S,KAAK2J,EAAE3J,KAAKyJ,EAAEzJ,KAAKoS,EAAE,EAAEpS,KAAKsK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAGtK,KAAKqJ,EAAE,CAAC,EAAE,EAAE,EAAE,GAAGrJ,KAAKwO,EAAE5B,EAAE5M,KAAKoT,EAAE9I,EAAEtK,KAAKgL,EAAE2D,EAAE3O,KAAKsO,EAAE,CAACkI,SAAS,GAAGC,OAAO,IAAIzW,KAAKoK,EAAEpK,KAAKqS,EAAE,EAAErS,KAAK4M,EAAE,EAAE5M,KAAK2O,EAAE,EAAE3O,KAAK8M,EAAE,MAAM9M,KAAK0W,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM1W,KAAKuS,EAAE,IAAMvS,KAAKwS,EAAE,IAAIvB,EAAKoF,KAAKzW,UAAU,CAAC+W,YAAY,SAASpX,EAAEmK,GAAG,IAASU,EAAwBH,EAA7BnH,EAAE,GAAkG,IAA7FsH,EAAEpK,KAAK4W,QAAQlN,MAAa1J,KAAKoK,GAAGY,EAAE,IAAIiG,EAAKO,UAAUK,SAAS,2BAA8BzH,EAAEpK,KAAK2O,EAAE,CAACvE,IAAIA,EAAEpK,KAAK4M,GAAG3C,EAAE,GAAG,IAAQR,EAAJU,EAAE,EAA4C,IAAxCnK,KAAK4S,EAAE3I,EAAE,IAAG,IAAKuF,MAAM2D,UAAUnT,KAAKuS,EAAM9I,EAAE,EAAE,GAAGA,EAAEA,IAAKQ,EAAE6I,KAAK,WAAW3H,KAAK2E,SAAS,GAAG,IAAIrG,EAAE,EAAEA,EAAEzJ,KAAKwJ,EAAE/J,SAAUwK,EAAEA,EAAEoJ,OAAOrT,KAAKwJ,EAAEC,GAAG2L,YAAYjL,GAAGnK,KAAKT,EAAEkK,GAAGzJ,KAAKT,EAAEkK,GAAG,EAAGW,KAAGpK,KAAKsW,EAAE,GAAG7M,IAAGA,KAA6M,IAAvMzJ,KAAKsW,GAAG,GAAGtW,KAAKwJ,EAAE/J,SAASO,KAAKwJ,EAAEsJ,KAAK,IAAI7B,EAAKE,KAAK+D,QAAQlV,KAAKT,EAAEuT,KAAK,IAAI9S,KAAK2J,GAAGQ,EAAEA,EAAEnK,KAAKyJ,IAAIzJ,KAAKyJ,EAAEU,GAAGnK,KAAKsW,IAAItW,KAAKsK,EAAE2G,EAAKE,KAAK+D,OAAO/D,KAAKnR,KAAKsK,EAAE+I,OAAOpJ,IAAIjK,KAAKwO,EAAE,IAAIyC,EAAKC,OAAOoC,IAAItT,KAAKsK,GAAOF,EAAE,EAAE,EAAEA,IAAKpK,KAAKqJ,EAAEe,GAAGpK,KAAKqJ,EAAEe,GAAG,EAAE,GAAEpK,KAAKqJ,EAAEe,IAAIA,MAAO,IAAIA,EAAE,EAAEA,EAAE7K,EAAE6K,GAAG,EAAG,KAAKA,EAAE,GAAGpK,KAAK8M,GAAG0B,EAAExO,MAAMiK,EAAEmJ,EAAEpT,MAAM8C,EAAEgQ,KAAK7I,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAY,OAARuE,EAAExO,MAAa8C,EAAEE,MAAM,EAAEzD,IAAIsX,mBAAmB,SAASlN,EAAEH,GAAG,IAAIG,GAAG,wEAAwEH,GAAGwB,EAAE,uEAAuEhL,KAAKoT,EAAEzJ,GAAGuJ,WAAW,SAASlG,EAAE/B,EAAEC,GAAGA,EAAEA,GAAG,OAAO,IAAI3I,EAAEO,EAAEsH,GAAE,IAAKoF,MAAM2D,UAAUhJ,EAAEnK,KAAKgN,EAAE9B,GAAGzB,EAAEzJ,KAAK4W,UAAUrX,EAAE,EAAyG,QAAvGgD,EAAEvC,KAAKuW,EAAErL,MAAO0B,IAAIrK,EAAEvC,KAAKuW,EAAErL,GAAGlL,KAAKoS,KAAKjI,IAAIyC,IAAIzC,EAAEnK,KAAKgN,EAAE9B,GAAG,GAAGlL,KAAKgN,EAAE9B,IAAIlL,KAAKgN,EAAE9B,GAAG,GAAGlL,KAAKwJ,EAAE/J,cAAqBuN,GAAG,IAAI,SAAS/B,IAAI2B,IAAI3B,EAAE,GAAGjL,KAAKwJ,EAAEW,GAAGrE,OAAO,CAACvD,EAAEvC,KAAK6S,IAAI,EAAE5H,EAAEb,EAAE,EAAI,EAAF4C,IAAM,MAAM,IAAI,SAA6C,GAAG,0BAAvC9B,EAAE9L,OAAOQ,UAAUmD,SAASjD,KAAKkN,IAAiC,CAAM,IAALlK,EAAE,GAAOoI,EAAE,EAAEA,EAAE8B,EAAEvN,OAAOyL,IAAKpI,EAAEgQ,KAAK9F,EAAE9B,IAAI8B,EAAElK,OAAmC,IAA5B,mBAAmBoI,IAAI3L,EAAE,GAAO2L,EAAE,EAAEA,EAAE8B,EAAEvN,SAASF,EAAE2L,IAAK,kBAAkB8B,EAAE9B,KAAK3L,EAAE,GAAI,IAAIA,EAAE,CAAC,GAAG0L,IAAI2B,EAAG,IAAI1B,EAAED,EAAE,EAAEC,EAAE8B,EAAEvN,OAAOyL,IAAK,IAAIpI,EAAEkK,EAAE9B,GAAG,EAAEpI,GAAImI,IAAInI,KAAK,EAAI9C,KAAKwJ,EAAEW,GAAGrE,OAAO,CAACvD,EAAEvC,KAAK6S,IAAI,EAAE5H,EAAEb,EAAE4C,EAAEvN,QAAQ4T,OAAOrG,IAAI,MAAM,IAAI,SAAS/B,IAAI2B,IAAI3B,EAAE+B,EAAEvN,QAAQO,KAAKwJ,EAAEW,GAAGrE,OAAO,CAACvD,EAAEvC,KAAK6S,IAAI,EAAE5H,EAAEb,EAAE4C,EAAEvN,SAASO,KAAKwJ,EAAEW,GAAGrE,OAAOkH,GAAG,MAAM,QAAQzN,EAAE,EAAEA,GAAGyL,EAAE,IAAIiG,EAAKO,UAAUI,IAAI,wEAAwE5R,KAAKT,EAAE4K,IAAIc,EAAEjL,KAAK2J,GAAGsB,EAAExB,IAAIzJ,KAAKoK,IAAIpK,KAAK4W,YAAY5W,KAAKoK,GAAGyI,EAAE,SAAS1H,KAAK+C,IAAIlO,KAAKyJ,EAAEzJ,KAAK2J,IAAIkJ,EAAE,WAAW7S,KAAK8W,iBAAiBF,QAAQ,SAAStM,GAA4B,OAAzBA,EAAEtK,KAAK0W,EAAEpM,IAAIsC,EAAEtC,EAAEtK,KAAKoT,GAAUpT,KAAKyJ,GAAGzJ,KAAKyJ,GAAGa,EAAEtK,KAAKT,EAAE,GAAGS,KAAKwS,IAAG,IAAKhD,MAAM2D,UAAUnT,KAAK4S,EAAE5S,KAAK2O,EAAE3O,KAAK4M,EAAE5M,KAAK4M,EAAE5M,KAAK2J,GAAGW,EAAEtK,KAAK2O,EAAE3O,KAAKoK,EAAEpK,KAAKoK,GAAG0M,YAAY,SAASxM,GAAwB,OAArBA,EAAEtK,KAAK0W,EAAEpM,GAAItK,KAAKoT,GAAUpT,KAAKyJ,GAAGa,GAAItK,KAAK2J,EAAEW,EAAT,EAAatK,KAAK2J,EAAEW,GAAGyM,gBAAgB,WAAW/W,KAAKgL,IAAIhL,KAAKuJ,EAAE,CAACyN,kBAAkBzD,EAAEvT,KAAKA,KAAKgS,IAAIiF,eAAe1D,EAAEvT,KAAKA,KAAKkX,IAAIC,kBAAkB5D,EAAEvT,KAAKA,KAAKoX,GAAGC,uBAAuB9D,EAAEvT,KAAKA,KAAKsS,IAAIxQ,OAAOwV,kBAAkBxV,OAAOwV,iBAAiB,OAAOtX,KAAKuJ,EAAEyN,kBAAkBrI,GAAG7M,OAAOwV,iBAAiB,YAAYtX,KAAKuJ,EAAE0N,eAAetI,GAAG7M,OAAOwV,iBAAiB,WAAWtX,KAAKuJ,EAAE4N,kBAAkBxI,GAAG7M,OAAOwV,iBAAiB,eAAetX,KAAKuJ,EAAE8N,uBAAuB1I,IAAI5M,SAASwV,aAAaxV,SAASwV,YAAY,SAASvX,KAAKuJ,EAAEyN,mBAAmBjV,SAASwV,YAAY,cAAcvX,KAAKuJ,EAAE0N,gBAAgBlV,SAASwV,YAAY,WAAWvX,KAAKuJ,EAAE4N,oBAAoBnM,EAAE,IAAIiG,EAAKO,UAAUI,IAAI,uBAAuB5R,KAAKgL,GAAE,IAAKwM,eAAe,WAAWxX,KAAKgL,IAAIlJ,OAAO2V,qBAAqB3V,OAAO2V,oBAAoB,OAAOzX,KAAKuJ,EAAEyN,kBAAkBrI,GAAG7M,OAAO2V,oBAAoB,YAAYzX,KAAKuJ,EAAE0N,eAAetI,GAAG7M,OAAO2V,oBAAoB,WAAWzX,KAAKuJ,EAAE4N,kBAAkBxI,GAAG7M,OAAO2V,oBAAoB,eAAezX,KAAKuJ,EAAE8N,uBAAuB1I,IAAI5M,SAAS2V,cAAc3V,SAAS2V,YAAY,SAAS1X,KAAKuJ,EAAEyN,mBAAmBjV,SAAS2V,YAAY,cAAc1X,KAAKuJ,EAAE0N,gBAAgBlV,SAAS2V,YAAY,WAAW1X,KAAKuJ,EAAE4N,oBAAoBnX,KAAKgL,EAAE2D,IAAI2I,iBAAiB,SAAS3N,EAAEH,GAAGxJ,KAAKsO,EAAE3E,GAAG3J,KAAKqS,KAAK7I,GAAGiO,oBAAoB,SAAS/N,EAAEN,GAAG,IAAIa,EAAEE,EAAEV,EAAEzJ,KAAKsO,EAAE5E,GAAGnK,EAAE,GAAG,IAAI4K,KAAKV,EAAGA,EAAE5J,eAAesK,IAAIV,EAAEU,KAAKf,GAAG7J,EAAEuT,KAAK3I,GAAG,IAAIF,EAAE,EAAEA,EAAE1K,EAAEE,OAAOwK,WAAmBR,EAAdU,EAAE5K,EAAE0K,KAAiBmN,EAAE,WAAWrE,EAAE,IAAImE,GAAG,SAAS7N,GAAG,IAAIC,EAAEI,EAAE,IAAIJ,EAAED,EAAEqF,GAAGrF,EAAEsO,SAAStO,EAAEuO,SAAS,EAAElO,EAAEL,EAAEyI,GAAGzI,EAAEwO,SAASxO,EAAEyO,SAAS,EAAE,MAAM1O,GAAGM,EAAEJ,EAAE,EAAE,GAAGA,GAAG,GAAGI,GAAGuH,EAAKnB,OAAOoD,WAAW,CAAC5J,EAAEI,GAAG,EAAE,SAASqJ,EAAE,IAAIf,GAAG,WAAWe,EAAE,IAAIT,EAAE,SAAS3I,GAA0G,GAAvGA,EAAEA,EAAEoO,6BAA6BrJ,GAAG/E,EAAEoO,6BAA6BjG,GAAGnI,EAAEoO,6BAA6BtJ,EAAK3M,OAAOkW,YAAY,CAAC,IAAIxO,EAAE1H,OAAOkW,YAAY,kBAAkBxO,GAAGyH,EAAKnB,OAAOoD,WAAW1J,EAAE,EAAE,iBAAiBG,GAAGsH,EAAKnB,OAAOoD,WAAWvJ,EAAE,EAAE,iBAAiBoJ,EAAE,KAAsjB9B,EAAKnB,OAAO,IAAImB,EAAKoF,KAAK,GAAG9M,EAAE,IAAI,IAAI+M,EAAEL,EAAEL,EAAEc,EAAE,GAAGA,GAAE,EAA4B,CAAC,IAAI1B,EAAE,GAAGA,EAAE/N,EAAOC,QAAQ,CAAC,IAAIqP,EAAE,IAAIA,EAAE,EAAQ,OAAU,MAAMf,IAAGe,EAAE,KAAKvB,GAAGiB,EAAEM,IAAIN,EAAEgC,YAAYvB,EAAE1B,EAAE,GAAG0B,EAAGJ,EAAEL,EAAEgC,YAAY,KAAK3B,EAAE,IAAIpN,YAAY,IAAKD,WAAWqN,GAAIzM,QAAQoH,EAAKnB,OAAOoD,WAAWoD,EAAE,KAAK,8BAA8B,GAAG,qBAAqBxU,QAAQ,qBAAqBoH,YAAY,CAAuB,GAAtB0M,EAAE,IAAI1M,YAAY,IAAOpH,OAAO4N,QAAQ5N,OAAO4N,OAAOC,gBAAiB7N,OAAO4N,OAAOC,gBAAgBiG,OAAO,CAAC,IAAG9T,OAAO+N,WAAU/N,OAAO+N,SAASF,gBAAyD,MAAMpG,EAA9CzH,OAAO+N,SAASF,gBAAgBiG,GAAiB3E,EAAKnB,OAAOoD,WAAW0C,EAAE,KAAK,8BAA+B,MAAMI,IAAG,qBAAqBlU,QAAQA,OAAOoW,UAAUA,QAAQC,IAAI,2DAA2DD,QAAQC,IAAInC,KAAI/E,EAAKmH,KAAK,CAACC,SAAS,CAAC9J,EAAE,EAAE+J,KAAK,IAAKC,GAAG,IAAIC,GAAG,GAAGnH,KAAK,MAAMoH,MAAM,GAAGvH,OAAO,OAAOgB,EAAE,SAAS3S,EAAEmK,EAAE5G,EAAEsH,GAAGtH,EAAEA,GAAG,GAAGsH,EAAEA,GAAG,GAAG,IAAoEX,EAAhEQ,EAAEgH,EAAKmH,KAAKjO,EAAEF,EAAEX,EAAE,CAACoP,GAAGzH,EAAKnB,OAAO6G,YAAY,EAAE,IAAI1M,EAAEoO,UAA2yB,OAA/xBpO,EAAEX,EAAEa,EAAErH,GAAGA,EAAEqH,EAAEsO,MAAM,kBAAkBtO,EAAEwO,OAAOxO,EAAEwO,KAAK1H,EAAKM,MAAMwD,OAAON,OAAOtK,EAAEwO,OAAO,kBAAkBxO,EAAEuO,KAAKvO,EAAEuO,GAAGzH,EAAKM,MAAMwD,OAAON,OAAOtK,EAAEuO,OAAOzH,EAAKI,KAAKlH,EAAEkH,QAAQJ,EAAKC,OAAO/G,EAAE+G,SAAS,kBAAkB3R,GAAG,KAAK4K,EAAEmO,MAAM,KAAKnO,EAAEqO,IAAI,KAAKrO,EAAEqO,IAAI,MAAMrO,EAAEqO,IAAI,MAAMrO,EAAEoO,IAAI,MAAMpO,EAAEoO,IAAI,MAAMpO,EAAEoO,IAAI,EAAEpO,EAAEuO,GAAGjZ,QAAQ,EAAE0K,EAAEuO,GAAGjZ,SAASuL,EAAE,IAAIiG,EAAKO,UAAUG,QAAQ,qCAAqC,kBAAkBpS,GAAiCA,GAA9BkK,EAAEwH,EAAKK,KAAKsH,aAAarZ,EAAE4K,IAAOxK,IAAIqD,MAAM,EAAEmH,EAAEoO,GAAG,IAAIpO,EAAEwO,KAAKlP,EAAEkP,MAAM1H,EAAK4H,KAAKtZ,aAAa0R,EAAK4H,IAAIC,QAAQC,YAAYtP,EAAElK,EAAEyZ,MAAM7O,EAAE8O,OAAOxP,EAAEiM,IAAInW,EAAEkK,EAAE9J,IAAIqD,MAAM,EAAEmH,EAAEoO,GAAG,KAAK,kBAAkB7O,IAAIA,EAAEuH,EAAKM,MAAM4C,WAAWM,OAAO/K,IAAI,kBAAkB5G,IAAIA,EAAEmO,EAAKM,MAAM4C,WAAWM,OAAO3R,IAAI2G,EAAE,IAAIwH,EAAKC,OAAO/G,EAAE+G,QAAQ3R,GAAG0K,EAAEX,EAAEc,EAAED,GAAGC,EAAEzK,IAAIJ,EAAE4K,EAAE+O,GAAGjI,EAAKI,KAAKlH,EAAEkH,MAAMV,QAAQlH,EAAEC,EAAES,EAAEuO,GAAG5V,EAAEqH,EAAEqO,IAAWrO,GAAGwG,QAAQ,SAASjH,EAAEN,EAAEa,EAAEE,GAAG,IAAIV,EAAEwH,EAAKmH,KAAK7Y,EAAEkK,EAAEyI,EAAEnS,MAAM0J,EAAEjK,WAAW,OAAOiK,EAAE0P,OAAO5Z,IAAI4S,EAAE,SAAS5S,EAAEmK,EAAE5G,EAAEsH,GAAGtH,EAAEA,GAAG,GAAGsH,EAAEA,GAAG,GAAG,IAA0DD,EAAEV,EAAxDQ,EAAEgH,EAAKmH,KAAoyB,OAAjvBjO,GAA9CT,EAAEO,EAAEX,EAAEW,EAAEX,EAAEW,EAAEX,EAAE,GAAGW,EAAEoO,UAAU3O,GAAG5G,GAAE,IAAgB2V,MAAM,kBAAkB/O,EAAEiP,OAAOjP,EAAEiP,KAAK1H,EAAKM,MAAMwD,OAAON,OAAO/K,EAAEiP,OAAO,kBAAkBjP,EAAEgP,KAAKhP,EAAEgP,GAAGzH,EAAKM,MAAMwD,OAAON,OAAO/K,EAAEgP,OAAOzH,EAAKI,KAAK3H,EAAE2H,QAAQJ,EAAKC,OAAOxH,EAAEwH,SAAS,kBAAkB3R,GAAG,KAAKmK,EAAE4O,MAAM,KAAK5O,EAAE8O,IAAI,KAAK9O,EAAE8O,IAAI,MAAM9O,EAAE8O,IAAI,MAAM9O,EAAE6O,IAAI,MAAM7O,EAAE6O,IAAI,MAAM7O,EAAE6O,KAAK7O,EAAEgP,IAAI,EAAEhP,EAAEgP,GAAGjZ,QAAQ,EAAEiK,EAAEgP,GAAGjZ,SAASuL,EAAE,IAAIiG,EAAKO,UAAUG,QAAQ,qCAAqC,kBAAkBpS,GAAiCA,GAA9BkK,EAAEwH,EAAKK,KAAKsH,aAAarZ,EAAEmK,IAAO/J,IAAIqD,MAAM,EAAE0G,EAAE6O,GAAG,IAAI7O,EAAEiP,KAAKlP,EAAEkP,MAAM1H,EAAK4H,KAAKtZ,aAAa0R,EAAK4H,IAAIC,QAAQM,YAAY7Z,EAAEA,EAAE8Z,MAAMpI,EAAKM,MAAMwD,OAAON,OAAO/K,EAAEuP,SAASjW,MAAM,EAAE0G,EAAE6O,GAAG,KAAK,kBAAkBpO,IAAIA,EAAE8G,EAAKM,MAAM4C,WAAWM,OAAOtK,IAAIV,EAAE,IAAIwH,EAAKC,OAAOxH,EAAEwH,QAAQ3R,GAAG4K,EAAE8G,EAAKI,KAAK3H,EAAE2H,MAAMmC,QAAQ/J,EAAEC,EAAEwP,GAAGxP,EAAEgP,GAAGvO,EAAET,EAAE8O,IAAIvO,EAAEX,EAAEc,EAAEV,GAAGU,EAAEzK,IAAIJ,EAAS,IAAIuD,EAAEwW,IAAInP,EAAE8G,EAAKM,MAAM4C,WAAWC,SAASjK,IAAIqJ,QAAQ,SAASpK,EAAEC,EAAEI,EAAElK,GAAG,IAAImK,EAAEuH,EAAKmH,KAAK,OAAO1O,EAAEyI,EAAE/I,EAAEM,EAAE6P,OAAOlQ,GAAGI,EAAElK,IAAI4Z,OAAO,SAAS9P,GAAG,IAAIC,EAAEI,EAAE,IAAIN,EAAE,GAAG,IAAIE,KAAKD,EAAG,GAAGA,EAAExJ,eAAeyJ,GAAI,OAAOA,EAAEkQ,MAAM,iBAAiBxO,EAAE,IAAIiG,EAAKO,UAAUG,QAAQ,uCAAuCjI,GAAGN,EAAE,IAAIE,EAAE,KAAKF,EAAE,WAAWC,EAAEC,IAAI,IAAI,SAAS,IAAI,UAAUI,GAAGL,EAAEC,GAAG,MAAM,IAAI,SAASI,GAAG,IAAI8K,OAAOnL,EAAEC,IAAI,IAAI,MAAM,IAAI,SAASI,GAAG,IAAIuH,EAAKM,MAAMwD,OAAOX,SAAS/K,EAAEC,GAAG,GAAG,IAAI,MAAM,QAAQ0B,EAAE,IAAIiG,EAAKO,UAAUI,IAAI,kCAAoC,OAAOlI,EAAE,KAAK6P,OAAO,SAASlQ,IAAGA,EAAEA,EAAEyL,QAAQ,MAAM,KAAM0E,MAAM,aAAaxO,EAAE,IAAIiG,EAAKO,UAAUG,QAAQ,kCAAkCtI,EAAEA,EAAEyL,QAAQ,WAAW,IAAI2E,MAAM,KAAK,IAAS/P,EAAEN,EAAPE,EAAE,GAAO,IAAII,EAAE,EAAEA,EAAEL,EAAE5J,OAAOiK,KAAMN,EAAEC,EAAEK,GAAG8P,MAAM,yEAAyExO,EAAE,IAAIiG,EAAKO,UAAUG,QAAQ,kCAAkCrI,EAAEF,EAAE,IAAIA,EAAE,GAAGqH,SAASrH,EAAE,GAAG,IAAIA,EAAE,GAAGoQ,MAAM,kBAAkBvI,EAAKM,MAAMwD,OAAON,OAAOrL,EAAE,IAAIsL,SAAStL,EAAE,IAAI,OAAOE,GAAGA,EAAE,SAASD,EAAEC,EAAEI,GAAiB,GAAdL,IAAIuD,IAAIvD,EAAE,IAAOC,IAAIsD,EAAG,OAAOvD,EAAE,IAAI,IAAID,KAAKE,EAAGA,EAAEzJ,eAAeuJ,KAAKM,GAAIL,EAAED,KAAKwD,GAAGvD,EAAED,KAAKE,EAAEF,IAAK4B,EAAE,IAAIiG,EAAKO,UAAUG,QAAQ,kCAAkCtI,EAAED,GAAGE,EAAEF,IAAI,OAAOC,GAAGqQ,GAAG,SAASrQ,EAAEC,GAAG,IAASF,EAALM,EAAE,GAAK,IAAIN,KAAKC,EAAGA,EAAExJ,eAAeuJ,IAAIC,EAAED,KAAKE,EAAEF,KAAKM,EAAEN,GAAGC,EAAED,IAAI,OAAOM,GAAGiQ,GAAG,SAAStQ,EAAEC,GAAG,IAASF,EAALM,EAAE,GAAK,IAAIN,EAAE,EAAEA,EAAEE,EAAE7J,OAAO2J,IAAKC,EAAEC,EAAEF,MAAMwD,IAAIlD,EAAEJ,EAAEF,IAAIC,EAAEC,EAAEF,KAAK,OAAOM,IAAIuH,EAAKN,QAAQM,EAAKmH,KAAKzH,QAAQM,EAAKuC,QAAQvC,EAAKmH,KAAK5E,QAAQvC,EAAKK,KAAKsI,GAAG,GAAG3I,EAAKK,KAAKsH,aAAa,SAASvP,EAAEC,GAAG,IAAmBF,EAAfM,EAAEuH,EAAKK,KAAKsI,GAAgN,OAAnMxQ,GAARE,EAAEA,GAAG,IAAOgP,MAAM,KAAqBlP,GAAhBM,EAAEA,EAAEL,GAAGK,EAAEL,IAAI,IAAOD,GAAGM,EAAEN,IAAI,CAACyQ,UAAUvQ,EAAEqP,MAAMrP,EAAEqP,KAAKlZ,OAAO6J,EAAEqP,KAAK3V,MAAM,GAAGiO,EAAKnB,OAAO6G,YAAY,EAAE,KAAIjN,EAAEJ,EAAEqP,OAAO/L,EAAExD,EAAEyQ,UAAUvQ,EAAEqP,MAAUvP,EAAEM,IAAIuH,EAAKK,KAAK8E,OAAO/M,EAAEK,EAAEJ,EAAEgP,MAAY,CAAC3Y,IAAIyJ,EAAEM,GAAG1G,MAAM,GAAG2V,KAAKjP,EAAE1G,MAAM,MAG/wsBsH,GAAPf,EAAoW0H,GAAzVM,MAAMuI,MAAMvQ,EAAEgI,MAAMuI,OAAO,IAAK1F,SAAS9J,EAAE8J,UAAU,SAAS5K,GAAG,IAAmCH,EAAEC,EAAjCK,EAAE,GAAGP,EAAEG,EAAEkK,SAASxE,UAAUzF,GAAO,IAAIH,EAAE,EAAEA,EAAED,EAAE,EAAEC,IAAgB,KAAL,EAAFA,KAAUC,EAAEE,EAAEH,EAAE,IAAGM,EAAEmJ,KAAKxJ,IAAI,IAAIA,IAAI,EAAE,OAAOK,GAAGW,EAAEmK,OAAOnK,EAAEmK,QAAQ,SAASjL,GAAG,IAASH,EAALM,EAAE,GAAKL,EAAE,EAAE,IAAID,EAAE,EAAEA,EAAEG,EAAE/J,OAAO4J,IAAKC,EAAEA,GAAG,EAAEE,EAAEH,GAAc,KAAL,EAAFA,KAAUM,EAAEmJ,KAAKxJ,GAAGA,EAAE,GAAiD,OAAzC,EAAFD,GAAKM,EAAEmJ,KAAKvJ,EAAEkK,SAASK,QAAQ,GAAK,EAAFzK,GAAKC,IAAWK,GAG/V,WAAW,IAAmRA,EAA/QJ,GAAE,IAAIiG,MAAOC,UAAU,SAASjG,EAAEF,EAAED,EAAED,EAAEO,GAAG,GAA+B,oBAArBL,EAAEgO,iBAA+BhO,EAAEgO,iBAAiBjO,EAAED,EAAEO,OAAO,CAAC,IAAGL,EAAEiO,YAA0C,MAAM,IAAIxT,MAAM4M,EAAQoJ,OAAOC,aAAa,oBAAoB3Q,EAAE,UAA/FC,EAAEiO,YAAY,KAAKlO,EAAED,IAAsF4H,EAAMA,IAAuBrH,EAAE,GAAU,SAASF,EAAEC,EAAEJ,GAAG,GAAO,SAAJG,EAAo3C,OAAx2CuH,EAAM1H,EAAE,QAAQE,EAAEE,EAAE,UAAS,SAASnK,GAAGyR,EAAM1H,EAAE,oBAAoB0H,EAAM,MAAM1H,EAAE,MAAM,IAAI0H,EAAM,MAAM1H,EAAE,YAA8wD,SAAWG,GAAG,IAAIyB,EAAE,WAAW,MAAM,IAAOpJ,OAAOmY,QAAoC,mBAArBnY,OAAOmY,OAAOC,QAAmBhP,EAAE,SAAS3I,GAAG,OAAOT,OAAOmY,OAAOC,MAAM3X,EAAE,YAAsP,IAA3O,IAAIO,EAAE2G,EAAEE,EAAE,EAAEqB,EAAE,GAAG2D,EAAE,CAAC,cAAc,YAAY,cAAc,aAAa,UAAU,cAAc,aAAa,UAAU,WAAW,WAAW,YAAY,UAAU,aAAa,WAAW,YAAYxE,EAAE,MAAM6C,EAAE,MAAMJ,EAAE+B,EAAElP,OAAqBqD,GAAGA,IAAIA,EAAEqX,iBAAgB,CAA4E,IAAvE,IAAUlQ,EAANG,EAAEwC,EAAMlD,GAAG5G,EAAEsX,UAAUtX,EAAEuX,SAAS,IAAIC,cAAcxJ,UAAU,EAAE,GAAS1G,KAAKhB,EAAEuF,EAAEvE,GAAMtH,EAAEI,QAA2ByG,IAAIqB,EAAxB5B,EAAEA,GAAItG,IAAI2G,EAAGU,EAAE6C,GAAGtD,GAAWsB,EAAE5B,IAAI,EAAE4B,EAAE5B,MAAM,IAAI6B,EAAEC,EAAEpI,GAAG,GAAc,kBAAJmI,EAAc,IAAI,IAAI7B,KAAK6B,EAAMA,EAAEpL,eAAeuJ,KAAIa,EAAEgB,EAAE7B,GAAG3J,OAA2BuL,EAApB5B,EAAEA,GAAItG,IAAI2G,EAAGU,EAAE6C,GAAGtD,GAAOsB,EAAE5B,IAAI,EAAE4B,EAAE5B,IAAIa,EAAEN,GAAGM,GAAI,IAAInH,EAAEyX,WAAY,MAAMzX,EAAEA,EAAEyX,WAAW,IAAIjR,EAAE,CAAC,SAASK,GAAG,IAAI,IAAIN,KAAK2B,EAAMA,EAAEnL,eAAewJ,IAAI2B,EAAE3B,GAAG,GAAGC,EAAEwJ,KAAKzJ,EAAE,IAAI2B,EAAE3B,IAAK,OAAOC,EAAEkR,KAAK,KAAjlFlQ,CAAEZ,IAAI,MAAMO,GAAG+G,EAAM,MAAM1H,EAAE,YAAY,WAAS,GAAME,EAAEE,EAAE,SAAQ,WAAWsH,EAAM1H,EAAE,mBAAmB0H,EAAM,MAAM1H,EAAE,SAAO,GAAME,EAAEE,EAAE,SAAQ,WAAWsH,EAAM1H,EAAE,mBAAmB0H,EAAM,MAAM1H,EAAE,SAAO,GAAME,EAAEE,EAAE,QAAO,WAAWsH,EAAM1H,EAAE,kBAAkB0H,EAAM,MAAM1H,EAAE,SAAO,GAAME,EAAEE,EAAE,cAAa,WAAWsH,EAAM1H,EAAE,wBAAwB0H,EAAM,MAAM1H,EAAE,SAAO,GAAME,EAAEE,EAAE,YAAW,WAAWsH,EAAM1H,EAAE,sBAAsB0H,EAAM,MAAM1H,EAAE,SAAO,GAAME,EAAEE,EAAE,eAAc,WAAWsH,EAAM1H,EAAE,yBAAyB0H,EAAM,MAAM1H,EAAE,SAAO,GAAME,EAAEE,EAAE,SAAQ,SAASnK,GAAiB,IAAXA,EAAEkb,QAAazJ,EAAM,MAAM1H,EAAE,MAAyB,IAAX/J,EAAEkb,QAAazJ,EAAM,MAAM1H,EAAE,MAAyB,IAAX/J,EAAEkb,SAAazJ,EAAM,MAAM1H,EAAE,cAAWE,EAAEE,EAAE,WAAU,SAASnK,GAA4B,OAAzByR,EAAM1H,EAAE,iBAAwB/J,GAAGA,EAAEkb,SAAS,KAAK,EAAEzJ,EAAM,MAAM1H,EAAE,MAAM,MAAM,KAAK,GAAG0H,EAAM,MAAM1H,EAAE,MAAM,MAAM,KAAK,GAAG0H,EAAM,MAAM1H,EAAE,MAAM,MAAM,KAAK,GAAG0H,EAAM,MAAM1H,EAAE,MAAM,MAAM,KAAK,GAAG0H,EAAM,MAAM1H,EAAE,MAAM,MAAM,KAAK,GAAG0H,EAAM,MAAM1H,EAAE,MAAM,MAAM,KAAK,GAAG0H,EAAM,MAAM1H,EAAE,MAAM,MAAM,KAAK,GAAG0H,EAAM,MAAM1H,EAAE,MAAM,MAAM,QAAW/J,EAAEkb,SAAS,IAAIlb,EAAEkb,SAAS,IAAIlb,EAAEkb,SAAS,IAAIlb,EAAEkb,SAAS,IAAKzJ,EAAM,MAAM1H,EAAE,MAAc/J,EAAEkb,SAAS,IAAIlb,EAAEkb,SAAS,GAAIzJ,EAAM,MAAM1H,EAAE,OAAW0H,EAAM,MAAM1H,EAAE,MAAM0H,EAAM,MAAM1H,EAAE,UAAU/J,EAAEkb,cAAkB,GAAa,GAAO,QAAJhR,EAAH,CAA4B,GAAO,QAAJA,EAAU,CAAC,IAAIU,EAAET,EAAE,WAAeL,GAAG,IAAImG,MAAOC,UAAWlG,EAAuL,OAArLF,EAAE8B,KAAK4I,MAAM1K,EAAE,KAASM,EAAE9J,eAAesK,GAAsBR,EAAEQ,IAAI,IAAIb,EAAE,IAAID,EAAlCM,EAAEQ,GAAGb,EAAE,IAAID,OAA4BM,EAAEQ,GAAG1K,OAAO,OAAMkK,EAAEQ,GAAGR,EAAEQ,GAAG2G,UAAUnH,EAAEQ,GAAG1K,OAAO,MAAMkK,EAAEQ,GAAGR,EAAEQ,GAAG2G,UAAUnH,EAAEQ,GAAGpJ,QAAQ,KAAK,KAAU,GAAO,WAAJ0I,EAAiME,EAAE9J,eAAe4J,GAAgBE,EAAEF,KAAdE,EAAEF,GAAG,OAA7M,IAAI,IAAIL,KAAKO,EAAU,WAAJP,GAAkB,gBAAJA,GAAuB,eAAJA,GAAsB,mBAAJA,GAA0B,eAAJA,GAAsB,QAAJA,GAAuBO,EAAE9J,eAAeuJ,KAAIM,EAAEN,GAAG,GAAGO,EAAEP,SAA/bO,EAAED,GAAGJ,IAA80CxH,SAASA,OAAOyV,aAAazV,OAAOwV,oBAAmB9N,EAAE1H,OAAO,SAAQ,WAAWkP,EAAM,YAAelP,OAAOwF,UAAuC,iBAAtBxF,OAAOwF,SAASoT,MAAgB1J,EAAM,MAAM,WAAWlP,OAAOwF,SAASoT,SAASlR,EAAE1H,OAAO,QAAO,WAAWkP,EAAM,kBAA3wG,GAGV,IAAI2J,EAAQ5R,EAAK4R,MAAQ5R,EAAK4R,OAAS,GAEnChK,EAAUgK,EAAMhK,QAAUgK,EAAMhK,SAAW,CAE3CiK,iBAAmB,SAAWjb,EAAKkb,GAC/B,OAAO,IAAIC,EAAYnb,EAAKkb,UAO/B,KAF6B,EAAF,WACxB,OAAOlK,GACV,MA7COzJ,UA2CkB,OAEzB,aAOLyJ,EAAQoJ,OAASpJ,EAAQoJ,QAAU,GAGnCpJ,EAAQoK,QAAU,SAKlB,IASQC,EATJC,EAAc,GAOlBA,EAAYC,WAEJF,EAAY,GAET,WACH,IAAIG,EAAO3b,UACP4b,EAAO5b,UAAUC,OAEjB4b,EAAaD,EAAO,EAAID,EAAM,GAAMnb,KAAKsb,WAE7C,GAAKC,MAAO9K,SAAU4K,EAAY,KAC9B,OAAO,EAGX,IAAIG,EAAWH,EAAW5b,OACtBgc,EAAsB,EAAXD,EACXE,EAAM,EAEV,GAAqC,qBAA1BV,EAAUK,GAA6B,CAC1CG,GAAY,IACZxK,EAAM,aAGV,IAAM,IAAI2K,EAAQ,EAAGA,EAAQH,EAAUG,IAAU,CAC7C,IAAIC,EAAQnL,SAAU4K,EAAWhR,OAAQsR,GAAS,IAC/B,EAARA,EAAcF,IACrBG,GAAS,GACI,IACTA,GAAS,GAEjBF,GAAOE,EAGNF,EAAM,KAAO,GACd1K,EAAM,eACNgK,EAAUK,IAAc,IAExBrK,EAAM,iBACNgK,EAAUK,IAAc,GAIhC,IAAIQ,EAAiB,EAErB,IAAK,IAAItc,KAAKyb,EACNA,EAAUnb,eAAeN,IAAMA,EAAEE,SAAW+b,GAC5CK,IAMR,OAFA7K,EAAM,MAAO,sBAAuB6K,GAE7Bb,EAAUK,KAIzBJ,EAAYa,YAAc,SAAWC,GACjC,UAAUA,GAAO,IAAIjH,QAAQ,SAAS,IAAI0E,MAAM,iBAAkByB,EAAYC,UAAUa,KAG5Fd,EAAYe,SAAW,SAAWD,GAC9B,SAAQA,GAAOA,EAAIvC,OAASuC,EAAIvC,MAAO,eAG3CyB,EAAYgB,UAAY,SAAWF,GAE/B,IAAKA,IAAQA,EAAIvC,QAAUuC,EAAIvC,MAAM,YACjC,OAAO,EAGX,IAAI0C,EAAOzL,SAASsL,EAAK,IAAKI,GAAc,IAAK3M,MAAQ4M,cAEzD,OAAOF,GAAQC,EAAc,GAAKD,GAAQC,EAAc,IAG5DlB,EAAYoB,WAAa,SAAWN,GAEhC,IAAIO,GAASP,GAAO,IAAIjH,QAAQ,UAAW,MAE3C,SAAQwH,EAAM9C,MAAO,uBAA0B/I,SAAU6L,EAAO,KAAQ,GAAK7L,SAAU6L,EAAO,KAAQ,KAG1GrB,EAAYsB,gBAAkB,SAAWR,GACrC,SAAQA,GAAOA,EAAIvC,OAASuC,EAAIvC,MAAM,QAG1CyB,EAAYuB,wBAA0B,SAAWT,GAC7C,GAAmB,kBAARA,EACP,OAAO,EAEX,IAAI3R,EAAI2R,EAAIvC,MAAM,+BAClB,SAAQpP,IAAM,GAAKA,EAAE,IAAIoP,MAAM,oBAAsB,GAAKpP,EAAE,IAAIoP,MAAM,yBAA2B,GAAKpP,EAAE,IAAIoP,MAAM,gCAGtHyB,EAAYwB,wBAA0B,SAAWV,GAC7C,GAAmB,kBAARA,EACP,OAAO,EAGX,IAAIW,EAAS,0CAEb,QAAKX,EAAIvC,MAAMkD,IAIQX,EAAIjH,QAAQ4H,EAAQ,IAAI5H,QAAQ,WAAY,IAE3C0E,MAAM,kDAGlCyB,EAAY0B,oBAAsB,SAAUZ,GACxC,GAAmB,kBAARA,EACP,OAAO,EAEX,IAAIa,EAAQb,EAAItC,MAAM,KAEtB,QAAyB,IAAjBmD,EAAMnd,SAAgBwb,EAAYuB,wBAAwBI,EAAM,MAAO3B,EAAYwB,wBAAwBG,EAAM,MAG7H,IAAI9B,EAAa,SAAWnb,EAAKkb,GAC7B,IACI5J,EAAKnB,OAAOiH,kBACd,MAAQzN,IA8BV,GArBAtJ,KAAKL,IAAMA,EAEXK,KAAK6a,QAAUA,GAAW,GAG0B,qBAAxC7a,KAAK6a,QAAQgC,yBACrB7c,KAAK6a,QAAQgC,wBAAyB,GAGM,qBAApC7c,KAAK6a,QAAQiC,2BACd9c,KAAK6a,QAAQiC,mBAGyB,qBAArC9c,KAAK6a,QAAQkC,sBACrB/c,KAAK6a,QAAQkC,oBAAsB,SAGS,qBAApC/c,KAAK6a,QAAQmC,2BACdhd,KAAK6a,QAAQmC,mBAGmB,kBAA/Bhd,KAAK6a,QAAQoC,cAA6B,CAClD,IAAIC,EAAe,GACnBld,KAAK6a,QAAQoC,cAAcnI,QAAQ,QAAQ,SAAS1K,GAIhD,OAHIA,EAAE3K,OAAS,IAAM8b,MAAM9K,SAASrG,EAAG,MACnC8S,EAAapK,KAAK1I,GAEfA,KAGP8S,EAAazd,OAAS,IACtBO,KAAK6a,QAAQiC,mBAAqB,IAAIK,OAAO,SAAWD,EAAa1C,KAAK,KAAO,UAGxC,qBAA/Bxa,KAAK6a,QAAQoC,sBACpBjd,KAAK6a,QAAQoC,cAGxB,GAAgD,kBAArCjd,KAAK6a,QAAQkC,oBAAkC,CAEtD,IAAIK,EAAY,GAEhBpd,KAAK6a,QAAQkC,oBAAoBjI,QAAQ,QAAQ,SAAS1K,GAItD,OAHIA,EAAE3K,OAAS,IAAM8b,MAAM9K,SAASrG,EAAG,MACnCgT,EAAUtK,KAAK1I,GAEZA,KAGPgT,EAAU3d,OAAS,IACnBO,KAAK6a,QAAQmC,mBAAqB,CAC9BK,QAAU,IAAIF,OAAO,SAAWC,EAAU5C,KAAK,KAAO,KACtD8C,eAAiB,WAMtBtd,KAAK6a,QAAQkC,oBAEpB/L,EAAM,oBASV8J,EAAWlb,UAAU2d,aAAe,WAEhC,IAAIpT,EAAInK,KAAKL,IAAI8Z,MAAO,KAExB,GAAiB,GAAZtP,EAAE1K,OACH,KAAM,uBAGV,IAAIqP,EAAM3E,EAAG,GACT+C,EAAM/C,EAAG,GAGTqT,EAAM,IAAIvN,EAGd,OAFAuN,EAAIjN,UAAWrD,EAAK4B,GAEb0O,GAUX1C,EAAWlb,UAAU6d,aAAe,WAChC,OAAO,IAAIC,GAWf5C,EAAWlb,UAAU+Q,QAAU,SAAWgN,GAEtC,IAAIlI,EAAO,GAEX,IAAK,IAAIlW,KAAKoe,EACLA,EAAS9d,eAAeN,KACzBkW,EAAKlW,GAAKoe,EAASpe,IAI3B,IAAIie,EAAKlK,EAAKpC,EAAQ0M,EAAUC,EAAmBC,EAAmB,GAqBtE,GAnB2B,qBAAhBrI,EAAKxN,SACZ6V,EAAiB7V,OAASwN,EAAKxN,QAEX,qBAAbwN,EAAKsI,MACZD,EAAiBC,IAAMtI,EAAKsI,KAEA,qBAArBtI,EAAKuI,cACZF,EAAiBG,MAAQxI,EAAKuI,aAEH,qBAApBvI,EAAKyI,aACZJ,EAAiB5B,KAAOzG,EAAKyI,YAEF,qBAApBzI,EAAK0I,aACZL,EAAiBK,WAAa1I,EAAK0I,YAEJ,qBAAxB1I,EAAK2I,iBACZN,EAAiBM,eAAiB3I,EAAK2I,iBAGH,IAAnCpe,KAAK6a,QAAQwD,oBAAyE,IAA1Cre,KAAKse,SAASR,GAAkBS,MAE9E,OAAO,EAIVvN,EAAM,SAAUyE,GAEhB,IACIA,EAAK+I,QAxVgC,GAyVvC,MAAOlV,IAYT,OARAkU,EAAMxd,KAAKud,eAGXrM,GAFAoC,EAAMtT,KAAKyd,gBAEE9M,QAAS8N,KAAKC,UAAWjJ,IACtCmI,EAAW3M,EAAKM,MAAMuI,MAAM1F,SAAUd,EAAI3T,KAC1Cke,EAAYL,EAAI3M,YAAa+M,GAGtB,CAFE,WAAajN,EAAQoK,QAAU,IAEvB8C,EAAW,IAAK3M,GAASsJ,KAAM,KAGpDM,EAAWlb,UAAU0e,SAAW,SAAW7I,GACvC,IAAIkJ,EAAS,CAEbA,OAAe,GAEf,GAAqB,kBAATlJ,EAER,OADAkJ,EAAOJ,OAAQ,EACRI,EAGX,IAAM,IAAIC,KAASnJ,EAEf,GAAMA,EAAK5V,eAAgB+e,IAAkC,qBAAhBnJ,EAAKmJ,GAAlD,CAIA,IAAI7C,EAAMtG,EAAMmJ,GAMhB,GAJK5e,KAAK6a,QAAS+D,EAAQ,sBACvB7C,EAAMA,EAAIjH,QAAS,MAAO,MAGzB9U,KAAK6a,QAAS+D,EAAQ,kBAA3B,CAIA,IAAM,IAAIC,KAAgBpJ,EACtB,GAAKA,EAAK5V,eAAegf,GAAgB,CAErC,IAAIC,EAAiB9e,KAAK6a,QAAQ+D,EAAQ,YAAcC,GACpDE,EAAe/e,KAAK6a,QAAQ+D,EAAQ,YAAcC,GAEtD,GAAKC,GAAkBrJ,EAAKoJ,GAAcrF,MAAMsF,GAAiB,CAC7DH,EAAOC,IAAS,EAChB,SACG,GAAIG,GAAgBA,EAAa1B,SAAW0B,EAAazB,gBAAkB7H,EAAKoJ,GAAcrF,MAAMuF,EAAa1B,UAChHtB,EAAItc,SAAWsf,EAAazB,eAAiB,CAC7CqB,EAAOC,IAAS,EAChB,UAShB,GAAID,EAAO9e,eAAe+e,GACtBD,EAAOJ,MAAQI,EAAOJ,OAASI,EAAOC,QAI1C,OAASA,GACT,IAAK,SACDD,EAAO1W,OAASgT,EAAYa,YAAaC,GACzC4C,EAAOK,KAAOL,EAAO1W,OACrB0W,EAAOJ,MAAQI,EAAOJ,OAASI,EAAO1W,OACtC,MACJ,IAAK,aACL,IAAK,OACD0W,EAAOzC,KAAOjB,EAAYgB,UAAWF,GACrC4C,EAAOT,WAAaS,EAAOzC,KAC3ByC,EAAOJ,MAAQI,EAAOJ,OAASI,EAAOzC,KACtC,MACJ,IAAK,MACDyC,EAAOZ,IAAM9C,EAAYe,SAAUD,GACnC4C,EAAOJ,MAAQI,EAAOJ,OAASI,EAAOZ,IACtC,MACJ,IAAK,cACL,IAAK,QACDY,EAAOV,MAAQhD,EAAYoB,WAAYN,GACvC4C,EAAOX,YAAcW,EAAOV,MAC5BU,EAAOJ,MAAQI,EAAOJ,OAASI,EAAOV,MACtC,MACJ,IAAK,aACDU,EAAOR,WAAalD,EAAYsB,gBAAgBR,GAChD4C,EAAOJ,MAAQI,EAAOJ,OAASI,EAAOR,WACtC,MACJ,IAAK,iBACDQ,EAAOP,eAAiBnD,EAAY0B,oBAAoBZ,GACxD4C,EAAOJ,MAAQI,EAAOJ,OAASI,EAAOP,eACtC,MACJ,QACIO,EAAOM,QAAUN,EAAOM,SAAW,GACnCN,EAAOM,QAAQnM,KAAM8L,GACrBD,EAAOJ,OAAQ,IAIvB,OAAOI,GAaX,IAAIjB,EAAS,aAIbA,EAAO9d,UAAY,CAEfqD,YAAcya,EAEd/d,IAAMsR,EAAKnB,OAAO6G,YAAa,EAAG,GAElChG,QAAU,SAAWuO,GAEjB,OAAOlf,KAAKmf,cAAeD,EAAMjO,EAAKnB,OAAO6G,YAAa,EAAG,KAIjEwI,cAAgB,SAAWD,EAAMxG,GAE7B,IAAIpF,EAAK8L,EAAMlO,EAAQmO,EAOvB,OALA/L,EAAM,IAAIrC,EAAKC,OAAOoC,IAAKtT,KAAKL,KAChCyf,EAAOnO,EAAKM,MAAM4C,WAAWM,OAAQyK,GACrChO,EAASD,EAAKI,KAAKkE,IAAI5E,QAAS2C,EAAK8L,EAAM1G,GAC3C2G,EAAWpO,EAAKwC,SAASJ,OAAQqF,EAAIxH,GAE9BD,EAAKM,MAAMwD,OAAOX,SAAUiL,KA1e/C,CAgfIrf,KAAM,4CCzmBV,MAAMsf,EAAOpY,EAEboY,EAAKC,OAAS,EAAQ,OAEtBD,EAAKE,OAAS,gBACdF,EAAKG,KAAO,EAAQ,OACpBH,EAAKI,UAAY,EAAQ,OACzBJ,EAAKK,SAAW,EAAQ,OACxBL,EAAKM,SAAW,EAAQ,2CCRxB,MAAMA,EAAW,EAAQ,OACnBD,EAAW,EAAQ,OACnBE,EAAW,EAAQ,OAQzB,SAASC,EAAO5c,EAAMiD,GACpBnG,KAAKkD,KAAOA,EACZlD,KAAKmG,KAAOA,EAEZnG,KAAK2f,SAAW,GAChB3f,KAAK4f,SAAW,GAXN1Y,EAERsY,OAAS,SAAgBtc,EAAMiD,GACjC,OAAO,IAAI2Z,EAAO5c,EAAMiD,IAW1B2Z,EAAOlgB,UAAUmgB,aAAe,SAAqBC,GACnD,MAAM9c,EAAOlD,KAAKkD,KAElB,SAAS+c,EAAUC,GACjBlgB,KAAKmgB,WAAWD,EAAQhd,GAO1B,OALA2c,EAASI,EAAWD,GACpBC,EAAUrgB,UAAUugB,WAAa,SAAoBD,EAAQhd,GAC3D8c,EAAKlgB,KAAKE,KAAMkgB,EAAQhd,IAGnB,IAAI+c,EAAUjgB,OAGvB8f,EAAOlgB,UAAUwgB,YAAc,SAAqBC,GAKlD,OAJAA,EAAMA,GAAO,MAERrgB,KAAK2f,SAAS9f,eAAewgB,KAChCrgB,KAAK2f,SAASU,GAAOrgB,KAAK+f,aAAaJ,EAASU,KAC3CrgB,KAAK2f,SAASU,IAGvBP,EAAOlgB,UAAU2Z,OAAS,SAAgB9D,EAAM4K,EAAKxF,GACnD,OAAO7a,KAAKogB,YAAYC,GAAK9G,OAAO9D,EAAMoF,IAG5CiF,EAAOlgB,UAAU0gB,YAAc,SAAqBD,GAKlD,OAJAA,EAAMA,GAAO,MAERrgB,KAAK4f,SAAS/f,eAAewgB,KAChCrgB,KAAK4f,SAASS,GAAOrgB,KAAK+f,aAAaH,EAASS,KAC3CrgB,KAAK4f,SAASS,IAGvBP,EAAOlgB,UAAUuZ,OAAS,SAAgB1D,EAAM4K,EAAoBE,GAClE,OAAOvgB,KAAKsgB,YAAYD,GAAKlH,OAAO1D,EAAM8K,wCCrD5C,MAAMV,EAAW,EAAQ,OACnBW,EAAW,WACXC,EAAS,eAEf,SAASC,EAAcjB,EAAM5E,GAC3B2F,EAAS1gB,KAAKE,KAAM6a,GACf4F,EAAOE,SAASlB,IAKrBzf,KAAKyf,KAAOA,EACZzf,KAAK4gB,OAAS,EACd5gB,KAAKP,OAASggB,EAAKhgB,QANjBO,KAAK8D,MAAM,oBA8Ef,SAAS+c,EAActd,EAAOgd,GAC5B,GAAIle,MAAMO,QAAQW,GAChBvD,KAAKP,OAAS,EACdO,KAAKuD,MAAQA,EAAMoD,KAAI,SAASma,GAI9B,OAHKD,EAAcE,gBAAgBD,KACjCA,EAAO,IAAID,EAAcC,EAAMP,IACjCvgB,KAAKP,QAAUqhB,EAAKrhB,OACbqhB,IACN9gB,WACE,GAAqB,kBAAVuD,EAAoB,CACpC,KAAM,GAAKA,GAASA,GAAS,KAC3B,OAAOgd,EAASzc,MAAM,gCACxB9D,KAAKuD,MAAQA,EACbvD,KAAKP,OAAS,OACT,GAAqB,kBAAV8D,EAChBvD,KAAKuD,MAAQA,EACbvD,KAAKP,OAASghB,EAAO3W,WAAWvG,OAC3B,KAAIkd,EAAOE,SAASpd,GAIzB,OAAOgd,EAASzc,MAAM,4BAA8BP,GAHpDvD,KAAKuD,MAAQA,EACbvD,KAAKP,OAAS8D,EAAM9D,QAzFxBogB,EAASa,EAAeF,GACxBtZ,EAAQ,EAAgBwZ,EAExBA,EAAcM,gBAAkB,SAAyBvL,GACvD,GAAIA,aAAgBiL,EAClB,OAAO,EAgBT,MAZqC,kBAATjL,GAC1BgL,EAAOE,SAASlL,EAAKgK,OACK,kBAA1BhK,EAAKxS,YAAYC,MACM,kBAAhBuS,EAAKmL,QACW,kBAAhBnL,EAAKhW,QACS,oBAAdgW,EAAKwL,MACY,oBAAjBxL,EAAKyL,SACY,oBAAjBzL,EAAK0L,SACc,oBAAnB1L,EAAK2L,WACS,oBAAd3L,EAAK4L,MACQ,oBAAb5L,EAAK6D,KAKhBoH,EAAc9gB,UAAUqhB,KAAO,WAC7B,MAAO,CAAEL,OAAQ5gB,KAAK4gB,OAAQL,SAAUC,EAAS5gB,UAAUqhB,KAAKnhB,KAAKE,QAGvE0gB,EAAc9gB,UAAUshB,QAAU,SAAiBD,GAEjD,MAAMK,EAAM,IAAIZ,EAAc1gB,KAAKyf,MAOnC,OANA6B,EAAIV,OAASK,EAAKL,OAClBU,EAAI7hB,OAASO,KAAK4gB,OAElB5gB,KAAK4gB,OAASK,EAAKL,OACnBJ,EAAS5gB,UAAUshB,QAAQphB,KAAKE,KAAMihB,EAAKV,UAEpCe,GAGTZ,EAAc9gB,UAAUuhB,QAAU,WAChC,OAAOnhB,KAAK4gB,SAAW5gB,KAAKP,QAG9BihB,EAAc9gB,UAAUwhB,UAAY,SAAmBG,GACrD,OAAIvhB,KAAK4gB,OAAS,GAAK5gB,KAAKP,OACnBO,KAAKyf,KAAK2B,UAAUphB,KAAK4gB,UAAU,GAEnC5gB,KAAK8D,MAAMyd,GAAQ,0BAG9Bb,EAAc9gB,UAAUyhB,KAAO,SAAcvH,EAAOyH,GAClD,KAAMvhB,KAAK4gB,OAAS9G,GAAS9Z,KAAKP,QAChC,OAAOO,KAAK8D,MAAMyd,GAAQ,yBAE5B,MAAMD,EAAM,IAAIZ,EAAc1gB,KAAKyf,MAQnC,OALA6B,EAAIE,eAAiBxhB,KAAKwhB,eAE1BF,EAAIV,OAAS5gB,KAAK4gB,OAClBU,EAAI7hB,OAASO,KAAK4gB,OAAS9G,EAC3B9Z,KAAK4gB,QAAU9G,EACRwH,GAGTZ,EAAc9gB,UAAU0Z,IAAM,SAAa2H,GACzC,OAAOjhB,KAAKyf,KAAKzc,MAAMie,EAAOA,EAAKL,OAAS5gB,KAAK4gB,OAAQ5gB,KAAKP,SA2BhEyH,EAAQ,EAAgB2Z,EAExBA,EAAcE,gBAAkB,SAAyBtL,GACvD,GAAIA,aAAgBoL,EAClB,OAAO,EAST,MALqC,kBAATpL,GACA,kBAA1BA,EAAKxS,YAAYC,MACM,kBAAhBuS,EAAKhW,QACS,oBAAdgW,EAAK+E,MAKhBqG,EAAcjhB,UAAU4a,KAAO,SAAciH,EAAKb,GAMhD,OALKa,IACHA,EAAMhB,EAAOiB,MAAM1hB,KAAKP,SACrBmhB,IACHA,EAAS,GAES,IAAhB5gB,KAAKP,SAGL4C,MAAMO,QAAQ5C,KAAKuD,OACrBvD,KAAKuD,MAAMgD,SAAQ,SAASua,GAC1BA,EAAKtG,KAAKiH,EAAKb,GACfA,GAAUE,EAAKrhB,WAGS,kBAAfO,KAAKuD,MACdke,EAAIb,GAAU5gB,KAAKuD,MACU,kBAAfvD,KAAKuD,MACnBke,EAAIE,MAAM3hB,KAAKuD,MAAOqd,GACfH,EAAOE,SAAS3gB,KAAKuD,QAC5BvD,KAAKuD,MAAMqe,KAAKH,EAAKb,GACvBA,GAAU5gB,KAAKP,SAdRgiB,uCCpIX,MAAMhC,EAAOvY,EAEbuY,EAAKe,SAAW,WAChBf,EAAKiB,cAAgB,WACrBjB,EAAKoB,cAAgB,WACrBpB,EAAKoC,KAAO,EAAQ,2CCLpB,MAAMrB,EAAW,WACXK,EAAgB,WAChBH,EAAgB,WAChBoB,EAAS,EAAQ,OAGjBC,EAAO,CACX,MAAO,QAAS,MAAO,QAAS,QAAS,OACzC,UAAW,UAAW,QAAS,OAAQ,MAAO,UAC9C,SAAU,SAAU,UAAW,SAAU,WAAY,SAAU,YAC/D,SAAU,SAAU,WAAY,SAAU,SAAU,UAAW,YAI3DC,EAAU,CACd,MAAO,MAAO,MAAO,WAAY,WAAY,WAAY,MAAO,SAChE,MAAO,YACP3O,OAAO0O,GAYT,SAASF,EAAKxB,EAAK4B,EAAQ/e,GACzB,MAAMgf,EAAQ,GACdliB,KAAKmiB,WAAaD,EAElBA,EAAMhf,KAAOA,EACbgf,EAAM7B,IAAMA,EAEZ6B,EAAMD,OAASA,GAAU,KACzBC,EAAM5d,SAAW,KAGjB4d,EAAMxM,IAAM,KACZwM,EAAME,KAAO,KACbF,EAAMG,YAAc,KACpBH,EAAMI,OAAS,KACfJ,EAAMK,UAAW,EACjBL,EAAM7Z,KAAM,EACZ6Z,EAAMM,KAAM,EACZN,EAAMO,IAAM,KACZP,EAAMQ,WAAa,KACnBR,EAAMviB,IAAM,KACZuiB,EAAe,QAAI,KACnBA,EAAMS,SAAW,KACjBT,EAAMU,SAAW,KACjBV,EAAMW,SAAW,KAGZX,EAAMD,SACTC,EAAM5d,SAAW,GACjBtE,KAAK8iB,SAGT7b,EAAOC,QAAU2a,EAEjB,MAAMkB,EAAa,CACjB,MAAO,SAAU,WAAY,MAAO,OAAQ,cAAe,SAC3D,WAAY,MAAO,MAAO,MAAO,aAAc,MAAO,UAAW,WACjE,WAAY,YAGdlB,EAAKjiB,UAAUojB,MAAQ,WACrB,MAAMd,EAAQliB,KAAKmiB,WACbc,EAAS,GACfF,EAAWxc,SAAQ,SAAS2c,GAC1BD,EAAOC,GAAQhB,EAAMgB,MAEvB,MAAM5B,EAAM,IAAIthB,KAAKiD,YAAYggB,EAAOhB,QAExC,OADAX,EAAIa,WAAac,EACV3B,GAGTO,EAAKjiB,UAAUkjB,MAAQ,WACrB,MAAMZ,EAAQliB,KAAKmiB,WACnBH,EAAQzb,SAAQ,SAAS4c,GACvBnjB,KAAKmjB,GAAU,WACb,MAAMH,EAAQ,IAAIhjB,KAAKiD,YAAYjD,MAEnC,OADAkiB,EAAM5d,SAASwO,KAAKkQ,GACbA,EAAMG,GAAQpjB,MAAMijB,EAAOxjB,cAEnCQ,OAGL6hB,EAAKjiB,UAAUwjB,MAAQ,SAAcjd,GACnC,MAAM+b,EAAQliB,KAAKmiB,WAEnBL,EAAwB,OAAjBI,EAAMD,QACb9b,EAAKrG,KAAKE,MAGVkiB,EAAM5d,SAAW4d,EAAM5d,SAAS+e,QAAO,SAASje,GAC9C,OAAOA,EAAM+c,WAAWF,SAAWjiB,OAClCA,MACH8hB,EAAO9N,MAAMkO,EAAM5d,SAAS7E,OAAQ,EAAG,sCAGzCoiB,EAAKjiB,UAAU0jB,SAAW,SAAiBlB,GACzC,MAAMF,EAAQliB,KAAKmiB,WAGb7d,EAAW8d,EAAKiB,QAAO,SAASE,GACpC,OAAOA,aAAevjB,KAAKiD,cAC1BjD,MACHoiB,EAAOA,EAAKiB,QAAO,SAASE,GAC1B,QAASA,aAAevjB,KAAKiD,eAC5BjD,MAEqB,IAApBsE,EAAS7E,SACXqiB,EAA0B,OAAnBI,EAAM5d,UACb4d,EAAM5d,SAAWA,EAGjBA,EAASiC,SAAQ,SAASnB,GACxBA,EAAM+c,WAAWF,OAASjiB,OACzBA,OAEe,IAAhBoiB,EAAK3iB,SACPqiB,EAAsB,OAAfI,EAAME,MACbF,EAAME,KAAOA,EACbF,EAAMG,YAAcD,EAAKzb,KAAI,SAAS4c,GACpC,GAAmB,kBAARA,GAAoBA,EAAItgB,cAAgB7D,OACjD,OAAOmkB,EAET,MAAMjC,EAAM,GAOZ,OANAliB,OAAO0B,KAAKyiB,GAAKhd,SAAQ,SAAS5G,GAC5BA,IAAc,EAANA,KACVA,GAAO,GACT,MAAM4D,EAAQggB,EAAI5jB,GAClB2hB,EAAI/d,GAAS5D,KAER2hB,OAtHK,CAChB,WAAY,aAAc,OAC1B,aAAc,eAAgB,cAC9B,cAAe,aAAc,cAAe,cAE5C,mBAAoB,aAAc,eAAgB,cAClD,cAAe,aAAc,eAyHrB/a,SAAQ,SAAS4c,GACzBtB,EAAKjiB,UAAUujB,GAAU,WACvB,MAAMjB,EAAQliB,KAAKmiB,WACnB,MAAM,IAAIpe,MAAMof,EAAS,kCAAoCjB,EAAM7B,SAQvE0B,EAAKxb,SAAQ,SAASmP,GACpBmM,EAAKjiB,UAAU8V,GAAO,WACpB,MAAMwM,EAAQliB,KAAKmiB,WACbC,EAAO/f,MAAMzC,UAAUoD,MAAMlD,KAAKN,WAOxC,OALAsiB,EAAqB,OAAdI,EAAMxM,KACbwM,EAAMxM,IAAMA,EAEZ1V,KAAKsjB,SAASlB,GAEPpiB,SAIX6hB,EAAKjiB,UAAU6iB,IAAM,SAAa3B,GAChCgB,EAAOhB,GACP,MAAMoB,EAAQliB,KAAKmiB,WAKnB,OAHAL,EAAqB,OAAdI,EAAMO,KACbP,EAAMO,IAAM3B,EAEL9gB,MAGT6hB,EAAKjiB,UAAU2iB,SAAW,WAKxB,OAJcviB,KAAKmiB,WAEbI,UAAW,EAEVviB,MAGT6hB,EAAKjiB,UAAU4jB,IAAM,SAAazH,GAChC,MAAMmG,EAAQliB,KAAKmiB,WAMnB,OAJAL,EAA4B,OAArBI,EAAe,SACtBA,EAAe,QAAInG,EACnBmG,EAAMK,UAAW,EAEVviB,MAGT6hB,EAAKjiB,UAAU+iB,SAAW,SAAkBc,GAC1C,MAAMvB,EAAQliB,KAAKmiB,WAKnB,OAHAL,EAA0B,OAAnBI,EAAMS,UAAwC,OAAnBT,EAAMU,UACxCV,EAAMS,SAAWc,EAEVzjB,MAGT6hB,EAAKjiB,UAAUgjB,SAAW,SAAkBa,GAC1C,MAAMvB,EAAQliB,KAAKmiB,WAKnB,OAHAL,EAA0B,OAAnBI,EAAMS,UAAwC,OAAnBT,EAAMU,UACxCV,EAAMU,SAAWa,EAEVzjB,MAGT6hB,EAAKjiB,UAAU4iB,IAAM,WACnB,MAAMN,EAAQliB,KAAKmiB,WACbC,EAAO/f,MAAMzC,UAAUoD,MAAMlD,KAAKN,WAOxC,OALA0iB,EAAMM,KAAM,EAEQ,IAAhBJ,EAAK3iB,QACPO,KAAKsjB,SAASlB,GAETpiB,MAGT6hB,EAAKjiB,UAAUD,IAAM,SAAa+jB,GAChC,MAAMxB,EAAQliB,KAAKmiB,WAKnB,OAHAL,EAAqB,OAAdI,EAAMviB,KACbuiB,EAAMviB,IAAM+jB,EAEL1jB,MAGT6hB,EAAKjiB,UAAUyI,IAAM,WAKnB,OAJcrI,KAAKmiB,WAEb9Z,KAAM,EAELrI,MAGT6hB,EAAKjiB,UAAU0iB,OAAS,SAAgBE,GACtC,MAAMN,EAAQliB,KAAKmiB,WAQnB,OANAL,EAAwB,OAAjBI,EAAMI,QACbJ,EAAMI,OAASE,EACfxiB,KAAKsjB,SAASlkB,OAAO0B,KAAK0hB,GAAK7b,KAAI,SAAShH,GAC1C,OAAO6iB,EAAI7iB,OAGNK,MAGT6hB,EAAKjiB,UAAUijB,SAAW,SAAkB/B,GAC1C,MAAMoB,EAAQliB,KAAKmiB,WAKnB,OAHAL,EAAqB,OAAdI,EAAMO,KACbP,EAAMW,SAAW/B,EAEV9gB,MAOT6hB,EAAKjiB,UAAU+jB,QAAU,SAAgBC,EAAO/I,GAC9C,MAAMqH,EAAQliB,KAAKmiB,WAGnB,GAAqB,OAAjBD,EAAMD,OACR,OAAO2B,EAAMC,WAAW3B,EAAM5d,SAAS,GAAGqf,QAAQC,EAAO/I,IAE3D,IAuCIiJ,EAvCAnF,EAASuD,EAAe,QACxB6B,GAAU,EAEVC,EAAU,KAKd,GAJkB,OAAd9B,EAAMviB,MACRqkB,EAAUJ,EAAMK,SAAS/B,EAAMviB,MAG7BuiB,EAAMK,SAAU,CAClB,IAAI7M,EAAM,KAQV,GAPuB,OAAnBwM,EAAMS,SACRjN,EAAMwM,EAAMS,SACc,OAAnBT,EAAMU,SACblN,EAAMwM,EAAMU,SACS,OAAdV,EAAMxM,MACbA,EAAMwM,EAAMxM,KAEF,OAARA,GAAiBwM,EAAM7Z,KAgBzB,GAFA0b,EAAU/jB,KAAKkkB,SAASN,EAAOlO,EAAKwM,EAAM7Z,KAEtCub,EAAMO,QAAQJ,GAChB,OAAOA,MAjBqB,CAE9B,MAAM9C,EAAO2C,EAAM3C,OACnB,IACuB,OAAjBiB,EAAMI,OACRtiB,KAAKokB,eAAelC,EAAMxM,IAAKkO,EAAO/I,GAEtC7a,KAAKqkB,cAAcT,EAAO/I,GAC5BkJ,GAAU,EACV,MAAOza,GACPya,GAAU,EAEZH,EAAM1C,QAAQD,IAclB,GAHIiB,EAAMM,KAAOuB,IACfD,EAAUF,EAAMU,eAEdP,EAAS,CAEX,GAAuB,OAAnB7B,EAAMS,SAAmB,CAC3B,MAAMA,EAAW3iB,KAAKukB,WAAWX,EAAO1B,EAAMS,UAC9C,GAAIiB,EAAMO,QAAQxB,GAChB,OAAOA,EACTiB,EAAQjB,EAGV,MAAM6B,EAAQZ,EAAMhD,OAGpB,GAAkB,OAAdsB,EAAMO,KAAiC,OAAjBP,EAAMI,OAAiB,CAC/C,IAAIrB,EACAiB,EAAM7Z,MACR4Y,EAAO2C,EAAM3C,QACf,MAAM9a,EAAOnG,KAAKukB,WAChBX,EACmB,OAAnB1B,EAAMU,SAAoBV,EAAMU,SAAWV,EAAMxM,IACjDwM,EAAM7Z,KAER,GAAIub,EAAMO,QAAQhe,GAChB,OAAOA,EAEL+b,EAAM7Z,IACRsW,EAASiF,EAAMtK,IAAI2H,GAEnB2C,EAAQzd,EAkBZ,GAfI0U,GAAWA,EAAQ4J,OAAuB,OAAdvC,EAAMxM,KACpCmF,EAAQ4J,MAAMb,EAAMc,OAAQF,EAAOZ,EAAMnkB,OAAQ,UAE/Cob,GAAWA,EAAQ4J,OAAuB,OAAdvC,EAAMxM,KACpCmF,EAAQ4J,MAAMb,EAAMc,OAAQd,EAAMhD,OAAQgD,EAAMnkB,OAAQ,WAGtDyiB,EAAM7Z,MAGRsW,EAD0B,OAAjBuD,EAAMI,OACNtiB,KAAKokB,eAAelC,EAAMxM,IAAKkO,EAAO/I,GAEtC7a,KAAKqkB,cAAcT,EAAO/I,IAGjC+I,EAAMO,QAAQxF,GAChB,OAAOA,EAYT,GATKuD,EAAM7Z,KAAwB,OAAjB6Z,EAAMI,QAAsC,OAAnBJ,EAAM5d,UAC/C4d,EAAM5d,SAASiC,SAAQ,SAAwBnB,GAG7CA,EAAMue,QAAQC,EAAO/I,MAKrBqH,EAAMW,WAA2B,WAAdX,EAAMxM,KAAkC,WAAdwM,EAAMxM,KAAmB,CACxE,MAAMD,EAAO,IAAIiL,EAAc/B,GAC/BA,EAAS3e,KAAK2kB,QAAQzC,EAAMW,SAAUe,EAAMpC,eAAegB,KACxDmB,QAAQlO,EAAMoF,IAcrB,OATIqH,EAAMM,KAAOuB,IACfpF,EAASiF,EAAMgB,YAAYd,IAGX,OAAd5B,EAAMviB,KAA4B,OAAXgf,IAA+B,IAAZoF,EAEzB,OAAZC,GACPJ,EAAMiB,QAAQb,GAFdJ,EAAMkB,SAASd,EAAS9B,EAAMviB,IAAKgf,GAI9BA,GAGTkD,EAAKjiB,UAAUwkB,eAAiB,SAAuB1O,EAAKkO,EAAO/I,GACjE,MAAMqH,EAAQliB,KAAKmiB,WAEnB,MAAY,QAARzM,GAAyB,QAARA,EACZ,KACG,UAARA,GAA2B,UAARA,EACd1V,KAAK+kB,YAAYnB,EAAOlO,EAAKwM,EAAME,KAAK,GAAIvH,GAC5C,OAAOzX,KAAKsS,GACZ1V,KAAKglB,WAAWpB,EAAOlO,EAAKmF,GACpB,UAARnF,GAAmBwM,EAAME,KACzBpiB,KAAKilB,aAAarB,EAAO1B,EAAME,KAAK,GAAIF,EAAME,KAAK,GAAIvH,GAC/C,UAARnF,EACA1V,KAAKilB,aAAarB,EAAO,KAAM,KAAM/I,GAC7B,YAARnF,GAA6B,YAARA,EACrB1V,KAAKklB,YAAYtB,EAAOlO,EAAKmF,GACrB,UAARnF,EACA1V,KAAKmlB,YAAYvB,EAAO/I,GAChB,SAARnF,EACA1V,KAAKolB,YAAYxB,EAAO/I,GAChB,YAARnF,EACA1V,KAAKglB,WAAWpB,EAAOlO,EAAKmF,GACpB,QAARnF,GAAyB,SAARA,EACjB1V,KAAKqlB,WAAWzB,EAAO1B,EAAME,MAAQF,EAAME,KAAK,GAAIvH,GAE3C,OAAdqH,EAAMO,IACDziB,KAAK2kB,QAAQzC,EAAMO,IAAKmB,EAAMpC,eAAegB,KACjDmB,QAAQC,EAAO/I,GAEX+I,EAAM9f,MAAM,gBAAkB4R,IAIzCmM,EAAKjiB,UAAU+kB,QAAU,SAAiBzE,EAAQsC,GAEhD,MAAMN,EAAQliB,KAAKmiB,WASnB,OAPAD,EAAMQ,WAAa1iB,KAAKslB,KAAKpF,EAAQsC,GACrCV,EAA8C,OAAvCI,EAAMQ,WAAWP,WAAWF,QACnCC,EAAMQ,WAAaR,EAAMQ,WAAWP,WAAW7d,SAAS,GACpD4d,EAAMU,WAAaV,EAAMQ,WAAWP,WAAWS,WACjDV,EAAMQ,WAAaR,EAAMQ,WAAWM,QACpCd,EAAMQ,WAAWP,WAAWS,SAAWV,EAAMU,UAExCV,EAAMQ,YAGfb,EAAKjiB,UAAUykB,cAAgB,SAAsBT,EAAO/I,GAC1D,MAAMqH,EAAQliB,KAAKmiB,WACnB,IAAIxD,EAAS,KACTnF,GAAQ,EAmBZ,OAjBApa,OAAO0B,KAAKohB,EAAMI,QAAQiD,MAAK,SAAS5lB,GACtC,MAAMshB,EAAO2C,EAAM3C,OACbjc,EAAOkd,EAAMI,OAAO3iB,GAC1B,IACE,MAAM4D,EAAQyB,EAAK2e,QAAQC,EAAO/I,GAClC,GAAI+I,EAAMO,QAAQ5gB,GAChB,OAAO,EAETob,EAAS,CAAEna,KAAM7E,EAAK4D,MAAOA,GAC7BiW,GAAQ,EACR,MAAOlQ,GAEP,OADAsa,EAAM1C,QAAQD,IACP,EAET,OAAO,IACNjhB,MAEEwZ,EAGEmF,EAFEiF,EAAM9f,MAAM,uBASvB+d,EAAKjiB,UAAU4lB,qBAAuB,SAA6B/P,GACjE,OAAO,IAAIoL,EAAcpL,EAAMzV,KAAKugB,WAGtCsB,EAAKjiB,UAAU6lB,QAAU,SAAgBhQ,EAAM8K,EAAU0B,GACvD,MAAMC,EAAQliB,KAAKmiB,WACnB,GAAyB,OAArBD,EAAe,SAAcA,EAAe,UAAMzM,EACpD,OAEF,MAAMkJ,EAAS3e,KAAK0lB,aAAajQ,EAAM8K,EAAU0B,GACjD,YAAe0D,IAAXhH,GAGA3e,KAAK4lB,aAAajH,EAAQ4B,EAAU0B,QAHxC,EAMOtD,GAGTkD,EAAKjiB,UAAU8lB,aAAe,SAAgBjQ,EAAM8K,EAAU0B,GAC5D,MAAMC,EAAQliB,KAAKmiB,WAGnB,GAAqB,OAAjBD,EAAMD,OACR,OAAOC,EAAM5d,SAAS,GAAGmhB,QAAQhQ,EAAM8K,GAAY,IAAIC,GAEzD,IAAI7B,EAAS,KAMb,GAHA3e,KAAKugB,SAAWA,EAGZ2B,EAAMK,eAAqBoD,IAATlQ,EAAoB,CACxC,GAAyB,OAArByM,EAAe,QAGjB,OAFAzM,EAAOyM,EAAe,QAM1B,IAAI2D,EAAU,KACVC,GAAY,EAChB,GAAI5D,EAAM7Z,IAERsW,EAAS3e,KAAKwlB,qBAAqB/P,QAC9B,GAAIyM,EAAMI,OACf3D,EAAS3e,KAAK+lB,cAActQ,EAAM8K,QAC7B,GAAI2B,EAAMW,SACfgD,EAAU7lB,KAAK2kB,QAAQzC,EAAMW,SAAUZ,GAAQwD,QAAQhQ,EAAM8K,GAC7DuF,GAAY,OACP,GAAI5D,EAAM5d,SACfuhB,EAAU3D,EAAM5d,SAASqC,KAAI,SAASvB,GACpC,GAA6B,UAAzBA,EAAM+c,WAAWzM,IACnB,OAAOtQ,EAAMqgB,QAAQ,KAAMlF,EAAU9K,GAEvC,GAA6B,OAAzBrQ,EAAM+c,WAAWxiB,IACnB,OAAO4gB,EAASzc,MAAM,2BACxB,MAAMkgB,EAAUzD,EAAS0D,SAAS7e,EAAM+c,WAAWxiB,KAEnD,GAAoB,kBAAT8V,EACT,OAAO8K,EAASzc,MAAM,2CAExB,MAAMwd,EAAMlc,EAAMqgB,QAAQhQ,EAAKrQ,EAAM+c,WAAWxiB,KAAM4gB,EAAU9K,GAGhE,OAFA8K,EAASuE,SAASd,GAEX1C,IACNthB,MAAMqjB,QAAO,SAASje,GACvB,OAAOA,KAETygB,EAAU7lB,KAAKwlB,qBAAqBK,QAEpC,GAAkB,UAAd3D,EAAMxM,KAAiC,UAAdwM,EAAMxM,IAAiB,CAElD,IAAMwM,EAAME,MAA8B,IAAtBF,EAAME,KAAK3iB,OAC7B,OAAO8gB,EAASzc,MAAM,uBAAyBoe,EAAMxM,KAEvD,IAAKrT,MAAMO,QAAQ6S,GACjB,OAAO8K,EAASzc,MAAM,sCAExB,MAAMsB,EAAQpF,KAAKgjB,QACnB5d,EAAM+c,WAAWS,SAAW,KAC5BiD,EAAU7lB,KAAKwlB,qBAAqB/P,EAAK9O,KAAI,SAASma,GACpD,MAAMoB,EAAQliB,KAAKmiB,WAEnB,OAAOniB,KAAK2kB,QAAQzC,EAAME,KAAK,GAAI3M,GAAMgQ,QAAQ3E,EAAMP,KACtDnb,SACoB,OAAd8c,EAAMO,IACf9D,EAAS3e,KAAK2kB,QAAQzC,EAAMO,IAAKR,GAAQwD,QAAQhQ,EAAM8K,IAEvDsF,EAAU7lB,KAAKgmB,iBAAiB9D,EAAMxM,IAAKD,GAC3CqQ,GAAY,GAKhB,IAAK5D,EAAM7Z,KAAwB,OAAjB6Z,EAAMI,OAAiB,CACvC,MAAM5M,EAAyB,OAAnBwM,EAAMU,SAAoBV,EAAMU,SAAWV,EAAMxM,IACvDuQ,EAAyB,OAAnB/D,EAAMU,SAAoB,YAAc,UAExC,OAARlN,EACgB,OAAdwM,EAAMO,KACRlC,EAASzc,MAAM,wCAEC,OAAdoe,EAAMO,MACR9D,EAAS3e,KAAKkmB,iBAAiBxQ,EAAKoQ,EAAWG,EAAKJ,IAQ1D,OAHuB,OAAnB3D,EAAMS,WACRhE,EAAS3e,KAAKkmB,iBAAiBhE,EAAMS,UAAU,EAAO,UAAWhE,IAE5DA,GAGTkD,EAAKjiB,UAAUmmB,cAAgB,SAAsBtQ,EAAM8K,GACzD,MAAM2B,EAAQliB,KAAKmiB,WAEbnd,EAAOkd,EAAMI,OAAO7M,EAAKjR,MAO/B,OANKQ,GACH8c,GACE,EACArM,EAAKjR,KAAO,iBACNia,KAAKC,UAAUtf,OAAO0B,KAAKohB,EAAMI,UAEpCtd,EAAKygB,QAAQhQ,EAAKlS,MAAOgd,IAGlCsB,EAAKjiB,UAAUomB,iBAAmB,SAAyBtQ,EAAKD,GAC9D,MAAMyM,EAAQliB,KAAKmiB,WAEnB,GAAI,OAAO/e,KAAKsS,GACd,OAAO1V,KAAKmmB,WAAW1Q,EAAMC,GAC1B,GAAY,UAARA,GAAmBwM,EAAME,KAChC,OAAOpiB,KAAKomB,aAAa3Q,EAAMyM,EAAMG,YAAY,GAAIH,EAAME,KAAK,IAC7D,GAAY,UAAR1M,EACP,OAAO1V,KAAKomB,aAAa3Q,EAAM,KAAM,MAClC,GAAY,YAARC,GAA6B,YAARA,EAC5B,OAAO1V,KAAKqmB,YAAY5Q,EAAMC,GAC3B,GAAY,UAARA,EACP,OAAO1V,KAAKsmB,cACT,GAAY,QAAR5Q,GAAyB,SAARA,EACxB,OAAO1V,KAAKumB,WAAW9Q,EAAMyM,EAAME,MAAQF,EAAMG,YAAY,IAC1D,GAAY,SAAR3M,EACP,OAAO1V,KAAKwmB,YAAY/Q,GACrB,GAAY,YAARC,EACP,OAAO1V,KAAKmmB,WAAW1Q,EAAMC,GAE7B,MAAM,IAAI3R,MAAM,oBAAsB2R,IAG1CmM,EAAKjiB,UAAU6mB,UAAY,SAAkBC,GAC3C,MAAO,YAAYtjB,KAAKsjB,IAG1B7E,EAAKjiB,UAAU+mB,YAAc,SAAoBD,GAC/C,MAAO,6BAA6BtjB,KAAKsjB,wCC1nB3C,MAAM7G,EAAW,EAAQ,OAEzB,SAASW,EAAS3F,GAChB7a,KAAKwhB,eAAiB,CACpBgB,IAAK,KACLkC,KAAM,GACN7J,QAASA,GAAW,GACpBd,OAAQ,IA6FZ,SAAS6M,EAAclC,EAAMmC,GAC3B7mB,KAAK0kB,KAAOA,EACZ1kB,KAAK8mB,QAAQD,GA5Ff3f,EAAQ,EAAWsZ,EAEnBA,EAAS5gB,UAAUukB,QAAU,SAAiB3B,GAC5C,OAAOA,aAAeoE,GAGxBpG,EAAS5gB,UAAUqhB,KAAO,WACxB,MAAMiB,EAAQliB,KAAKwhB,eAEnB,MAAO,CAAEgB,IAAKN,EAAMM,IAAKuE,QAAS7E,EAAMwC,KAAKjlB,SAG/C+gB,EAAS5gB,UAAUshB,QAAU,SAAiBzL,GAC5C,MAAMyM,EAAQliB,KAAKwhB,eAEnBU,EAAMM,IAAM/M,EAAK+M,IACjBN,EAAMwC,KAAOxC,EAAMwC,KAAK1hB,MAAM,EAAGyS,EAAKsR,UAGxCvG,EAAS5gB,UAAUqkB,SAAW,SAAkBtkB,GAC9C,OAAOK,KAAKwhB,eAAekD,KAAK5R,KAAKnT,IAGvC6gB,EAAS5gB,UAAUilB,QAAU,SAAiBmC,GAC5C,MAAM9E,EAAQliB,KAAKwhB,eAEnBU,EAAMwC,KAAOxC,EAAMwC,KAAK1hB,MAAM,EAAGgkB,EAAQ,IAG3CxG,EAAS5gB,UAAUklB,SAAW,SAAkBkC,EAAOrnB,EAAK4D,GAC1D,MAAM2e,EAAQliB,KAAKwhB,eAEnBxhB,KAAK6kB,QAAQmC,GACK,OAAd9E,EAAMM,MACRN,EAAMM,IAAI7iB,GAAO4D,IAGrBid,EAAS5gB,UAAU8kB,KAAO,WACxB,OAAO1kB,KAAKwhB,eAAekD,KAAKlK,KAAK,MAGvCgG,EAAS5gB,UAAU0kB,YAAc,WAC/B,MAAMpC,EAAQliB,KAAKwhB,eAEbyF,EAAO/E,EAAMM,IAEnB,OADAN,EAAMM,IAAM,GACLyE,GAGTzG,EAAS5gB,UAAUglB,YAAc,SAAqBqC,GACpD,MAAM/E,EAAQliB,KAAKwhB,eAEbvO,EAAMiP,EAAMM,IAElB,OADAN,EAAMM,IAAMyE,EACLhU,GAGTuN,EAAS5gB,UAAUkE,MAAQ,SAAe+iB,GACxC,IAAIpf,EACJ,MAAMya,EAAQliB,KAAKwhB,eAEb0F,EAAYL,aAAeD,EASjC,GAPEnf,EADEyf,EACIL,EAEA,IAAID,EAAc1E,EAAMwC,KAAK/d,KAAI,SAASwgB,GAC9C,MAAO,IAAM1I,KAAKC,UAAUyI,GAAQ,OACnC3M,KAAK,IAAKqM,EAAInV,SAAWmV,EAAKA,EAAIO,QAGlClF,EAAMrH,QAAQ/G,QACjB,MAAMrM,EAKR,OAHKyf,GACHhF,EAAMnI,OAAOjH,KAAKrL,GAEbA,GAGT+Y,EAAS5gB,UAAUikB,WAAa,SAAoBlF,GAClD,MAAMuD,EAAQliB,KAAKwhB,eACnB,OAAKU,EAAMrH,QAAQ/G,QAGZ,CACL6K,OAAQ3e,KAAKmkB,QAAQxF,GAAU,KAAOA,EACtC5E,OAAQmI,EAAMnI,QAJP4E,GAYXkB,EAAS+G,EAAe7iB,OAExB6iB,EAAchnB,UAAUknB,QAAU,SAAiBD,GAKjD,GAJA7mB,KAAK0R,QAAUmV,EAAM,SAAW7mB,KAAK0kB,MAAQ,aACzC3gB,MAAMsjB,mBACRtjB,MAAMsjB,kBAAkBrnB,KAAM4mB,IAE3B5mB,KAAKonB,MACR,IAEE,MAAM,IAAIrjB,MAAM/D,KAAK0R,SACrB,MAAOpI,GACPtJ,KAAKonB,MAAQ9d,EAAE8d,MAGnB,OAAOpnB,wCCtHT,SAASsnB,EAAQ3gB,GACf,MAAM2a,EAAM,GAWZ,OATAliB,OAAO0B,KAAK6F,GAAKJ,SAAQ,SAAS5G,IAErB,EAANA,IAAYA,IACfA,GAAY,GAEd,MAAM4D,EAAQoD,EAAIhH,GAClB2hB,EAAI/d,GAAS5D,KAGR2hB,EAGTpa,EAAQqgB,SAAW,CACjB,EAAG,YACH,EAAG,cACH,EAAG,UACH,EAAG,WAELrgB,EAAQsgB,eAAiBF,EAAQpgB,EAAQqgB,UAEzCrgB,EAAQwO,IAAM,CACZ,EAAM,MACN,EAAM,OACN,EAAM,MACN,EAAM,SACN,EAAM,SACN,EAAM,QACN,EAAM,QACN,EAAM,UACN,EAAM,WACN,EAAM,OACN,GAAM,OACN,GAAM,QACN,GAAM,UACN,GAAM,cACN,GAAM,MACN,GAAM,MACN,GAAM,SACN,GAAM,WACN,GAAM,SACN,GAAM,WACN,GAAM,SACN,GAAM,UACN,GAAM,UACN,GAAM,WACN,GAAM,YACN,GAAM,SACN,GAAM,SACN,GAAM,UACN,GAAM,UAERxO,EAAQugB,UAAYH,EAAQpgB,EAAQwO,yCCvDpC,MAAMgK,EAAYxY,EAGlBwY,EAAUgI,SAAW,SAAiB/gB,GACpC,MAAM2a,EAAM,GAWZ,OATAliB,OAAO0B,KAAK6F,GAAKJ,SAAQ,SAAS5G,IAErB,EAANA,IAAYA,IACfA,GAAY,GAEd,MAAM4D,EAAQoD,EAAIhH,GAClB2hB,EAAI/d,GAAS5D,KAGR2hB,GAGT5B,EAAUiI,IAAM,EAAQ,2CClBxB,MAAM9H,EAAW,EAAQ,OAEnBN,EAAS,EAAQ,OACjBmB,EAAgB,WAChBmB,EAAO,EAAQ,OAGf8F,EAAM,EAAQ,OAEpB,SAASC,EAAW1H,GAClBlgB,KAAKqgB,IAAM,MACXrgB,KAAKkD,KAAOgd,EAAOhd,KACnBlD,KAAKkgB,OAASA,EAGdlgB,KAAK6nB,KAAO,IAAIC,EAChB9nB,KAAK6nB,KAAKzE,MAAMlD,EAAO/Z,MAczB,SAAS2hB,EAAQ7F,GACfJ,EAAK/hB,KAAKE,KAAM,MAAOiiB,GA8OzB,SAAS8F,EAAaC,EAAKzG,GACzB,IAAI7L,EAAMsS,EAAI5G,UAAUG,GACxB,GAAIyG,EAAI7D,QAAQzO,GACd,OAAOA,EAET,MAAMuQ,EAAM0B,EAAIJ,SAAS7R,GAAO,GAC1BoQ,EAA6B,KAAV,GAANpQ,GAGnB,GAAqB,MAAV,GAANA,GAAsB,CACzB,IAAIuS,EAAMvS,EAEV,IADAA,EAAM,EACkB,OAAV,IAANuS,IAAsB,CAE5B,GADAA,EAAMD,EAAI5G,UAAUG,GAChByG,EAAI7D,QAAQ8D,GACd,OAAOA,EAETvS,IAAQ,EACRA,GAAa,IAANuS,QAGTvS,GAAO,GAIT,MAAO,CACLuQ,IAAKA,EACLH,UAAWA,EACXpQ,IAAKA,EACLwS,OANaP,EAAIjS,IAAIA,IAUzB,SAASyS,EAAaH,EAAKlC,EAAWvE,GACpC,IAAIpf,EAAM6lB,EAAI5G,UAAUG,GACxB,GAAIyG,EAAI7D,QAAQhiB,GACd,OAAOA,EAGT,IAAK2jB,GAAqB,MAAR3jB,EAChB,OAAO,KAGT,GAAqB,KAAV,IAANA,GAEH,OAAOA,EAIT,MAAMshB,EAAY,IAANthB,EACZ,GAAIshB,EAAM,EACR,OAAOuE,EAAIlkB,MAAM,6BAEnB3B,EAAM,EACN,IAAK,IAAI5C,EAAI,EAAGA,EAAIkkB,EAAKlkB,IAAK,CAC5B4C,IAAQ,EACR,MAAMsH,EAAIue,EAAI5G,UAAUG,GACxB,GAAIyG,EAAI7D,QAAQ1a,GACd,OAAOA,EACTtH,GAAOsH,EAGT,OAAOtH,EAzTT8E,EAAOC,QAAU0gB,EAEjBA,EAAWhoB,UAAU2Z,OAAS,SAAgB9D,EAAMoF,GAKlD,OAJK6F,EAAcM,gBAAgBvL,KACjCA,EAAO,IAAIiL,EAAcjL,EAAMoF,IAG1B7a,KAAK6nB,KAAKlE,QAAQlO,EAAMoF,IAQjCgF,EAASiI,EAASjG,GAElBiG,EAAQloB,UAAUskB,SAAW,SAAiBra,EAAQ6L,EAAKrN,GACzD,GAAIwB,EAAOsX,UACT,OAAO,EAET,MAAMe,EAAQrY,EAAOoX,OACfmH,EAAaL,EAAale,EAAQ,wBAA0B6L,EAAM,KACxE,OAAI7L,EAAOsa,QAAQiE,GACVA,GAETve,EAAOqX,QAAQgB,GAERkG,EAAW1S,MAAQA,GAAO0S,EAAWF,SAAWxS,GACpD0S,EAAWF,OAAS,OAAUxS,GAAOrN,IAG1Cyf,EAAQloB,UAAU2kB,WAAa,SAAmB1a,EAAQ6L,EAAKrN,GAC7D,MAAM+f,EAAaL,EAAale,EAC9B,4BAA8B6L,EAAM,KACtC,GAAI7L,EAAOsa,QAAQiE,GACjB,OAAOA,EAET,IAAIjmB,EAAMgmB,EAAate,EACrBue,EAAWtC,UACX,4BAA8BpQ,EAAM,KAGtC,GAAI7L,EAAOsa,QAAQhiB,GACjB,OAAOA,EAET,IAAKkG,GACD+f,EAAW1S,MAAQA,GACnB0S,EAAWF,SAAWxS,GACtB0S,EAAWF,OAAS,OAASxS,EAC/B,OAAO7L,EAAO/F,MAAM,yBAA2B4R,EAAM,KAGvD,GAAI0S,EAAWtC,WAAqB,OAAR3jB,EAC1B,OAAO0H,EAAOwX,KAAKlf,EAAK,6BAA+BuT,EAAM,KAG/D,MAAMwM,EAAQrY,EAAOoX,OACfK,EAAMthB,KAAKqoB,cACfxe,EACA,2CAA6C7J,KAAK0V,IAAM,KAC1D,OAAI7L,EAAOsa,QAAQ7C,GACVA,GAETnf,EAAM0H,EAAO+W,OAASsB,EAAMtB,OAC5B/W,EAAOqX,QAAQgB,GACRrY,EAAOwX,KAAKlf,EAAK,6BAA+BuT,EAAM,OAG/DoS,EAAQloB,UAAUyoB,cAAgB,SAAsBxe,EAAQ0X,GAC9D,OAAS,CACP,MAAM7L,EAAMqS,EAAale,EAAQ0X,GACjC,GAAI1X,EAAOsa,QAAQzO,GACjB,OAAOA,EACT,MAAMvT,EAAMgmB,EAAate,EAAQ6L,EAAIoQ,UAAWvE,GAChD,GAAI1X,EAAOsa,QAAQhiB,GACjB,OAAOA,EAET,IAAImf,EAOJ,GALEA,EADE5L,EAAIoQ,WAAqB,OAAR3jB,EACb0H,EAAOwX,KAAKlf,GAEZnC,KAAKqoB,cAAcxe,EAAQ0X,GAG/B1X,EAAOsa,QAAQ7C,GACjB,OAAOA,EAET,GAAmB,QAAf5L,EAAIwS,OACN,QAINJ,EAAQloB,UAAUmlB,YAAc,SAAoBlb,EAAQ6L,EAAK4S,EAC/DzN,GACA,MAAM8D,EAAS,GACf,MAAQ9U,EAAOsX,WAAW,CACxB,MAAMoH,EAAcvoB,KAAKkkB,SAASra,EAAQ,OAC1C,GAAIA,EAAOsa,QAAQoE,GACjB,OAAOA,EAET,MAAMjH,EAAMgH,EAAQ/O,OAAO1P,EAAQ,MAAOgR,GAC1C,GAAIhR,EAAOsa,QAAQ7C,IAAQiH,EACzB,MACF5J,EAAO7L,KAAKwO,GAEd,OAAO3C,GAGTmJ,EAAQloB,UAAUolB,WAAa,SAAmBnb,EAAQ6L,GACxD,GAAY,WAARA,EAAkB,CACpB,MAAM8S,EAAS3e,EAAOuX,YACtB,OAAIvX,EAAOsa,QAAQqE,GACVA,EACF,CAAEA,OAAQA,EAAQ/S,KAAM5L,EAAOyP,OACjC,GAAY,WAAR5D,EAAkB,CAC3B,MAAM4D,EAAMzP,EAAOyP,MACnB,GAAIA,EAAI7Z,OAAS,IAAM,EACrB,OAAOoK,EAAO/F,MAAM,mDAEtB,IAAI4iB,EAAM,GACV,IAAK,IAAInnB,EAAI,EAAGA,EAAI+Z,EAAI7Z,OAAS,EAAGF,IAClCmnB,GAAOrS,OAAOC,aAAagF,EAAImP,aAAiB,EAAJlpB,IAE9C,OAAOmnB,EACF,GAAY,WAARhR,EAAkB,CAC3B,MAAMgT,EAAS7e,EAAOyP,MAAMvW,SAAS,SACrC,OAAK/C,KAAKymB,UAAUiC,GAIbA,EAHE7e,EAAO/F,MAAM,0DAIjB,GAAY,WAAR4R,EACT,OAAO7L,EAAOyP,MACT,GAAY,YAAR5D,EACT,OAAO7L,EAAOyP,MACT,GAAY,aAAR5D,EAAoB,CAC7B,MAAMiT,EAAW9e,EAAOyP,MAAMvW,SAAS,SACvC,OAAK/C,KAAK2mB,YAAYgC,GAIfA,EAHE9e,EAAO/F,MAAM,4DAIjB,MAAI,OAAOV,KAAKsS,GACd7L,EAAOyP,MAAMvW,WAEb8G,EAAO/F,MAAM,4BAA8B4R,EAAM,iBAI5DoS,EAAQloB,UAAUqlB,aAAe,SAAqBpb,EAAQ+e,EAAQC,GACpE,IAAIlK,EACJ,MAAMmK,EAAc,GACpB,IAAIC,EAAQ,EACRC,EAAW,EACf,MAAQnf,EAAOsX,WACb6H,EAAWnf,EAAOuX,YAClB2H,IAAU,EACVA,GAAoB,IAAXC,EACiB,KAAV,IAAXA,KACHF,EAAYhW,KAAKiW,GACjBA,EAAQ,GAGG,IAAXC,GACFF,EAAYhW,KAAKiW,GAEnB,MAAME,EAASH,EAAY,GAAK,GAAM,EAChCI,EAASJ,EAAY,GAAK,GAOhC,GAJEnK,EADEkK,EACOC,EAEA,CAACG,EAAOC,GAAQ7V,OAAOyV,EAAY9lB,MAAM,IAEhD4lB,EAAQ,CACV,IAAIO,EAAMP,EAAOjK,EAAOnE,KAAK,WACjBmL,IAARwD,IACFA,EAAMP,EAAOjK,EAAOnE,KAAK,YACfmL,IAARwD,IACFxK,EAASwK,GAGb,OAAOxK,GAGTmJ,EAAQloB,UAAUslB,YAAc,SAAoBrb,EAAQ6L,GAC1D,MAAMgR,EAAM7c,EAAOyP,MAAMvW,WAEzB,IAAImZ,EACAkN,EACAC,EACAC,EACAjb,EACAkb,EACJ,GAAY,YAAR7T,EACFwG,EAAyB,EAAlBwK,EAAI1jB,MAAM,EAAG,GACpBomB,EAAwB,EAAlB1C,EAAI1jB,MAAM,EAAG,GACnBqmB,EAAwB,EAAlB3C,EAAI1jB,MAAM,EAAG,GACnBsmB,EAA0B,EAAnB5C,EAAI1jB,MAAM,EAAG,IACpBqL,EAA0B,EAApBqY,EAAI1jB,MAAM,GAAI,IACpBumB,EAA0B,EAApB7C,EAAI1jB,MAAM,GAAI,QACf,IAAY,YAAR0S,EAYT,OAAO7L,EAAO/F,MAAM,YAAc4R,EAAM,8BAXxCwG,EAAyB,EAAlBwK,EAAI1jB,MAAM,EAAG,GACpBomB,EAAwB,EAAlB1C,EAAI1jB,MAAM,EAAG,GACnBqmB,EAAwB,EAAlB3C,EAAI1jB,MAAM,EAAG,GACnBsmB,EAAyB,EAAlB5C,EAAI1jB,MAAM,EAAG,GACpBqL,EAAyB,EAAnBqY,EAAI1jB,MAAM,EAAG,IACnBumB,EAA0B,EAApB7C,EAAI1jB,MAAM,GAAI,IAElBkZ,EADEA,EAAO,GACF,IAAOA,EAEP,KAAOA,EAKlB,OAAO1M,KAAKga,IAAItN,EAAMkN,EAAM,EAAGC,EAAKC,EAAMjb,EAAKkb,EAAK,IAGtDzB,EAAQloB,UAAUulB,YAAc,WAC9B,OAAO,MAGT2C,EAAQloB,UAAUwlB,YAAc,SAAoBvb,GAClD,MAAMyX,EAAMzX,EAAOuX,YACnB,OAAIvX,EAAOsa,QAAQ7C,GACVA,EAEQ,IAARA,GAGXwG,EAAQloB,UAAUylB,WAAa,SAAmBxb,EAAQ+e,GAExD,MAAMtP,EAAMzP,EAAOyP,MACnB,IAAIgI,EAAM,IAAI/B,EAAOjG,GAKrB,OAHIsP,IACFtH,EAAMsH,EAAOtH,EAAIve,SAAS,MAAQue,GAE7BA,GAGTwG,EAAQloB,UAAU0lB,KAAO,SAAapF,EAAQsC,GAG5C,MAFsB,oBAAXtC,IACTA,EAASA,EAAOsC,IACXtC,EAAOE,YAAY,OAAOyH,0CCxQnC,MAAMlI,EAAWzY,EAEjByY,EAASgI,IAAM,EAAQ,OACvBhI,EAAS8J,IAAM,EAAQ,2CCHvB,MAAM5J,EAAW,EAAQ,OACnBY,EAAS,eAETmH,EAAa,EAAQ,OAE3B,SAAS8B,EAAWxJ,GAClB0H,EAAW9nB,KAAKE,KAAMkgB,GACtBlgB,KAAKqgB,IAAM,MAEbR,EAAS6J,EAAY9B,GACrB3gB,EAAOC,QAAUwiB,EAEjBA,EAAW9pB,UAAU2Z,OAAS,SAAgB9D,EAAMoF,GAClD,MAAM8O,EAAQlU,EAAK1S,WAAW0W,MAAM,YAE9BmQ,EAAQ/O,EAAQ+O,MAAMtP,cAEtBuP,EAAK,kCACX,IAAIrF,GAAS,EACTsF,GAAO,EACX,IAAK,IAAIvqB,EAAI,EAAGA,EAAIoqB,EAAMlqB,OAAQF,IAAK,CACrC,MAAMia,EAAQmQ,EAAMpqB,GAAGia,MAAMqQ,GAC7B,GAAc,OAAVrQ,GAGAA,EAAM,KAAOoQ,EAAjB,CAGA,IAAe,IAAXpF,EAIG,CACL,GAAiB,QAAbhL,EAAM,GACR,MACFsQ,EAAMvqB,EACN,MAPA,GAAiB,UAAbia,EAAM,GACR,MACFgL,EAAQjlB,GAQZ,IAAe,IAAXilB,IAAyB,IAATsF,EAClB,MAAM,IAAI/lB,MAAM,8BAAgC6lB,GAElD,MAAM7U,EAAS4U,EAAM3mB,MAAMwhB,EAAQ,EAAGsF,GAAKtP,KAAK,IAEhDzF,EAAOD,QAAQ,kBAAmB,IAElC,MAAM8O,EAAQnD,EAAOtd,KAAK4R,EAAQ,UAClC,OAAO6S,EAAWhoB,UAAU2Z,OAAOzZ,KAAKE,KAAM4jB,EAAO/I,wCC/CvD,MAAMgF,EAAW,EAAQ,OACnBY,EAAS,eACToB,EAAO,EAAQ,OAGf8F,EAAM,EAAQ,OAEpB,SAASoC,EAAW7J,GAClBlgB,KAAKqgB,IAAM,MACXrgB,KAAKkD,KAAOgd,EAAOhd,KACnBlD,KAAKkgB,OAASA,EAGdlgB,KAAK6nB,KAAO,IAAIC,EAChB9nB,KAAK6nB,KAAKzE,MAAMlD,EAAO/Z,MAUzB,SAAS2hB,EAAQ7F,GACfJ,EAAK/hB,KAAKE,KAAM,MAAOiiB,GAmHzB,SAAS+H,EAAIvG,GACX,OAAIA,EAAM,GACD,IAAMA,EAENA,EAhIXxc,EAAOC,QAAU6iB,EAEjBA,EAAWnqB,UAAUuZ,OAAS,SAAgB1D,EAAM8K,GAClD,OAAOvgB,KAAK6nB,KAAKpC,QAAQhQ,EAAM8K,GAAU/F,QAQ3CqF,EAASiI,EAASjG,GAElBiG,EAAQloB,UAAUsmB,iBAAmB,SAAyBxQ,EAC5DoQ,EACAG,EACAJ,GACA,MAAMoE,EA2OR,SAAmBvU,EAAKoQ,EAAWG,EAAK1F,GACtC,IAAIe,EAEQ,UAAR5L,EACFA,EAAM,MACS,UAARA,IACPA,EAAM,OAER,GAAIiS,EAAIF,UAAU5nB,eAAe6V,GAC/B4L,EAAMqG,EAAIF,UAAU/R,OACjB,IAAmB,kBAARA,IAA2B,EAANA,KAAaA,EAGhD,OAAO6K,EAASzc,MAAM,gBAAkB4R,GAFxC4L,EAAM5L,EAIR,GAAI4L,GAAO,GACT,OAAOf,EAASzc,MAAM,wCAEnBgiB,IACHxE,GAAO,IAIT,OAFAA,GAAQqG,EAAIH,eAAevB,GAAO,cAAgB,EAE3C3E,EAlQY4I,CAAUxU,EAAKoQ,EAAWG,EAAKjmB,KAAKugB,UAGvD,GAAIsF,EAAQpmB,OAAS,IAAM,CACzB,MAAM0qB,EAAS1J,EAAOiB,MAAM,GAG5B,OAFAyI,EAAO,GAAKF,EACZE,EAAO,GAAKtE,EAAQpmB,OACbO,KAAKwlB,qBAAqB,CAAE2E,EAAQtE,IAK7C,IAAIuE,EAAY,EAChB,IAAK,IAAI7qB,EAAIsmB,EAAQpmB,OAAQF,GAAK,IAAOA,IAAM,EAC7C6qB,IAEF,MAAMD,EAAS1J,EAAOiB,MAAM,EAAQ0I,GACpCD,EAAO,GAAKF,EACZE,EAAO,GAAK,IAAOC,EAEnB,IAAK,IAAI7qB,EAAI,EAAI6qB,EAAW3gB,EAAIoc,EAAQpmB,OAAQgK,EAAI,EAAGlK,IAAKkK,IAAM,EAChE0gB,EAAO5qB,GAAS,IAAJkK,EAEd,OAAOzJ,KAAKwlB,qBAAqB,CAAE2E,EAAQtE,KAG7CiC,EAAQloB,UAAUumB,WAAa,SAAmBO,EAAKhR,GACrD,GAAY,WAARA,EACF,OAAO1V,KAAKwlB,qBAAqB,CAAe,EAAbkB,EAAI8B,OAAY9B,EAAIjR,OAClD,GAAY,WAARC,EAAkB,CAC3B,MAAMsS,EAAMvH,EAAOiB,MAAmB,EAAbgF,EAAIjnB,QAC7B,IAAK,IAAIF,EAAI,EAAGA,EAAImnB,EAAIjnB,OAAQF,IAC9ByoB,EAAIqC,cAAc3D,EAAIxc,WAAW3K,GAAQ,EAAJA,GAEvC,OAAOS,KAAKwlB,qBAAqBwC,GAC5B,MAAY,WAARtS,EACJ1V,KAAKymB,UAAUC,GAIb1mB,KAAKwlB,qBAAqBkB,GAHxB1mB,KAAKugB,SAASzc,MAAM,kEAIZ,aAAR4R,EACJ1V,KAAK2mB,YAAYD,GAQf1mB,KAAKwlB,qBAAqBkB,GAPxB1mB,KAAKugB,SAASzc,MAAM,qNAQpB,OAAOV,KAAKsS,IAEJ,YAARA,EADF1V,KAAKwlB,qBAAqBkB,GAI1B1mB,KAAKugB,SAASzc,MAAM,4BAA8B4R,EAC9B,iBAI/BoS,EAAQloB,UAAUwmB,aAAe,SAAqBkE,EAAI1B,EAAQC,GAChE,GAAkB,kBAAPyB,EAAiB,CAC1B,IAAK1B,EACH,OAAO5oB,KAAKugB,SAASzc,MAAM,+CAC7B,IAAK8kB,EAAO/oB,eAAeyqB,GACzB,OAAOtqB,KAAKugB,SAASzc,MAAM,iCAC7BwmB,EAAK1B,EAAO0B,GAAI7Q,MAAM,WACtB,IAAK,IAAIla,EAAI,EAAGA,EAAI+qB,EAAG7qB,OAAQF,IAC7B+qB,EAAG/qB,IAAM,OACN,GAAI8C,MAAMO,QAAQ0nB,GAAK,CAC5BA,EAAKA,EAAGtnB,QACR,IAAK,IAAIzD,EAAI,EAAGA,EAAI+qB,EAAG7qB,OAAQF,IAC7B+qB,EAAG/qB,IAAM,EAGb,IAAK8C,MAAMO,QAAQ0nB,GACjB,OAAOtqB,KAAKugB,SAASzc,MAAM,kDACU2a,KAAKC,UAAU4L,IAGtD,IAAKzB,EAAU,CACb,GAAIyB,EAAG,IAAM,GACX,OAAOtqB,KAAKugB,SAASzc,MAAM,+BAC7BwmB,EAAGhV,OAAO,EAAG,EAAW,GAARgV,EAAG,GAAUA,EAAG,IAIlC,IAAIC,EAAO,EACX,IAAK,IAAIhrB,EAAI,EAAGA,EAAI+qB,EAAG7qB,OAAQF,IAAK,CAClC,IAAIwpB,EAAQuB,EAAG/qB,GACf,IAAKgrB,IAAQxB,GAAS,IAAMA,IAAU,EACpCwB,IAGJ,MAAMC,EAAQ/J,EAAOiB,MAAM6I,GAC3B,IAAI3J,EAAS4J,EAAM/qB,OAAS,EAC5B,IAAK,IAAIF,EAAI+qB,EAAG7qB,OAAS,EAAGF,GAAK,EAAGA,IAAK,CACvC,IAAIwpB,EAAQuB,EAAG/qB,GAEf,IADAirB,EAAM5J,KAAoB,IAARmI,GACVA,IAAU,GAAK,GACrByB,EAAM5J,KAAY,IAAgB,IAARmI,EAG9B,OAAO/oB,KAAKwlB,qBAAqBgF,IAUnC1C,EAAQloB,UAAUymB,YAAc,SAAoBoE,EAAM/U,GACxD,IAAIgR,EACJ,MAAMgE,EAAO,IAAIlb,KAAKib,GA0BtB,MAxBY,YAAR/U,EACFgR,EAAM,CACJsD,EAAIU,EAAKC,kBACTX,EAAIU,EAAKE,cAAgB,GACzBZ,EAAIU,EAAKG,cACTb,EAAIU,EAAKI,eACTd,EAAIU,EAAKK,iBACTf,EAAIU,EAAKM,iBACT,KACAxQ,KAAK,IACU,YAAR9E,EACTgR,EAAM,CACJsD,EAAIU,EAAKC,iBAAmB,KAC5BX,EAAIU,EAAKE,cAAgB,GACzBZ,EAAIU,EAAKG,cACTb,EAAIU,EAAKI,eACTd,EAAIU,EAAKK,iBACTf,EAAIU,EAAKM,iBACT,KACAxQ,KAAK,IAEPxa,KAAKugB,SAASzc,MAAM,YAAc4R,EAAM,8BAGnC1V,KAAKmmB,WAAWO,EAAK,WAG9BoB,EAAQloB,UAAU0mB,YAAc,WAC9B,OAAOtmB,KAAKwlB,qBAAqB,KAGnCsC,EAAQloB,UAAU2mB,WAAa,SAAmB9C,EAAKmF,GACrD,GAAmB,kBAARnF,EAAkB,CAC3B,IAAKmF,EACH,OAAO5oB,KAAKugB,SAASzc,MAAM,+CAC7B,IAAK8kB,EAAO/oB,eAAe4jB,GACzB,OAAOzjB,KAAKugB,SAASzc,MAAM,+BACA2a,KAAKC,UAAU+E,IAE5CA,EAAMmF,EAAOnF,GAIf,GAAmB,kBAARA,IAAqBhD,EAAOE,SAAS8C,GAAM,CACpD,MAAMwH,EAAWxH,EAAIyH,WAChBzH,EAAI0H,MAAsB,IAAdF,EAAS,IACxBA,EAASG,QAAQ,GAEnB3H,EAAMhD,EAAOtd,KAAK8nB,GAGpB,GAAIxK,EAAOE,SAAS8C,GAAM,CACxB,IAAI8G,EAAO9G,EAAIhkB,OACI,IAAfgkB,EAAIhkB,QACN8qB,IAEF,MAAM9I,EAAMhB,EAAOiB,MAAM6I,GAIzB,OAHA9G,EAAI7B,KAAKH,GACU,IAAfgC,EAAIhkB,SACNgiB,EAAI,GAAK,GACJzhB,KAAKwlB,qBAAqB/D,GAGnC,GAAIgC,EAAM,IACR,OAAOzjB,KAAKwlB,qBAAqB/B,GAEnC,GAAIA,EAAM,IACR,OAAOzjB,KAAKwlB,qBAAqB,CAAC,EAAG/B,IAEvC,IAAI8G,EAAO,EACX,IAAK,IAAIhrB,EAAIkkB,EAAKlkB,GAAK,IAAOA,IAAM,EAClCgrB,IAEF,MAAM9I,EAAM,IAAIpf,MAAMkoB,GACtB,IAAK,IAAIhrB,EAAIkiB,EAAIhiB,OAAS,EAAGF,GAAK,EAAGA,IACnCkiB,EAAIliB,GAAW,IAANkkB,EACTA,IAAQ,EAMV,OAJY,IAAThC,EAAI,IACLA,EAAI2J,QAAQ,GAGPprB,KAAKwlB,qBAAqB/E,EAAOtd,KAAKse,KAG/CqG,EAAQloB,UAAU4mB,YAAc,SAAoBjjB,GAClD,OAAOvD,KAAKwlB,qBAAqBjiB,EAAQ,IAAO,IAGlDukB,EAAQloB,UAAU0lB,KAAO,SAAapF,EAAQsC,GAG5C,MAFsB,oBAAXtC,IACTA,EAASA,EAAOsC,IACXtC,EAAOI,YAAY,OAAOuH,MAGnCC,EAAQloB,UAAUgmB,aAAe,SAAqByF,EAAY9K,EAAU0B,GAC1E,MAAMC,EAAQliB,KAAKmiB,WACnB,IAAI5iB,EACJ,GAAyB,OAArB2iB,EAAe,QACjB,OAAO,EAET,MAAMzM,EAAO4V,EAAW7Q,OAIxB,QAH4BmL,IAAxBzD,EAAMoJ,gBACRpJ,EAAMoJ,cAAgBtrB,KAAK0lB,aAAaxD,EAAe,QAAG3B,EAAU0B,GAAQzH,QAE1E/E,EAAKhW,SAAWyiB,EAAMoJ,cAAc7rB,OACtC,OAAO,EAET,IAAKF,EAAE,EAAGA,EAAIkW,EAAKhW,OAAQF,IACzB,GAAIkW,EAAKlW,KAAO2iB,EAAMoJ,cAAc/rB,GAClC,OAAO,EAEX,OAAO,uCCvQT,MAAMqgB,EAAW1Y,EAEjB0Y,EAAS+H,IAAM,EAAQ,OACvB/H,EAAS6J,IAAM,EAAQ,yCCHvB,MAAM5J,EAAW,EAAQ,OAEnBkK,EAAa,EAAQ,OAE3B,SAASwB,EAAWrL,GAClB6J,EAAWjqB,KAAKE,KAAMkgB,GACtBlgB,KAAKqgB,IAAM,MAEbR,EAAS0L,EAAYxB,GACrB9iB,EAAOC,QAAUqkB,EAEjBA,EAAW3rB,UAAUuZ,OAAS,SAAgB1D,EAAMoF,GAClD,MAEM3P,EAFM6e,EAAWnqB,UAAUuZ,OAAOrZ,KAAKE,KAAMyV,GAErC1S,SAAS,UACjB0e,EAAM,CAAE,cAAgB5G,EAAQ+O,MAAQ,SAC9C,IAAK,IAAIrqB,EAAI,EAAGA,EAAI2L,EAAEzL,OAAQF,GAAK,GACjCkiB,EAAI3O,KAAK5H,EAAElI,MAAMzD,EAAGA,EAAI,KAE1B,OADAkiB,EAAI3O,KAAK,YAAc+H,EAAQ+O,MAAQ,SAChCnI,EAAIjH,KAAK,2EC8CX,SAASgR,EAAUC,EAASC,EAAYhZ,EAAGiZ,GAE9C,OAAO,IAAKjZ,IAAMA,EAAIkZ,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUxoB,GAAS,IAAMyoB,EAAKL,EAAUloB,KAAKF,IAAW,MAAO+F,GAAKwiB,EAAOxiB,IACpF,SAAS2iB,EAAS1oB,GAAS,IAAMyoB,EAAKL,EAAiB,MAAEpoB,IAAW,MAAO+F,GAAKwiB,EAAOxiB,IACvF,SAAS0iB,EAAKrN,GAJlB,IAAepb,EAIaob,EAAOrb,KAAOuoB,EAAQlN,EAAOpb,QAJ1CA,EAIyDob,EAAOpb,MAJhDA,aAAiBmP,EAAInP,EAAQ,IAAImP,GAAE,SAAUmZ,GAAWA,EAAQtoB,OAIT2oB,KAAKH,EAAWE,GAClGD,GAAML,EAAYA,EAAU5rB,MAAM0rB,EAASC,GAAc,KAAKjoB,WAI/D,SAAS0oB,EAAYV,EAAStlB,GACjC,IAAsGkD,EAAGyI,EAAGlF,EAAGxD,EAA3GgjB,EAAI,CAAExC,MAAO,EAAGyC,KAAM,WAAa,GAAW,EAAPzf,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAO0f,KAAM,GAAIC,IAAK,IAChG,OAAOnjB,EAAI,CAAE3F,KAAM+oB,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX9pB,SAA0B0G,EAAE1G,OAAOC,UAAY,WAAa,OAAO3C,OAAUoJ,EACvJ,SAASojB,EAAK1pB,GAAK,OAAO,SAAUyL,GAAK,OACzC,SAAcke,GACV,GAAIpjB,EAAG,MAAM,IAAI7F,UAAU,mCAC3B,KAAO4oB,OACH,GAAI/iB,EAAI,EAAGyI,IAAMlF,EAAY,EAAR6f,EAAG,GAAS3a,EAAU,OAAI2a,EAAG,GAAK3a,EAAS,SAAOlF,EAAIkF,EAAU,SAAMlF,EAAE9M,KAAKgS,GAAI,GAAKA,EAAErO,SAAWmJ,EAAIA,EAAE9M,KAAKgS,EAAG2a,EAAG,KAAKnpB,KAAM,OAAOsJ,EAE3J,OADIkF,EAAI,EAAGlF,IAAG6f,EAAK,CAAS,EAARA,EAAG,GAAQ7f,EAAErJ,QACzBkpB,EAAG,IACP,KAAK,EAAG,KAAK,EAAG7f,EAAI6f,EAAI,MACxB,KAAK,EAAc,OAAXL,EAAExC,QAAgB,CAAErmB,MAAOkpB,EAAG,GAAInpB,MAAM,GAChD,KAAK,EAAG8oB,EAAExC,QAAS9X,EAAI2a,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKL,EAAEG,IAAItY,MAAOmY,EAAEE,KAAKrY,MAAO,SACxC,QACI,KAAkBrH,GAAZA,EAAIwf,EAAEE,MAAY7sB,OAAS,GAAKmN,EAAEA,EAAEnN,OAAS,MAAkB,IAAVgtB,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEL,EAAI,EAAG,SACjG,GAAc,IAAVK,EAAG,MAAc7f,GAAM6f,EAAG,GAAK7f,EAAE,IAAM6f,EAAG,GAAK7f,EAAE,IAAM,CAAEwf,EAAExC,MAAQ6C,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYL,EAAExC,MAAQhd,EAAE,GAAI,CAAEwf,EAAExC,MAAQhd,EAAE,GAAIA,EAAI6f,EAAI,MAC7D,GAAI7f,GAAKwf,EAAExC,MAAQhd,EAAE,GAAI,CAAEwf,EAAExC,MAAQhd,EAAE,GAAIwf,EAAEG,IAAIzZ,KAAK2Z,GAAK,MACvD7f,EAAE,IAAIwf,EAAEG,IAAItY,MAChBmY,EAAEE,KAAKrY,MAAO,SAEtBwY,EAAKtmB,EAAKrG,KAAK2rB,EAASW,GAC1B,MAAO9iB,GAAKmjB,EAAK,CAAC,EAAGnjB,GAAIwI,EAAI,EAAK,QAAUzI,EAAIuD,EAAI,EACtD,GAAY,EAAR6f,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAElpB,MAAOkpB,EAAG,GAAKA,EAAG,QAAK,EAAQnpB,MAAM,GArB9B0oB,CAAK,CAAClpB,EAAGyL,kDCrE9C,SAASme,EAAqBC,EAAS9R,GAClD,IAAI+R,EAAQ5sB,UACI,IAAZ6a,IAAsBA,EAAU,IACpC,IAAIgS,EAAKhS,EAAQiS,iBAAkBA,OAA0B,IAAPD,GAAuBA,EAAIE,EAAKlS,EAAQmS,UAAWA,OAAmB,IAAPD,EAAgB,QAAUA,EAAIE,EAAKpS,EAAQqS,aAAcA,OAAsB,IAAPD,EAAgB,IAAI,IAAJ,CAAa,CAAEE,OAL7M,IAKmOjf,IAJvO,MAI0P+e,EACrQ,OAAO,SAAUG,GACb,ICX4BC,EDWxBC,EAAMF,EAAOE,IAAKnK,EAASiK,EAAOjK,OAAQoK,EAASH,EAAOG,OAAQC,EAAmBJ,EAAOI,iBAAkBC,EAAcL,EAAOK,YACnIC,OAAkC,IAAtBN,EAAOJ,IAA+C,OAAtBI,EAAOJ,GACjDI,EAAOJ,GACPF,EACN,GAAe,QAAX3J,GAAoBuK,EAAU,CAE9B,IAAIC,GCjBoBN,EDiBEK,GChBlB3jB,KAAOsjB,EAAMO,KAAOP,EAAMQ,KACjB,oBAAdR,EAAMO,KAA2C,oBAAdP,EAAMtjB,KAA2C,oBAAdsjB,EAAMQ,IDezCH,EAAWR,EAE7CY,EEjBD,WAEX,IADA,IAAI1L,EAAO,GACF2L,EAAK,EAAGA,EAAKvuB,UAAUC,OAAQsuB,IACpC3L,EAAK2L,GAAMvuB,UAAUuuB,GAEzB,IAAIC,EAAW,eAAe,EAAQ5L,GAClCyK,EAAKmB,EAASvU,MAAM,KAAMwU,EAAUpB,EAAG,GAAIqB,EAAcrB,EAAG,GAChE,GAAIqB,EAAa,CAEb,OAAOD,EAAU,IADAC,EAAYzU,MAAM,KACD0U,OAAO3T,KAAK,KAElD,OAAOwT,EFMeI,CAAed,EAAKC,EAAQC,GACtCa,EAAkBV,EAAQC,IAAIE,GAClC,OAAKO,GAAmBZ,GACpBY,EAAwC,EAAkBzB,OAAO,OAAQ,GAAQ,WAC7E,IAAI0B,EACJ,OAAO,EAAoBtuB,MAAM,SAAU6sB,GACvC,OAAQA,EAAGjD,OACP,KAAK,EAED,OADAiD,EAAGP,KAAKxZ,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAa6Z,EAAQS,IACjC,KAAK,EAAG,MAAO,CAAC,EAAcP,EAAGR,QACjC,KAAK,EAGD,MAFAiC,EAAWzB,EAAGR,OACdsB,EAAQE,IAAIC,GACNQ,EACV,KAAK,EAAG,MAAO,CAAC,UAK5BX,EAAQ5jB,IAAI+jB,EAASO,GACdA,IAGsB,SAA7BE,QAAQC,IAAIC,cAEZvW,QAAQwW,KAAK,kEAAiEZ,GAE3EO,GAEX,OAAO1B,EAAQS,yCGnDvB,MAAMuB,EAAU,EAAQ,OAElBC,EAAMlsB,OAAO,OACbmsB,EAASnsB,OAAO,UAChBosB,EAAoBpsB,OAAO,oBAC3BqsB,EAAcrsB,OAAO,cACrBssB,EAAUtsB,OAAO,UACjBusB,EAAUvsB,OAAO,WACjBwsB,EAAoBxsB,OAAO,kBAC3BysB,EAAWzsB,OAAO,WAClB0sB,EAAQ1sB,OAAO,SACf2sB,EAAoB3sB,OAAO,kBAE3B4sB,EAAc,IAAM,EAkP1B,MAAM1B,EAAM,CAAC2B,EAAM5vB,EAAK6vB,KACtB,MAAMxqB,EAAOuqB,EAAKH,GAAOxB,IAAIjuB,GAC7B,GAAIqF,EAAM,CACR,MAAMyqB,EAAMzqB,EAAKzB,MACjB,GAAImsB,EAAQH,EAAME,IAEhB,GADA5B,EAAI0B,EAAMvqB,IACLuqB,EAAKR,GACR,YAEES,IACED,EAAKF,KACPrqB,EAAKzB,MAAM0P,IAAMzD,KAAKyD,OACxBsc,EAAKJ,GAAUQ,YAAY3qB,IAG/B,OAAOyqB,EAAIlsB,QAITmsB,EAAU,CAACH,EAAME,KACrB,IAAKA,IAASA,EAAItC,SAAWoC,EAAKP,GAChC,OAAO,EAET,MAAMY,EAAOpgB,KAAKyD,MAAQwc,EAAIxc,IAC9B,OAAOwc,EAAItC,OAASyC,EAAOH,EAAItC,OAC3BoC,EAAKP,IAAaY,EAAOL,EAAKP,IAG9Ba,EAAON,IACX,GAAIA,EAAKV,GAAUU,EAAKX,GACtB,IAAK,IAAIkB,EAASP,EAAKJ,GAAUY,KAC/BR,EAAKV,GAAUU,EAAKX,IAAmB,OAAXkB,GAAkB,CAI9C,MAAM7I,EAAO6I,EAAO7I,KACpB4G,EAAI0B,EAAMO,GACVA,EAAS7I,IAKT4G,EAAM,CAAC0B,EAAMvqB,KACjB,GAAIA,EAAM,CACR,MAAMyqB,EAAMzqB,EAAKzB,MACbgsB,EAAKN,IACPM,EAAKN,GAASQ,EAAI9vB,IAAK8vB,EAAIlsB,OAE7BgsB,EAAKV,IAAWY,EAAIhwB,OACpB8vB,EAAKH,GAAOY,OAAOP,EAAI9vB,KACvB4vB,EAAKJ,GAAUc,WAAWjrB,KAI9B,MAAMkrB,EACJjtB,YAAatD,EAAK4D,EAAO9D,EAAQwT,EAAKka,GACpCntB,KAAKL,IAAMA,EACXK,KAAKuD,MAAQA,EACbvD,KAAKP,OAASA,EACdO,KAAKiT,IAAMA,EACXjT,KAAKmtB,OAASA,GAAU,GAI5B,MAAMgD,EAAc,CAACZ,EAAMa,EAAIprB,EAAMqrB,KACnC,IAAIZ,EAAMzqB,EAAKzB,MACXmsB,EAAQH,EAAME,KAChB5B,EAAI0B,EAAMvqB,GACLuqB,EAAKR,KACRU,OAAM9J,IAEN8J,GACFW,EAAGtwB,KAAKuwB,EAAOZ,EAAIlsB,MAAOksB,EAAI9vB,IAAK4vB,IAGvCtoB,EAAOC,QAnTP,MACEjE,YAAa4X,GAOX,GANuB,kBAAZA,IACTA,EAAU,CAAE3M,IAAK2M,IAEdA,IACHA,EAAU,IAERA,EAAQ3M,MAA+B,kBAAhB2M,EAAQ3M,KAAoB2M,EAAQ3M,IAAM,GACnE,MAAM,IAAI1K,UAAU,qCAEVxD,KAAK4uB,GAAO/T,EAAQ3M,KAAOoiB,EAAAA,EAAvC,MAEMC,EAAK1V,EAAQpb,QAAU6vB,EAG7B,GAFAtvB,KAAK8uB,GAAoC,oBAAPyB,EAAqBjB,EAAciB,EACrEvwB,KAAK+uB,GAAelU,EAAQ2V,QAAS,EACjC3V,EAAQsS,QAAoC,kBAAnBtS,EAAQsS,OACnC,MAAM,IAAI3pB,UAAU,2BACtBxD,KAAKgvB,GAAWnU,EAAQsS,QAAU,EAClCntB,KAAKivB,GAAWpU,EAAQ4V,QACxBzwB,KAAKkvB,GAAqBrU,EAAQ6V,iBAAkB,EACpD1wB,KAAKqvB,GAAqBxU,EAAQ8V,iBAAkB,EACpD3wB,KAAKmV,QAIHjH,QAAK0iB,GACP,GAAkB,kBAAPA,GAAmBA,EAAK,EACjC,MAAM,IAAIptB,UAAU,qCAEtBxD,KAAK4uB,GAAOgC,GAAMN,EAAAA,EAClBT,EAAK7vB,MAEHkO,UACF,OAAOlO,KAAK4uB,GAGViC,eAAYA,GACd7wB,KAAK+uB,KAAiB8B,EAEpBA,iBACF,OAAO7wB,KAAK+uB,GAGV5B,WAAQ2D,GACV,GAAkB,kBAAPA,EACT,MAAM,IAAIttB,UAAU,wCAEtBxD,KAAKgvB,GAAW8B,EAChBjB,EAAK7vB,MAEHmtB,aACF,OAAOntB,KAAKgvB,GAIV+B,qBAAkBC,GACF,oBAAPA,IACTA,EAAK1B,GAEH0B,IAAOhxB,KAAK8uB,KACd9uB,KAAK8uB,GAAqBkC,EAC1BhxB,KAAK6uB,GAAU,EACf7uB,KAAKmvB,GAAU5oB,SAAQkpB,IACrBA,EAAIhwB,OAASO,KAAK8uB,GAAmBW,EAAIlsB,MAAOksB,EAAI9vB,KACpDK,KAAK6uB,IAAWY,EAAIhwB,WAGxBowB,EAAK7vB,MAEH+wB,uBAAsB,OAAO/wB,KAAK8uB,GAElCrvB,aAAY,OAAOO,KAAK6uB,GACxBoC,gBAAe,OAAOjxB,KAAKmvB,GAAU1vB,OAEzCyxB,SAAUd,EAAIC,GACZA,EAAQA,GAASrwB,KACjB,IAAK,IAAI8vB,EAAS9vB,KAAKmvB,GAAUY,KAAiB,OAAXD,GAAkB,CACvD,MAAM7I,EAAO6I,EAAO7I,KACpBkJ,EAAYnwB,KAAMowB,EAAIN,EAAQO,GAC9BP,EAAS7I,GAIb1gB,QAAS6pB,EAAIC,GACXA,EAAQA,GAASrwB,KACjB,IAAK,IAAI8vB,EAAS9vB,KAAKmvB,GAAUgC,KAAiB,OAAXrB,GAAkB,CACvD,MAAMrsB,EAAOqsB,EAAOrsB,KACpB0sB,EAAYnwB,KAAMowB,EAAIN,EAAQO,GAC9BP,EAASrsB,GAIb3C,OACE,OAAOd,KAAKmvB,GAAUjE,UAAUvkB,KAAIwD,GAAKA,EAAExK,MAG7CipB,SACE,OAAO5oB,KAAKmvB,GAAUjE,UAAUvkB,KAAIwD,GAAKA,EAAE5G,QAG7C4R,QACMnV,KAAKivB,IACLjvB,KAAKmvB,IACLnvB,KAAKmvB,GAAU1vB,QACjBO,KAAKmvB,GAAU5oB,SAAQkpB,GAAOzvB,KAAKivB,GAASQ,EAAI9vB,IAAK8vB,EAAIlsB,SAG3DvD,KAAKovB,GAAS,IAAIgC,IAClBpxB,KAAKmvB,GAAY,IAAIR,EACrB3uB,KAAK6uB,GAAU,EAGjBwC,OACE,OAAOrxB,KAAKmvB,GAAUxoB,KAAI8oB,IACxBC,EAAQ1vB,KAAMyvB,IAAe,CAC3BtlB,EAAGslB,EAAI9vB,IACP4O,EAAGkhB,EAAIlsB,MACP+F,EAAGmmB,EAAIxc,KAAOwc,EAAItC,QAAU,MAC3BjC,UAAU7H,QAAO3Z,GAAKA,IAG7B4nB,UACE,OAAOtxB,KAAKmvB,GAGdplB,IAAKpK,EAAK4D,EAAO4pB,GAGf,IAFAA,EAASA,GAAUntB,KAAKgvB,KAEQ,kBAAX7B,EACnB,MAAM,IAAI3pB,UAAU,2BAEtB,MAAMyP,EAAMka,EAAS3d,KAAKyD,MAAQ,EAC5B9Q,EAAMnC,KAAK8uB,GAAmBvrB,EAAO5D,GAE3C,GAAIK,KAAKovB,GAAOmC,IAAI5xB,GAAM,CACxB,GAAIwC,EAAMnC,KAAK4uB,GAEb,OADAf,EAAI7tB,KAAMA,KAAKovB,GAAOxB,IAAIjuB,KACnB,EAGT,MACMmhB,EADO9gB,KAAKovB,GAAOxB,IAAIjuB,GACX4D,MAgBlB,OAZIvD,KAAKivB,KACFjvB,KAAKkvB,IACRlvB,KAAKivB,GAAStvB,EAAKmhB,EAAKvd,QAG5Bud,EAAK7N,IAAMA,EACX6N,EAAKqM,OAASA,EACdrM,EAAKvd,MAAQA,EACbvD,KAAK6uB,IAAW1sB,EAAM2e,EAAKrhB,OAC3BqhB,EAAKrhB,OAAS0C,EACdnC,KAAK4tB,IAAIjuB,GACTkwB,EAAK7vB,OACE,EAGT,MAAMyvB,EAAM,IAAIS,EAAMvwB,EAAK4D,EAAOpB,EAAK8Q,EAAKka,GAG5C,OAAIsC,EAAIhwB,OAASO,KAAK4uB,IAChB5uB,KAAKivB,IACPjvB,KAAKivB,GAAStvB,EAAK4D,IAEd,IAGTvD,KAAK6uB,IAAWY,EAAIhwB,OACpBO,KAAKmvB,GAAU/D,QAAQqE,GACvBzvB,KAAKovB,GAAOrlB,IAAIpK,EAAKK,KAAKmvB,GAAUgC,MACpCtB,EAAK7vB,OACE,GAGTuxB,IAAK5xB,GACH,IAAKK,KAAKovB,GAAOmC,IAAI5xB,GAAM,OAAO,EAClC,MAAM8vB,EAAMzvB,KAAKovB,GAAOxB,IAAIjuB,GAAK4D,MACjC,OAAQmsB,EAAQ1vB,KAAMyvB,GAGxB7B,IAAKjuB,GACH,OAAOiuB,EAAI5tB,KAAML,GAAK,GAGxB6xB,KAAM7xB,GACJ,OAAOiuB,EAAI5tB,KAAML,GAAK,GAGxBsU,MACE,MAAMjP,EAAOhF,KAAKmvB,GAAUY,KAC5B,OAAK/qB,GAGL6oB,EAAI7tB,KAAMgF,GACHA,EAAKzB,OAHH,KAMXsqB,IAAKluB,GACHkuB,EAAI7tB,KAAMA,KAAKovB,GAAOxB,IAAIjuB,IAG5B8xB,KAAMvvB,GAEJlC,KAAKmV,QAEL,MAAMlC,EAAMzD,KAAKyD,MAEjB,IAAK,IAAIhJ,EAAI/H,EAAIzC,OAAS,EAAGwK,GAAK,EAAGA,IAAK,CACxC,MAAMwlB,EAAMvtB,EAAI+H,GACVynB,EAAYjC,EAAInmB,GAAK,EAC3B,GAAkB,IAAdooB,EAEF1xB,KAAK+J,IAAI0lB,EAAItlB,EAAGslB,EAAIlhB,OACjB,CACH,MAAM4e,EAASuE,EAAYze,EAEvBka,EAAS,GACXntB,KAAK+J,IAAI0lB,EAAItlB,EAAGslB,EAAIlhB,EAAG4e,KAM/BwE,QACE3xB,KAAKovB,GAAO7oB,SAAQ,CAAChD,EAAO5D,IAAQiuB,EAAI5tB,KAAML,GAAK,uCC7PvDsH,EAAOC,QAAU,SAAUynB,GACzBA,EAAQ/uB,UAAU8C,OAAOC,UAAY,YACnC,IAAK,IAAImtB,EAAS9vB,KAAKmxB,KAAMrB,EAAQA,EAASA,EAAOrsB,WAC7CqsB,EAAOvsB,4CCEnB,SAASorB,EAASiD,GAChB,IAAIrC,EAAOvvB,KASX,GARMuvB,aAAgBZ,IACpBY,EAAO,IAAIZ,GAGbY,EAAKQ,KAAO,KACZR,EAAK4B,KAAO,KACZ5B,EAAK9vB,OAAS,EAEVmyB,GAAgC,oBAAjBA,EAAKrrB,QACtBqrB,EAAKrrB,SAAQ,SAAUua,GACrByO,EAAKzc,KAAKgO,WAEP,GAAIthB,UAAUC,OAAS,EAC5B,IAAK,IAAIF,EAAI,EAAG0K,EAAIzK,UAAUC,OAAQF,EAAI0K,EAAG1K,IAC3CgwB,EAAKzc,KAAKtT,UAAUD,IAIxB,OAAOgwB,EAoVT,SAASsC,EAAQtC,EAAMvqB,EAAMzB,GAC3B,IAAIuuB,EAAW9sB,IAASuqB,EAAK4B,KAC3B,IAAItP,EAAKte,EAAO,KAAMyB,EAAMuqB,GAC5B,IAAI1N,EAAKte,EAAOyB,EAAMA,EAAKvB,KAAM8rB,GAWnC,OATsB,OAAlBuC,EAASruB,OACX8rB,EAAKQ,KAAO+B,GAEQ,OAAlBA,EAAS7K,OACXsI,EAAK4B,KAAOW,GAGdvC,EAAK9vB,SAEEqyB,EAGT,SAAShf,EAAMyc,EAAMzO,GACnByO,EAAKQ,KAAO,IAAIlO,EAAKf,EAAMyO,EAAKQ,KAAM,KAAMR,GACvCA,EAAK4B,OACR5B,EAAK4B,KAAO5B,EAAKQ,MAEnBR,EAAK9vB,SAGP,SAAS2rB,EAASmE,EAAMzO,GACtByO,EAAK4B,KAAO,IAAItP,EAAKf,EAAM,KAAMyO,EAAK4B,KAAM5B,GACvCA,EAAKQ,OACRR,EAAKQ,KAAOR,EAAK4B,MAEnB5B,EAAK9vB,SAGP,SAASoiB,EAAMte,EAAO0jB,EAAMxjB,EAAMmuB,GAChC,KAAM5xB,gBAAgB6hB,GACpB,OAAO,IAAIA,EAAKte,EAAO0jB,EAAMxjB,EAAMmuB,GAGrC5xB,KAAK4xB,KAAOA,EACZ5xB,KAAKuD,MAAQA,EAET0jB,GACFA,EAAKxjB,KAAOzD,KACZA,KAAKinB,KAAOA,GAEZjnB,KAAKinB,KAAO,KAGVxjB,GACFA,EAAKwjB,KAAOjnB,KACZA,KAAKyD,KAAOA,GAEZzD,KAAKyD,KAAO,KAjahBwD,EAAOC,QAAUynB,EAEjBA,EAAQ9M,KAAOA,EACf8M,EAAQoD,OAASpD,EAyBjBA,EAAQ/uB,UAAUqwB,WAAa,SAAUjrB,GACvC,GAAIA,EAAK4sB,OAAS5xB,KAChB,MAAM,IAAI+D,MAAM,oDAGlB,IAAIN,EAAOuB,EAAKvB,KACZwjB,EAAOjiB,EAAKiiB,KAsBhB,OApBIxjB,IACFA,EAAKwjB,KAAOA,GAGVA,IACFA,EAAKxjB,KAAOA,GAGVuB,IAAShF,KAAKmxB,OAChBnxB,KAAKmxB,KAAO1tB,GAEVuB,IAAShF,KAAK+vB,OAChB/vB,KAAK+vB,KAAO9I,GAGdjiB,EAAK4sB,KAAKnyB,SACVuF,EAAKvB,KAAO,KACZuB,EAAKiiB,KAAO,KACZjiB,EAAK4sB,KAAO,KAELnuB,GAGTkrB,EAAQ/uB,UAAU+vB,YAAc,SAAU3qB,GACxC,GAAIA,IAAShF,KAAKmxB,KAAlB,CAIInsB,EAAK4sB,MACP5sB,EAAK4sB,KAAK3B,WAAWjrB,GAGvB,IAAImsB,EAAOnxB,KAAKmxB,KAChBnsB,EAAK4sB,KAAO5xB,KACZgF,EAAKvB,KAAO0tB,EACRA,IACFA,EAAKlK,KAAOjiB,GAGdhF,KAAKmxB,KAAOnsB,EACPhF,KAAK+vB,OACR/vB,KAAK+vB,KAAO/qB,GAEdhF,KAAKP,WAGPkvB,EAAQ/uB,UAAUoyB,SAAW,SAAUhtB,GACrC,GAAIA,IAAShF,KAAK+vB,KAAlB,CAII/qB,EAAK4sB,MACP5sB,EAAK4sB,KAAK3B,WAAWjrB,GAGvB,IAAI+qB,EAAO/vB,KAAK+vB,KAChB/qB,EAAK4sB,KAAO5xB,KACZgF,EAAKiiB,KAAO8I,EACRA,IACFA,EAAKtsB,KAAOuB,GAGdhF,KAAK+vB,KAAO/qB,EACPhF,KAAKmxB,OACRnxB,KAAKmxB,KAAOnsB,GAEdhF,KAAKP,WAGPkvB,EAAQ/uB,UAAUkT,KAAO,WACvB,IAAK,IAAIvT,EAAI,EAAG0K,EAAIzK,UAAUC,OAAQF,EAAI0K,EAAG1K,IAC3CuT,EAAK9S,KAAMR,UAAUD,IAEvB,OAAOS,KAAKP,QAGdkvB,EAAQ/uB,UAAUwrB,QAAU,WAC1B,IAAK,IAAI7rB,EAAI,EAAG0K,EAAIzK,UAAUC,OAAQF,EAAI0K,EAAG1K,IAC3C6rB,EAAQprB,KAAMR,UAAUD,IAE1B,OAAOS,KAAKP,QAGdkvB,EAAQ/uB,UAAUqU,IAAM,WACtB,GAAKjU,KAAK+vB,KAAV,CAIA,IAAIzO,EAAMthB,KAAK+vB,KAAKxsB,MAQpB,OAPAvD,KAAK+vB,KAAO/vB,KAAK+vB,KAAK9I,KAClBjnB,KAAK+vB,KACP/vB,KAAK+vB,KAAKtsB,KAAO,KAEjBzD,KAAKmxB,KAAO,KAEdnxB,KAAKP,SACE6hB,IAGTqN,EAAQ/uB,UAAUqyB,MAAQ,WACxB,GAAKjyB,KAAKmxB,KAAV,CAIA,IAAI7P,EAAMthB,KAAKmxB,KAAK5tB,MAQpB,OAPAvD,KAAKmxB,KAAOnxB,KAAKmxB,KAAK1tB,KAClBzD,KAAKmxB,KACPnxB,KAAKmxB,KAAKlK,KAAO,KAEjBjnB,KAAK+vB,KAAO,KAEd/vB,KAAKP,SACE6hB,IAGTqN,EAAQ/uB,UAAU2G,QAAU,SAAU6pB,EAAIC,GACxCA,EAAQA,GAASrwB,KACjB,IAAK,IAAI8vB,EAAS9vB,KAAKmxB,KAAM5xB,EAAI,EAAc,OAAXuwB,EAAiBvwB,IACnD6wB,EAAGtwB,KAAKuwB,EAAOP,EAAOvsB,MAAOhE,EAAGS,MAChC8vB,EAASA,EAAOrsB,MAIpBkrB,EAAQ/uB,UAAUsyB,eAAiB,SAAU9B,EAAIC,GAC/CA,EAAQA,GAASrwB,KACjB,IAAK,IAAI8vB,EAAS9vB,KAAK+vB,KAAMxwB,EAAIS,KAAKP,OAAS,EAAc,OAAXqwB,EAAiBvwB,IACjE6wB,EAAGtwB,KAAKuwB,EAAOP,EAAOvsB,MAAOhE,EAAGS,MAChC8vB,EAASA,EAAO7I,MAIpB0H,EAAQ/uB,UAAUguB,IAAM,SAAU9qB,GAChC,IAAK,IAAIvD,EAAI,EAAGuwB,EAAS9vB,KAAKmxB,KAAiB,OAAXrB,GAAmBvwB,EAAIuD,EAAGvD,IAE5DuwB,EAASA,EAAOrsB,KAElB,GAAIlE,IAAMuD,GAAgB,OAAXgtB,EACb,OAAOA,EAAOvsB,OAIlBorB,EAAQ/uB,UAAUuyB,WAAa,SAAUrvB,GACvC,IAAK,IAAIvD,EAAI,EAAGuwB,EAAS9vB,KAAK+vB,KAAiB,OAAXD,GAAmBvwB,EAAIuD,EAAGvD,IAE5DuwB,EAASA,EAAO7I,KAElB,GAAI1nB,IAAMuD,GAAgB,OAAXgtB,EACb,OAAOA,EAAOvsB,OAIlBorB,EAAQ/uB,UAAU+G,IAAM,SAAUypB,EAAIC,GACpCA,EAAQA,GAASrwB,KAEjB,IADA,IAAIshB,EAAM,IAAIqN,EACLmB,EAAS9vB,KAAKmxB,KAAiB,OAAXrB,GAC3BxO,EAAIxO,KAAKsd,EAAGtwB,KAAKuwB,EAAOP,EAAOvsB,MAAOvD,OACtC8vB,EAASA,EAAOrsB,KAElB,OAAO6d,GAGTqN,EAAQ/uB,UAAUwyB,WAAa,SAAUhC,EAAIC,GAC3CA,EAAQA,GAASrwB,KAEjB,IADA,IAAIshB,EAAM,IAAIqN,EACLmB,EAAS9vB,KAAK+vB,KAAiB,OAAXD,GAC3BxO,EAAIxO,KAAKsd,EAAGtwB,KAAKuwB,EAAOP,EAAOvsB,MAAOvD,OACtC8vB,EAASA,EAAO7I,KAElB,OAAO3F,GAGTqN,EAAQ/uB,UAAUwN,OAAS,SAAUgjB,EAAIiC,GACvC,IAAIC,EACAxC,EAAS9vB,KAAKmxB,KAClB,GAAI3xB,UAAUC,OAAS,EACrB6yB,EAAMD,MACD,KAAIryB,KAAKmxB,KAId,MAAM,IAAI3tB,UAAU,8CAHpBssB,EAAS9vB,KAAKmxB,KAAK1tB,KACnB6uB,EAAMtyB,KAAKmxB,KAAK5tB,MAKlB,IAAK,IAAIhE,EAAI,EAAc,OAAXuwB,EAAiBvwB,IAC/B+yB,EAAMlC,EAAGkC,EAAKxC,EAAOvsB,MAAOhE,GAC5BuwB,EAASA,EAAOrsB,KAGlB,OAAO6uB,GAGT3D,EAAQ/uB,UAAU2yB,cAAgB,SAAUnC,EAAIiC,GAC9C,IAAIC,EACAxC,EAAS9vB,KAAK+vB,KAClB,GAAIvwB,UAAUC,OAAS,EACrB6yB,EAAMD,MACD,KAAIryB,KAAK+vB,KAId,MAAM,IAAIvsB,UAAU,8CAHpBssB,EAAS9vB,KAAK+vB,KAAK9I,KACnBqL,EAAMtyB,KAAK+vB,KAAKxsB,MAKlB,IAAK,IAAIhE,EAAIS,KAAKP,OAAS,EAAc,OAAXqwB,EAAiBvwB,IAC7C+yB,EAAMlC,EAAGkC,EAAKxC,EAAOvsB,MAAOhE,GAC5BuwB,EAASA,EAAO7I,KAGlB,OAAOqL,GAGT3D,EAAQ/uB,UAAUsrB,QAAU,WAE1B,IADA,IAAIhpB,EAAM,IAAIG,MAAMrC,KAAKP,QAChBF,EAAI,EAAGuwB,EAAS9vB,KAAKmxB,KAAiB,OAAXrB,EAAiBvwB,IACnD2C,EAAI3C,GAAKuwB,EAAOvsB,MAChBusB,EAASA,EAAOrsB,KAElB,OAAOvB,GAGTysB,EAAQ/uB,UAAU4yB,eAAiB,WAEjC,IADA,IAAItwB,EAAM,IAAIG,MAAMrC,KAAKP,QAChBF,EAAI,EAAGuwB,EAAS9vB,KAAK+vB,KAAiB,OAAXD,EAAiBvwB,IACnD2C,EAAI3C,GAAKuwB,EAAOvsB,MAChBusB,EAASA,EAAO7I,KAElB,OAAO/kB,GAGTysB,EAAQ/uB,UAAUoD,MAAQ,SAAUG,EAAMsvB,IACxCA,EAAKA,GAAMzyB,KAAKP,QACP,IACPgzB,GAAMzyB,KAAKP,SAEb0D,EAAOA,GAAQ,GACJ,IACTA,GAAQnD,KAAKP,QAEf,IAAIizB,EAAM,IAAI/D,EACd,GAAI8D,EAAKtvB,GAAQsvB,EAAK,EACpB,OAAOC,EAELvvB,EAAO,IACTA,EAAO,GAELsvB,EAAKzyB,KAAKP,SACZgzB,EAAKzyB,KAAKP,QAEZ,IAAK,IAAIF,EAAI,EAAGuwB,EAAS9vB,KAAKmxB,KAAiB,OAAXrB,GAAmBvwB,EAAI4D,EAAM5D,IAC/DuwB,EAASA,EAAOrsB,KAElB,KAAkB,OAAXqsB,GAAmBvwB,EAAIkzB,EAAIlzB,IAAKuwB,EAASA,EAAOrsB,KACrDivB,EAAI5f,KAAKgd,EAAOvsB,OAElB,OAAOmvB,GAGT/D,EAAQ/uB,UAAU+yB,aAAe,SAAUxvB,EAAMsvB,IAC/CA,EAAKA,GAAMzyB,KAAKP,QACP,IACPgzB,GAAMzyB,KAAKP,SAEb0D,EAAOA,GAAQ,GACJ,IACTA,GAAQnD,KAAKP,QAEf,IAAIizB,EAAM,IAAI/D,EACd,GAAI8D,EAAKtvB,GAAQsvB,EAAK,EACpB,OAAOC,EAELvvB,EAAO,IACTA,EAAO,GAELsvB,EAAKzyB,KAAKP,SACZgzB,EAAKzyB,KAAKP,QAEZ,IAAK,IAAIF,EAAIS,KAAKP,OAAQqwB,EAAS9vB,KAAK+vB,KAAiB,OAAXD,GAAmBvwB,EAAIkzB,EAAIlzB,IACvEuwB,EAASA,EAAO7I,KAElB,KAAkB,OAAX6I,GAAmBvwB,EAAI4D,EAAM5D,IAAKuwB,EAASA,EAAO7I,KACvDyL,EAAI5f,KAAKgd,EAAOvsB,OAElB,OAAOmvB,GAGT/D,EAAQ/uB,UAAU0V,OAAS,SAAUkP,EAAOoO,GACtCpO,EAAQxkB,KAAKP,SACf+kB,EAAQxkB,KAAKP,OAAS,GAEpB+kB,EAAQ,IACVA,EAAQxkB,KAAKP,OAAS+kB,GAGxB,IAAK,IAAIjlB,EAAI,EAAGuwB,EAAS9vB,KAAKmxB,KAAiB,OAAXrB,GAAmBvwB,EAAIilB,EAAOjlB,IAChEuwB,EAASA,EAAOrsB,KAGlB,IAAIivB,EAAM,GACV,IAASnzB,EAAI,EAAGuwB,GAAUvwB,EAAIqzB,EAAarzB,IACzCmzB,EAAI5f,KAAKgd,EAAOvsB,OAChBusB,EAAS9vB,KAAKiwB,WAAWH,GAEZ,OAAXA,IACFA,EAAS9vB,KAAK+vB,MAGZD,IAAW9vB,KAAKmxB,MAAQrB,IAAW9vB,KAAK+vB,OAC1CD,EAASA,EAAO7I,MAGlB,IAAS1nB,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IACpCuwB,EAAS+B,EAAO7xB,KAAM8vB,EAAQtwB,UAAUD,IAE1C,OAAOmzB,GAGT/D,EAAQ/uB,UAAU0nB,QAAU,WAG1B,IAFA,IAAI6J,EAAOnxB,KAAKmxB,KACZpB,EAAO/vB,KAAK+vB,KACPD,EAASqB,EAAiB,OAAXrB,EAAiBA,EAASA,EAAO7I,KAAM,CAC7D,IAAI/b,EAAI4kB,EAAO7I,KACf6I,EAAO7I,KAAO6I,EAAOrsB,KACrBqsB,EAAOrsB,KAAOyH,EAIhB,OAFAlL,KAAKmxB,KAAOpB,EACZ/vB,KAAK+vB,KAAOoB,EACLnxB,MA2DT,IAEE,EAAQ,MAAR,CAAyB2uB,GACzB,MAAOkE,8ICtaHC,EAAuCC,EAAAA,YAC3C,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,qBAAGE,KAAK,IACN,wBAAMxpB,EAAE,gMACR,wBAAMA,EAAE,0DAKhBmpB,EAAqCQ,aAAe,CAClDN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXmN,EAAqCS,UAAY,CAC/CP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCM0qB,EAAqCT,EAAAA,YACzC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,qBAAGE,KAAK,IACN,wBAAMxpB,EAAE,mEACR,wBAAMA,EAAE,mIAKhB6pB,EAAmCF,aAAe,CAChDN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX6N,EAAmCD,UAAY,CAC7CP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCM2qB,EAAsCV,EAAAA,YAC1C,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,qBAAGE,KAAK,IACN,wBAAMxpB,EAAE,yDACR,wBAAMA,EAAE,+HAKhB8pB,EAAoCH,aAAe,CACjDN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX8N,EAAoCF,UAAY,CAC9CP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCM4qB,EAAwCX,EAAAA,YAC5C,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,qBAAGU,SAAS,mEACV,wBACEhqB,EAAE,2lEACFwpB,KAAK,MAGT,4BACE,4BAAU7I,GAAG,6DACX,wBAAM6I,KAAK,OAAOxpB,EAAE,wBAM9B+pB,EAAsCJ,aAAe,CACnDN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX+N,EAAsCH,UAAY,CAChDP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJCvCM8qB,EAAyCb,EAAAA,YAC7C,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,qBAAGU,SAAS,oEACV,wBACEhqB,EAAE,srDACFwpB,KAAK,MAGT,4BACE,4BAAU7I,GAAG,8DACX,wBAAM6I,KAAK,OAAOxpB,EAAE,wBAM9BiqB,EAAuCN,aAAe,CACpDN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXiO,EAAuCL,UAAY,CACjDP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJCvCM+qB,EAA8Bd,EAAAA,YAClC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,qBAAGE,KAAK,IACN,wBAAMxpB,EAAE,kfACR,wBAAMA,EAAE,mPAKhBkqB,EAA4BP,aAAe,CACzCN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXkO,EAA4BN,UAAY,CACtCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCMgrB,EAA8Bf,EAAAA,YAClC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,qBAAGE,KAAK,IACN,wBAAMxpB,EAAE,8aACR,wBAAMA,EAAE,kVAKhBmqB,EAA4BR,aAAe,CACzCN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXmO,EAA4BP,UAAY,CACtCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCMirB,EAA8BhB,EAAAA,YAClC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,qBAAGE,KAAK,IACN,wBAAMxpB,EAAE,6fACR,wBAAMA,EAAE,+IAKhBoqB,EAA4BT,aAAe,CACzCN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXoO,EAA4BR,UAAY,CACtCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCMkrB,EAA+BjB,EAAAA,YACnC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,6qBACFwpB,KAAK,SAKba,EAA6BV,aAAe,CAC1CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXqO,EAA6BT,UAAY,CACvCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,oJChCMmrB,EAA+BlB,EAAAA,YACnC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,03BACFwpB,KAAK,SAKbc,EAA6BX,aAAe,CAC1CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXsO,EAA6BV,UAAY,CACvCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCMorB,EAA+BnB,EAAAA,YACnC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,ylBACFwpB,KAAK,SAKbe,EAA6BZ,aAAe,CAC1CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXuO,EAA6BX,UAAY,CACvCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCMqrB,EAA+BpB,EAAAA,YACnC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,uqBACFwpB,KAAK,SAKbgB,EAA6Bb,aAAe,CAC1CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXwO,EAA6BZ,UAAY,CACvCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCMsrB,EAA+BrB,EAAAA,YACnC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,qpBACFwpB,KAAK,KAEP,wBACExpB,EAAE,kEACFwpB,KAAK,SAKbiB,EAA6Bd,aAAe,CAC1CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXyO,EAA6Bb,UAAY,CACvCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJCpCMurB,EAA+BtB,EAAAA,YACnC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,muBACFwpB,KAAK,SAKbkB,EAA6Bf,aAAe,CAC1CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX0O,EAA6Bd,UAAY,CACvCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCMwrB,EAA+BvB,EAAAA,YACnC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,mrBACFwpB,KAAK,KAEP,wBACExpB,EAAE,+JACFwpB,KAAK,SAKbmB,EAA6BhB,aAAe,CAC1CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX2O,EAA6Bf,UAAY,CACvCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJCpCMyrB,EAA+BxB,EAAAA,YACnC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,yvBACFwpB,KAAK,KAEP,wBACExpB,EAAE,0IACFwpB,KAAK,SAKboB,EAA6BjB,aAAe,CAC1CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX4O,EAA6BhB,UAAY,CACvCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,oJCpCM0rB,EAA+BzB,EAAAA,YACnC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,4rBACFwpB,KAAK,KAEP,wBACExpB,EAAE,qGACFwpB,KAAK,SAKbqB,EAA6BlB,aAAe,CAC1CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX6O,EAA6BjB,UAAY,CACvCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJCpCM2rB,EAAiC1B,EAAAA,YACrC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,8DACFwpB,KAAK,SAKbsB,EAA+BnB,aAAe,CAC5CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX8O,EAA+BlB,UAAY,CACzCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCM4rB,EAA8B3B,EAAAA,YAClC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,4DACFwpB,KAAK,SAKbuB,EAA4BpB,aAAe,CACzCN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX+O,EAA4BnB,UAAY,CACtCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCM6rB,EAA6B5B,EAAAA,YACjC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,4DACFwpB,KAAK,SAKbwB,EAA2BrB,aAAe,CACxCN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXgP,EAA2BpB,UAAY,CACrCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,oJChCM8rB,EAAgC7B,EAAAA,YACpC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,iFACFwpB,KAAK,KAEP,wBAAMxpB,EAAE,qDAAqDwpB,KAAK,SAIxEyB,EAA8BtB,aAAe,CAC3CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXiP,EAA8BrB,UAAY,CACxCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJCjCM+rB,EAA6B9B,EAAAA,YACjC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,4PACFwpB,KAAK,SAKb0B,EAA2BvB,aAAe,CACxCN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXkP,EAA2BtB,UAAY,CACrCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCMgsB,EAA+B/B,EAAAA,YACnC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,w0BACFwpB,KAAK,SAKb2B,EAA6BxB,aAAe,CAC1CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXmP,EAA6BvB,UAAY,CACvCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCMisB,EAAkChC,EAAAA,YACtC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,4WACFwpB,KAAK,SAKb4B,EAAgCzB,aAAe,CAC7CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXoP,EAAgCxB,UAAY,CAC1CP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCMksB,EAA6BjC,EAAAA,YACjC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,woBACFwpB,KAAK,SAKb6B,EAA2B1B,aAAe,CACxCN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXqP,EAA2BzB,UAAY,CACrCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,oJChCMmsB,EAAkClC,EAAAA,YACtC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBAAMtpB,EAAE,oDAAoDwpB,KAAK,KACjE,wBACE+B,SAAS,UACTC,SAAS,UACTxrB,EAAE,mUACFwpB,KAAK,SAKb8B,EAAgC3B,aAAe,CAC7CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXsP,EAAgC1B,UAAY,CAC1CP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJCnCMssB,EAAgCrC,EAAAA,YACpC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,+gBACFwpB,KAAK,SAKbiC,EAA8B9B,aAAe,CAC3CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXyP,EAA8B7B,UAAY,CACxCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCMusB,EAA+BtC,EAAAA,YACnC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,yDACFwpB,KAAK,KAEP,wBACExpB,EAAE,uPACFwpB,KAAK,SAKbkC,EAA6B/B,aAAe,CAC1CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX0P,EAA6B9B,UAAY,CACvCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJCpCMwsB,EAAsCvC,EAAAA,YAC1C,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBAAMtpB,EAAE,yBAAyBwpB,KAAK,KACtC,wBACExpB,EAAE,iEACFwpB,KAAK,SAKbmC,EAAoChC,aAAe,CACjDN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX2P,EAAoC/B,UAAY,CAC9CP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJCjCMysB,EAAuCxC,EAAAA,YAC3C,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBAAMtpB,EAAE,sBAAsBwpB,KAAK,KACnC,wBACExpB,EAAE,yDACFwpB,KAAK,SAKboC,EAAqCjC,aAAe,CAClDN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX4P,EAAqChC,UAAY,CAC/CP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJCjCM0sB,EAAwCzC,EAAAA,YAC5C,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,mVACFwpB,KAAK,KAEP,wBACExpB,EAAE,8UACFwpB,KAAK,SAKbqC,EAAsClC,aAAe,CACnDN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX6P,EAAsCjC,UAAY,CAChDP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJCpCM2sB,EAAiC1C,EAAAA,YACrC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,4SACFwpB,KAAK,SAKbsC,EAA+BnC,aAAe,CAC5CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX8P,EAA+BlC,UAAY,CACzCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCM4sB,EAA+B3C,EAAAA,YACnC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,unBACFwpB,KAAK,SAKbuC,EAA6BpC,aAAe,CAC1CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX+P,EAA6BnC,UAAY,CACvCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCM6sB,EAAkC5C,EAAAA,YACtC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,qBAAGE,KAAK,IACN,wBAAMxpB,EAAE,iHACR,wBAAMA,EAAE,wPAKhBgsB,EAAgCrC,aAAe,CAC7CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXgQ,EAAgCpC,UAAY,CAC1CP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCM8sB,EAAkC7C,EAAAA,YACtC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,yHACFwpB,KAAK,SAKbyC,EAAgCtC,aAAe,CAC7CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXiQ,EAAgCrC,UAAY,CAC1CP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCM+sB,EAAmC9C,EAAAA,YACvC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,uHACFwpB,KAAK,SAKb0C,EAAiCvC,aAAe,CAC9CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXkQ,EAAiCtC,UAAY,CAC3CP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCMgtB,EAA+B/C,EAAAA,YACnC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,yGACFwpB,KAAK,KAEP,wBAAMxpB,EAAE,4BAA4BwpB,KAAK,SAI/C2C,EAA6BxC,aAAe,CAC1CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXmQ,EAA6BvC,UAAY,CACvCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJCjCMitB,EAA+BhD,EAAAA,YACnC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,4xBACFwpB,KAAK,SAKb4C,EAA6BzC,aAAe,CAC1CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXoQ,EAA6BxC,UAAY,CACvCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCMktB,EAA8BjD,EAAAA,YAClC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,gHACFwpB,KAAK,SAKb6C,EAA4B1C,aAAe,CACzCN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXqQ,EAA4BzC,UAAY,CACtCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCMmtB,EAAkClD,EAAAA,YACtC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEyyB,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACL8yB,KAAMH,EACNvxB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,qBAAGE,KAAK,OAAO+B,SAAS,WACtB,wBACE/B,KAAK,UACLxpB,EAAE,4JAEJ,wBACEwpB,KAAK,UACLxpB,EAAE,4FAEJ,wBACEwpB,KAAK,UACLxpB,EAAE,oGAMZssB,EAAgC3C,aAAe,CAC7CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXsQ,EAAgC1C,UAAY,CAC1CP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJC1CMotB,EAAwBnD,EAAAA,YAC5B,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEyyB,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACL8yB,KAAMH,EACNvxB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBAAMtpB,EAAE,4SAIdusB,EAAsB5C,aAAe,CACnCN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXuQ,EAAsB3C,UAAY,CAChCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJC7BMqtB,EAAyBpD,EAAAA,YAC7B,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEyyB,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACL8yB,KAAMH,EACNvxB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBAAMtpB,EAAE,wRAIdwsB,EAAuB7C,aAAe,CACpCN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXwQ,EAAuB5C,UAAY,CACjCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJC7BMstB,EAAgCrD,EAAAA,YACpC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,kwBACFwpB,KAAK,SAKbiD,EAA8B9C,aAAe,CAC3CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEXyQ,EAA8B7C,UAAY,CACxCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,oJChCMutB,EAAuCtD,EAAAA,YAC3C,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,qBAAGE,KAAK,IACN,wBAAMxpB,EAAE,mGACR,wBAAMA,EAAE,yCAKhB0sB,EAAqC/C,aAAe,CAClDN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX0Q,EAAqC9C,UAAY,CAC/CP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,oJChCMwtB,EAA4BvD,EAAAA,YAChC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,4BAAU3I,GAAG,oCACX,wBAAM3gB,EAAE,mBAEV,qBAAGgqB,SAAS,yCAAyCR,KAAK,IACxD,wBAAMxpB,EAAE,mVACR,wBAAMA,EAAE,qFAKhB2sB,EAA0BhD,aAAe,CACvCN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX2Q,EAA0B/C,UAAY,CACpCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJCnCMytB,EAAqCxD,EAAAA,YACzC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,oHACFwpB,KAAK,SAKboD,EAAmCjD,aAAe,CAChDN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX4Q,EAAmChD,UAAY,CAC7CP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCM0tB,EAAkCzD,EAAAA,YACtC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEiC,SAAS,UACTC,SAAS,UACTxrB,EAAE,iYACFwpB,KAAK,SAKbqD,EAAgClD,aAAe,CAC7CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX6Q,EAAgCjD,UAAY,CAC1CP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJClCM2tB,EAAmC1D,EAAAA,YACvC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,qBAAGE,KAAK,IACN,wBAAMxpB,EAAE,4OACR,wBAAMA,EAAE,sEAKhB8sB,EAAiCnD,aAAe,CAC9CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX8Q,EAAiClD,UAAY,CAC3CP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,qJChCM4tB,EAAoC3D,EAAAA,YACxC,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,qBAAGE,KAAK,IACN,wBAAMxpB,EAAE,6IACR,wBAAMA,EAAE,iDAKhB+sB,EAAkCpD,aAAe,CAC/CN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX+Q,EAAkCnD,UAAY,CAC5CP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,sGC/BA,SAAS6tB,EAAQzuB,EAAQ0uB,GACvB,IAAI91B,EAAO1B,OAAO0B,KAAKoH,GAEvB,GAAI9I,OAAOy3B,sBAAuB,CAChC,IAAIC,EAAU13B,OAAOy3B,sBAAsB3uB,GAEvC0uB,IACFE,EAAUA,EAAQzT,QAAO,SAAU0T,GACjC,OAAO33B,OAAO43B,yBAAyB9uB,EAAQ6uB,GAAKE,eAIxDn2B,EAAKgS,KAAK/S,MAAMe,EAAMg2B,GAGxB,OAAOh2B,EAGT,SAASo2B,EAAe53B,GACtB,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAAyB,MAAhBF,UAAUD,GAAaC,UAAUD,GAAK,GAE/CA,EAAI,EACNo3B,EAAQv3B,OAAOM,IAAS,GAAM6G,SAAQ,SAAU5G,GAC9Cw3B,EAAgB73B,EAAQK,EAAKD,EAAOC,OAE7BP,OAAOg4B,0BAChBh4B,OAAOi4B,iBAAiB/3B,EAAQF,OAAOg4B,0BAA0B13B,IAEjEi3B,EAAQv3B,OAAOM,IAAS6G,SAAQ,SAAU5G,GACxCP,OAAOk4B,eAAeh4B,EAAQK,EAAKP,OAAO43B,yBAAyBt3B,EAAQC,OAKjF,OAAOL,EAGT,SAASi4B,EAAQ/U,GAaf,OATE+U,EADoB,oBAAX70B,QAAoD,kBAApBA,OAAOC,SACtC,SAAU6f,GAClB,cAAcA,GAGN,SAAUA,GAClB,OAAOA,GAAyB,oBAAX9f,QAAyB8f,EAAIvf,cAAgBP,QAAU8f,IAAQ9f,OAAO9C,UAAY,gBAAkB4iB,GAItH+U,EAAQ/U,GASjB,SAASgV,EAAkBl4B,EAAQqB,GACjC,IAAK,IAAIpB,EAAI,EAAGA,EAAIoB,EAAMlB,OAAQF,IAAK,CACrC,IAAIk4B,EAAa92B,EAAMpB,GACvBk4B,EAAWR,WAAaQ,EAAWR,aAAc,EACjDQ,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,GACjDv4B,OAAOk4B,eAAeh4B,EAAQm4B,EAAW93B,IAAK83B,IAUlD,SAASN,EAAgB3U,EAAK7iB,EAAK4D,GAYjC,OAXI5D,KAAO6iB,EACTpjB,OAAOk4B,eAAe9U,EAAK7iB,EAAK,CAC9B4D,MAAOA,EACP0zB,YAAY,EACZS,cAAc,EACdC,UAAU,IAGZnV,EAAI7iB,GAAO4D,EAGNif,EAGT,SAASrjB,IAeP,OAdAA,EAAWC,OAAOC,QAAU,SAAUC,GACpC,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAASF,UAAUD,GAEvB,IAAK,IAAII,KAAOD,EACVN,OAAOQ,UAAUC,eAAeC,KAAKJ,EAAQC,KAC/CL,EAAOK,GAAOD,EAAOC,IAK3B,OAAOL,GAGFH,EAASY,MAAMC,KAAMR,WAkB9B,SAASo4B,EAAgBr1B,GAIvB,OAHAq1B,EAAkBx4B,OAAOy4B,eAAiBz4B,OAAO04B,eAAiB,SAAyBv1B,GACzF,OAAOA,EAAEw1B,WAAa34B,OAAO04B,eAAev1B,IAEvCq1B,EAAgBr1B,GAGzB,SAASy1B,EAAgBz1B,EAAG2I,GAM1B,OALA8sB,EAAkB54B,OAAOy4B,gBAAkB,SAAyBt1B,EAAG2I,GAErE,OADA3I,EAAEw1B,UAAY7sB,EACP3I,GAGFy1B,EAAgBz1B,EAAG2I,GAgB5B,SAAS+sB,EAAuB1I,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI2I,eAAe,6DAG3B,OAAO3I,EAGT,SAAS4I,EAA2B5I,EAAMzvB,GACxC,OAAIA,GAAyB,kBAATA,GAAqC,oBAATA,EAIzCm4B,EAAuB1I,GAHrBzvB,EAMX,SAASs4B,EAAaC,GACpB,IAAIC,EA9BN,WACE,GAAuB,qBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVC,MAAsB,OAAO,EAExC,IAEE,OADAC,QAAQ/4B,UAAUuT,QAAQrT,KAAKy4B,QAAQC,UAAUG,QAAS,IAAI,iBACvD,EACP,MAAOrvB,GACP,OAAO,GAqBuBsvB,GAEhC,OAAO,WACL,IACIja,EADAka,EAAQjB,EAAgBS,GAG5B,GAAIC,EAA2B,CAC7B,IAAIQ,EAAYlB,EAAgB53B,MAAMiD,YAEtC0b,EAAS4Z,QAAQC,UAAUK,EAAOr5B,UAAWs5B,QAE7Cna,EAASka,EAAM94B,MAAMC,KAAMR,WAG7B,OAAO24B,EAA2Bn4B,KAAM2e,IAI5C,SAASoa,EAAe72B,EAAK3C,GAC3B,OAWF,SAAyB2C,GACvB,GAAIG,MAAMO,QAAQV,GAAM,OAAOA,EAZxB82B,CAAgB92B,IAmBzB,SAA+BA,EAAK3C,GAClC,IAAIwuB,EAAY,MAAP7rB,EAAc,KAAyB,qBAAXQ,QAA0BR,EAAIQ,OAAOC,WAAaT,EAAI,cAE3F,GAAU,MAAN6rB,EAAY,OAChB,IAIIkL,EAAIC,EAJJC,EAAO,GACPC,GAAK,EACLC,GAAK,EAIT,IACE,IAAKtL,EAAKA,EAAGjuB,KAAKoC,KAAQk3B,GAAMH,EAAKlL,EAAGtqB,QAAQH,QAC9C61B,EAAKrmB,KAAKmmB,EAAG11B,QAEThE,GAAK45B,EAAK15B,SAAWF,GAH4B65B,GAAK,IAK5D,MAAO3xB,GACP4xB,GAAK,EACLH,EAAKzxB,EARP,QAUE,IACO2xB,GAAsB,MAAhBrL,EAAE,QAAoBA,EAAE,SADrC,QAGE,GAAIsL,EAAI,MAAMH,GAIlB,OAAOC,EA9CwBG,CAAsBp3B,EAAK3C,IAAM8D,EAA4BnB,EAAK3C,IAsEnG,WACE,MAAM,IAAIiE,UAAU,6IAvEmF+1B,GAGzG,SAASC,EAAmBt3B,GAC1B,OAGF,SAA4BA,GAC1B,GAAIG,MAAMO,QAAQV,GAAM,OAAOD,EAAkBC,GAJ1Cu3B,CAAmBv3B,IAW5B,SAA0BoW,GACxB,GAAsB,qBAAX5V,QAAmD,MAAzB4V,EAAK5V,OAAOC,WAA2C,MAAtB2V,EAAK,cAAuB,OAAOjW,MAAMc,KAAKmV,GAZlFohB,CAAiBx3B,IAAQmB,EAA4BnB,IA8DzF,WACE,MAAM,IAAIsB,UAAU,wIA/D2Em2B,GA6CjG,SAASt2B,EAA4Bd,EAAGM,GACtC,GAAKN,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAON,EAAkBM,EAAGM,GACvD,IAAIC,EAAI1D,OAAOQ,UAAUmD,SAASjD,KAAKyC,GAAGS,MAAM,GAAI,GAEpD,MADU,WAANF,GAAkBP,EAAEU,cAAaH,EAAIP,EAAEU,YAAYC,MAC7C,QAANJ,GAAqB,QAANA,EAAoBT,MAAMc,KAAKZ,GACxC,cAANO,GAAqB,2CAA2CM,KAAKN,GAAWb,EAAkBM,EAAGM,QAAzG,GAGF,SAASZ,EAAkBC,EAAKC,IACnB,MAAPA,GAAeA,EAAMD,EAAIzC,UAAQ0C,EAAMD,EAAIzC,QAE/C,IAAK,IAAIF,EAAI,EAAG6C,EAAO,IAAIC,MAAMF,GAAM5C,EAAI4C,EAAK5C,IAAK6C,EAAK7C,GAAK2C,EAAI3C,GAEnE,OAAO6C,EAcT,SAASw3B,EAAUlT,GACjB,IAAImT,EAAiBr6B,UAAUC,OAAS,QAAsBkmB,IAAjBnmB,UAAU,GAAmBA,UAAU,GAAK,KAEzF,IAAKknB,EACH,MAAO,GAGT,IAAIoT,EAAapT,EAQjB,OANImT,GACFz6B,OAAO0B,KAAK+4B,GAAgBtzB,SAAQ,SAAUwzB,GAC5CD,EAAaA,EAAWhlB,QAAQilB,EAAaF,EAAeE,OAIzDD,EAET,SAASE,IACP,MAAgC,qBAAlBC,EAAAA,EAAOn4B,OAAyBm4B,EAAAA,EAAOn4B,OAAOo4B,WAAa,EAM3E,IAAIC,EAAqB,WACvB,IACE,OAAOF,EAAAA,EAAOn4B,OAAOwF,SAAS8yB,WAAaH,EAAAA,EAAOn4B,OAAOmgB,OAAO3a,SAAS8yB,SACzE,MAAO9wB,GACP,OAAO,IAMX,SAAS+wB,IACP,IAAI9K,EAAO/vB,UAAUC,OAAS,QAAsBkmB,IAAjBnmB,UAAU,GAAmBA,UAAU,GAAKy6B,EAAAA,EAAOn4B,OAAOytB,KAG7F,OAAIA,IAAS0K,EAAAA,EAAOn4B,OAAOw4B,KAMtBH,IALI5K,EAMA8K,EAA4B9K,EAAKtN,QAS5C,IAEIsY,EAAiB,IASjBC,EACG,GADHA,EAEU,GAFVA,EAGW,GAeXC,EAAkC,SAAUC,IAhPhD,SAAmBC,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIp3B,UAAU,sDAGtBm3B,EAAS/6B,UAAYR,OAAO2yB,OAAO6I,GAAcA,EAAWh7B,UAAW,CACrEqD,YAAa,CACXM,MAAOo3B,EACPhD,UAAU,EACVD,cAAc,KAGdkD,GAAY5C,EAAgB2C,EAAUC,GAqO1CC,CAAUJ,EAAoBC,GAE9B,IA1RoBI,EAAaC,EAAYC,EA0RzCC,EAAS7C,EAAaqC,GAE1B,SAASA,EAAmB95B,GAC1B,IAAIisB,EA8FJ,OA3YJ,SAAyBsO,EAAUJ,GACjC,KAAMI,aAAoBJ,GACxB,MAAM,IAAIt3B,UAAU,qCA6SpB23B,CAAgBn7B,KAAMy6B,IAEtB7N,EAAQqO,EAAOn7B,KAAKE,KAAMW,IACpBuhB,MAAQ,CAMZkZ,WAAYz6B,EAAM06B,kBAElBC,eAAe,EAKfC,UArDe,EA0Df3jB,QAAS,EAETE,QAAS,EAET0jB,gBAAiB,IAGnB5O,EAAM6O,QAAuB1I,EAAAA,YAC7BnG,EAAM8O,UAAyB3I,EAAAA,YAC/BnG,EAAM+O,WAA0B5I,EAAAA,YAChCnG,EAAMgP,QAAuB7I,EAAAA,YAC7BnG,EAAMiP,kBAAoBjP,EAAMiP,kBAAkBn4B,KAAKu0B,EAAuBrL,IAC9EA,EAAMkP,uBAAyBlP,EAAMkP,uBAAuBp4B,KAAKu0B,EAAuBrL,IACxFA,EAAMmP,sBAAwBnP,EAAMmP,sBAAsBr4B,KAAKu0B,EAAuBrL,IACtFA,EAAMoP,eAAiBpP,EAAMoP,eAAet4B,KAAKu0B,EAAuBrL,IACxEA,EAAMqP,cAAgBrP,EAAMqP,cAAcv4B,KAAKu0B,EAAuBrL,IACtEA,EAAMsP,gBAAkBtP,EAAMsP,gBAAgBx4B,KAAKu0B,EAAuBrL,IAC1EA,EAAMuP,gBAAkBvP,EAAMuP,gBAAgBz4B,KAAKu0B,EAAuBrL,IAC1EA,EAAMwP,sBAAwBxP,EAAMwP,sBAAsB14B,KAAKu0B,EAAuBrL,IACtFA,EAAMyP,iBAAmBzP,EAAMyP,iBAAiB34B,KAAKu0B,EAAuBrL,IAC5EA,EAAM0P,gBAAkB1P,EAAM0P,gBAAgB54B,KAAKu0B,EAAuBrL,IAC1EA,EAAM2P,eAAiB3P,EAAM2P,eAAe74B,KAAKu0B,EAAuBrL,IACxEA,EAAM4P,mBAAqB5P,EAAM4P,mBAAmB94B,KAAKu0B,EAAuBrL,IAChFA,EAAM6P,wBAA0B7P,EAAM6P,wBAAwB/4B,KAAKu0B,EAAuBrL,IAC1FA,EAAM8P,mBAAqB9P,EAAM8P,mBAAmBh5B,KAAKu0B,EAAuBrL,IAChFA,EAAM+P,wBAA0B/P,EAAM+P,wBAAwBj5B,KAAKu0B,EAAuBrL,IAC1FA,EAAMgQ,yBAA2BhQ,EAAMgQ,yBAAyBl5B,KAAKu0B,EAAuBrL,IAC5FA,EAAMiQ,aAAejQ,EAAMiQ,aAAan5B,KAAKu0B,EAAuBrL,IACpEA,EAAMkQ,gBAAkBlQ,EAAMkQ,gBAAgBp5B,KAAKu0B,EAAuBrL,IAC1EA,EAAMmQ,gBAAkBnQ,EAAMmQ,gBAAgBr5B,KAAKu0B,EAAuBrL,IAE1EA,EAAMoQ,SAAW,GAEjBpQ,EAAMqQ,cA1EQ,EA4EdrQ,EAAMsQ,aAvEO,EAyEbtQ,EAAMuQ,YAAc,GAEpBvQ,EAAMwQ,mBAAoB,EAC1BxQ,EAAMyQ,yBAA2B,KAEjCzQ,EAAM0Q,YAAa,EAEnB1Q,EAAM2Q,WAAa,GAEnB3Q,EAAM4Q,gBAAkB,EAExB5Q,EAAM6Q,cAAgB,KAEtB7Q,EAAM8Q,mBAAqB,KAC3B9Q,EAAM+Q,mBAAqB,KAC3B/Q,EAAMgR,QAAU,EAChBhR,EAAMiR,QAAU,EAEhBjR,EAAMkR,WAAa,EACnBlR,EAAMmR,WAAa,EACnBnR,EAAMoR,iBAAmB,EACzBpR,EAAMqR,iBAAmB,EAEzBrR,EAAMsR,YAAc,EACpBtR,EAAMuR,YAAc,EACpBvR,EAAMwR,UAAY,EAClBxR,EAAMyR,UAAY,EAElBzR,EAAM0R,eAAiB,KACvB1R,EAAM2R,cAAgB,EAEtB3R,EAAM4R,WAAa,EAEnB5R,EAAM6R,eAAgB,EACf7R,EA4/CT,OAv3DoBkO,EA8XPL,EA9XoBM,EA8XA,CAAC,CAChCp7B,IAAK,oBACL4D,MAAO,WACL,IAAIm7B,EAAS1+B,KAERA,KAAKW,MAAM06B,mBAEdr7B,KAAK2+B,SAAS,CACZvD,WAAW,IAKfp7B,KAAK4+B,cAAgBvE,IACrBr6B,KAAK6+B,UAAY,CACfC,OAAQ9+B,KAAK08B,mBACbqC,QAAS/+B,KAAKi8B,cACd+C,SAAUh/B,KAAKu8B,eACf0C,YAAaj/B,KAAKu8B,eAClB2C,YAAal/B,KAAKw8B,mBAClB2C,YAAan/B,KAAKw8B,mBAClB4C,UAAWp/B,KAAKw8B,mBAChB6C,cAAer/B,KAAKw8B,oBAEtBp9B,OAAO0B,KAAKd,KAAK6+B,WAAWt4B,SAAQ,SAAU/B,GAC5Ck6B,EAAOE,cAActnB,iBAAiB9S,EAAMk6B,EAAOG,UAAUr6B,OAE/DxE,KAAKs/B,kBAEN,CACD3/B,IAAK,wBACL4D,MAAO,SAA+Bg8B,GACpC,IAAIC,EAASx/B,KAQb,OANAA,KAAKy/B,cAAcl5B,SAAQ,SAAUm5B,GAC/BF,EAAO7+B,MAAM++B,EAAQx8B,QAAUq8B,EAAUG,EAAQx8B,QACnDs8B,EAAOf,eAAgB,OAInBz+B,KAAKy+B,gBAEd,CACD9+B,IAAK,qBACL4D,MAAO,SAA4Bo8B,GACjC,IAAIC,EAAS5/B,KAET6/B,GAAiB,EACjBC,EAAc,GACdC,EAAc,GAClB//B,KAAKy/B,cAAcl5B,SAAQ,SAAUm5B,GAC/BC,EAAUD,EAAQx8B,QAAU08B,EAAOj/B,MAAM++B,EAAQx8B,QACnD28B,GAAiB,EACjBC,EAAYH,EAAUD,EAAQx8B,QAAS,EACvC68B,EAAYH,EAAOj/B,MAAM++B,EAAQx8B,QAAS,OAI1C28B,GAAkB7/B,KAAKy+B,iBAEzBr/B,OAAO0B,KAAKg/B,GAAav5B,SAAQ,SAAUy5B,KACnCA,KAAWD,IAAgBC,KAAWJ,EAAOrC,aACjDqC,EAAOrC,WAAWyC,GAASC,QAAS,MAGxCjgC,KAAKy+B,eAAgB,EAErBz+B,KAAKs/B,cAAct/B,KAAKW,UAG3B,CACDhB,IAAK,uBACL4D,MAAO,WACL,IAAI28B,EAASlgC,KAEbA,KAAKmgC,YAAa,EAClB/gC,OAAO0B,KAAKd,KAAK6+B,WAAWt4B,SAAQ,SAAU/B,GAC5C07B,EAAOtB,cAAcnnB,oBAAoBjT,EAAM07B,EAAOrB,UAAUr6B,OAElExE,KAAKg9B,SAASz2B,SAAQ,SAAU65B,GAC9B,OAAO/5B,aAAa+5B,QAGvB,CACDzgC,IAAK,aACL4D,MAAO,SAAU88B,GACf,SAAS/5B,EAAWg6B,EAAIC,GACtB,OAAOF,EAAYtgC,MAAMC,KAAMR,WAOjC,OAJA8G,EAAWvD,SAAW,WACpB,OAAOs9B,EAAYt9B,YAGduD,EATF,EAUL,SAAU0B,EAAMyiB,GAChB,IAAI+V,EAASxgC,KAETsqB,EAAKhkB,YAAW,WAClBk6B,EAAOxD,SAAWwD,EAAOxD,SAAS3Z,QAAO,SAAU+c,GACjD,OAAOA,IAAQ9V,KAEjBtiB,MACCyiB,GAEH,OADAzqB,KAAKg9B,SAASlqB,KAAKwX,GACZA,MAER,CACD3qB,IAAK,uBACL4D,MAAO,WACL,IAAIk9B,EAASzgC,KAETA,KAAKq9B,0BACPr9B,KAAKqG,aAAarG,KAAKq9B,0BAGzBr9B,KAAKo9B,mBAAoB,EACzBp9B,KAAKq9B,yBAA2Br9B,KAAKsG,YAAW,WAC9Cm6B,EAAOrD,mBAAoB,EAC3BqD,EAAOpD,yBAA2B,OACjC,OAGJ,CACD19B,IAAK,sBACL4D,MAAO,SAA6Bm8B,GAClC,IAAIgB,EAAW1gC,KAAKW,MAAM++B,GACtBiB,EAAW,GAEf,GAAI3gC,KAAK4gC,cAAcF,GAErBC,EAAW3gC,KAAK6gC,YAAY7gC,KAAKu9B,WAAWmD,GAAUj/B,MAAOzB,KAAKu9B,WAAWmD,GAAUt/B,YAClF,KAAIpB,KAAK4gC,cAAc5gC,KAAKW,MAAM,GAAG0S,OAAOqsB,EAAS,eAK1D,OAAO,KAHPgB,EAAW1gC,KAAKW,MAAM,GAAG0S,OAAOqsB,EAAS,cACzCiB,EAAW3gC,KAAK6gC,YAAY7gC,KAAKu9B,WAAWmD,GAAUj/B,MAAOzB,KAAKu9B,WAAWmD,GAAUt/B,QAAQ,GAKjG,MAAO,CACL0/B,IAAKJ,EACLt/B,OAAQpB,KAAKu9B,WAAWmD,GAAUt/B,OAClCK,MAAOzB,KAAKu9B,WAAWmD,GAAUj/B,MACjCs/B,aAAcJ,EAASv/B,OACvB4/B,YAAaL,EAASl/B,SAIzB,CACD9B,IAAK,cACL4D,MAAO,SAAqB9B,EAAOL,EAAQ6/B,GACzC,IAAIC,EAAUlhC,KAAKmhC,kBACfC,EAAYF,EAAQ9/B,OAAmC,EAA1BpB,KAAKW,MAAM0gC,aACxCC,EAAWJ,EAAQz/B,MAAkC,EAA1BzB,KAAKW,MAAM0gC,aAU1C,OARKJ,IACHG,EAAYj2B,KAAKkD,IAAI+yB,EAAWhgC,GAChCkgC,EAAWn2B,KAAKkD,IAAIizB,EAAU7/B,IAGjB6/B,EAAWF,EACX3/B,EAAQL,EAId,CACLK,MAAOA,EAAQ2/B,EAAYhgC,EAC3BA,OAAQggC,GAIL,CACL3/B,MAAO6/B,EACPlgC,OAAQA,EAASkgC,EAAW7/B,KAG/B,CACD9B,IAAK,gBACL4D,MAAO,WACL,IAAIg4B,EAAY/7B,UAAUC,OAAS,QAAsBkmB,IAAjBnmB,UAAU,GAAmBA,UAAU,GAAKQ,KAAKkiB,MAAMqZ,UAC3FgG,EAAmBvhC,KAAKwhC,oBAAoB,WAEhD,GAAyB,OAArBD,EACF,MAAO,CACLE,KAAM,EACNC,KAAM,EACNC,KAAM,EACNC,KAAM,GAIV,IAAIV,EAAUlhC,KAAKmhC,kBACfU,EAAiB7hC,KAAK8hC,kBAAkBvG,GACxCkG,EAAO,EASPE,EAAO,EASX,MAAO,CACLF,KAfAA,EAFEI,EAAiBN,EAAiB9/B,MAAQy/B,EAAQz/B,MAAQ,GAEpDy/B,EAAQz/B,MAAQogC,EAAiBN,EAAiB9/B,OAAS,GAE3DogC,EAAiBN,EAAiB9/B,MAAQy/B,EAAQz/B,OAAS,EAcnEkgC,KAPAA,EAFEE,EAAiBN,EAAiBngC,OAAS8/B,EAAQ9/B,OAAS,GAEtD8/B,EAAQ9/B,OAASygC,EAAiBN,EAAiBngC,QAAU,GAE7DygC,EAAiBN,EAAiBngC,OAAS8/B,EAAQ9/B,QAAU,EAMrEsgC,MAAO,EAAID,EACXG,MAAO,EAAID,KAId,CACDhiC,IAAK,cACL4D,MAAO,WACL,MAAO,CAAC,CACNL,KAAM,UACN6+B,UAAW,IAAI1uB,OAAOrT,KAAKw+B,aAC1B,CACDt7B,KAAM,mBACN6+B,UAAW,IAAI1uB,OAAOrT,KAAKw+B,aAC1B,CACDt7B,KAAM,UACN6+B,UAAW,IAAI1uB,OAAOrT,KAAKw+B,WAAa,IACvC,CACDt7B,KAAM,mBACN6+B,UAAW,IAAI1uB,OAAOrT,KAAKw+B,WAAa,IACvC,CACDt7B,KAAM,UACN6+B,UAAW,IAAI1uB,OAAOrT,KAAKw+B,WAAa,IACvC,CACDt7B,KAAM,mBACN6+B,UAAW,IAAI1uB,OAAOrT,KAAKw+B,WAAa,OAO3C,CACD7+B,IAAK,oBACL4D,MAAO,WACL,IAAIg4B,EAAY/7B,UAAUC,OAAS,QAAsBkmB,IAAjBnmB,UAAU,GAAmBA,UAAU,GAAKQ,KAAKkiB,MAAMqZ,UAC/F,OAAOpwB,KAAKM,IA3XD,MA2XiB8vB,KAM7B,CACD57B,IAAK,kBACL4D,MAAO,WACL,OAAIvD,KAAKy7B,QAAQ53B,QACR7D,KAAKy7B,QAAQ53B,QAAQm+B,wBAGvB,CACLvgC,MAAOu4B,IACP54B,OA/a0B,qBAAlB64B,EAAAA,EAAOn4B,OAAyBm4B,EAAAA,EAAOn4B,OAAOmgC,YAAc,EAgbpE3H,IAAK,EACL4H,MAAO,EACPC,OAAQ,EACRC,KAAM,KAGT,CACDziC,IAAK,eACL4D,MAAO,SAAU8+B,GACf,SAASh8B,EAAai8B,GACpB,OAAOD,EAActiC,MAAMC,KAAMR,WAOnC,OAJA6G,EAAatD,SAAW,WACtB,OAAOs/B,EAAct/B,YAGhBsD,EATF,EAUL,SAAUikB,GACVtqB,KAAKg9B,SAAWh9B,KAAKg9B,SAAS3Z,QAAO,SAAU+c,GAC7C,OAAOA,IAAQ9V,KAEjBjkB,aAAaikB,OAGd,CACD3qB,IAAK,aACL4D,MAAO,SAAoBg4B,EAAW5jB,EAASE,GAE7C,GAAK7X,KAAKW,MAAM4hC,WAAhB,CAKA,IAAIC,EAAgBr3B,KAAK+C,IAjbV,EAib8B/C,KAAKkD,IAAIksB,EAAgBgB,IAEtE,GAAIiH,IAAkBxiC,KAAKkiB,MAAMqZ,UAIjC,GAvbe,IAubXiH,EAAJ,CAUA,IAAIC,EAAgBziC,KAAKwhC,oBAAoB,WAE7C,GAAsB,OAAlBiB,EAAJ,CAIA,IAAIC,EAAwB1iC,KAAK8hC,oBAC7Ba,EAAqB3iC,KAAK8hC,kBAAkBU,GAE5CI,EAAU5iC,KAAKmhC,kBACf0B,EAA8B,qBAAZlrB,EAA0BA,EAAUirB,EAAQR,KAAOQ,EAAQnhC,MAAQ,EACrFqhC,EAA8B,qBAAZjrB,EAA0BA,EAAU+qB,EAAQtI,IAAMsI,EAAQxhC,OAAS,EACrF2hC,GAAuBH,EAAQnhC,MAAQghC,EAAchhC,MAAQihC,GAAyB,EACtFM,GAAuBJ,EAAQxhC,OAASqhC,EAAcrhC,OAASshC,GAAyB,EAKxFO,EAAuBJ,GAFWA,GAFRE,EAAsB/iC,KAAKkiB,MAAMtK,UAEa8qB,EAELC,EACnEO,EAAuBJ,GAFWA,GAFRE,EAAsBhjC,KAAKkiB,MAAMpK,UAEa4qB,EAELC,EAGnEQ,GAFoBP,EAAQnhC,MAAQghC,EAAchhC,MAAQkhC,GAAsB,EAE/CM,EACjCG,GAFoBR,EAAQxhC,OAASqhC,EAAcrhC,OAASuhC,GAAsB,EAEjDO,EAErC,GAtca,IAscTljC,KAAKi9B,cAAgC,CACvC,IAAIoG,EAAarjC,KAAKsjC,gBAElBtjC,KAAKkiB,MAAMqZ,UAAYiH,IACzBW,EAAch4B,KAAK+C,IAAIm1B,EAAW3B,KAAMv2B,KAAKkD,IAAIg1B,EAAW5B,KAAM0B,IAClEC,EAAcj4B,KAAK+C,IAAIm1B,EAAWzB,KAAMz2B,KAAKkD,IAAIg1B,EAAW1B,KAAMyB,KAItEpjC,KAAK2+B,SAAS,CACZpD,UAAWiH,EACX5qB,QAASurB,EACTrrB,QAASsrB,UA7CTpjC,KAAK2+B,SAAS,CACZpD,UAAWiH,EACX5qB,QAAS,EACTE,QAAS,OA6Cd,CACDnY,IAAK,oBACL4D,MAAO,SAA2BggC,IAC3BvjC,KAAKo9B,mBAAqBmG,EAAMjkC,OAAOkkC,UAAUC,OAAO,kBAAoB,GAC/EzjC,KAAK68B,aAAa0G,KAOrB,CACD5jC,IAAK,iBACL4D,MAAO,SAAwBggC,GAG7B,GAFAA,EAAMG,mBAEF1jC,KAAK2jC,cAKT,GAAmB,UAAfJ,EAAM/+B,KAAV,CAKA,IAAIiW,EAAU8oB,EAAMK,OAASL,EAAM9oB,QAG/BopB,EAAc,IAAIr0B,KAEtB,KAAIq0B,EAAYp0B,UAAYzP,KAAKw9B,gBAAkBx9B,KAAKW,MAAMmjC,gBAAkBrpB,IAAY+f,GAM5F,OAFAx6B,KAAKw9B,gBAAkBqG,EAAYp0B,UAE3BgL,GAEN,KAAK+f,EACH+I,EAAMQ,iBACN/jC,KAAK68B,aAAa0G,GAClB,MAGF,KAAK/I,EACH,IAAKx6B,KAAKW,MAAMq/B,UAAYhgC,KAAKW,MAAMqjC,kBACrC,OAGFT,EAAMQ,iBACN/jC,KAAKs9B,YAAa,EAClBt9B,KAAK+8B,gBAAgBwG,GACrB,MAGF,KAAK/I,EACH,IAAKx6B,KAAKW,MAAMsjC,UAAYjkC,KAAKW,MAAMujC,kBACrC,OAGFX,EAAMQ,iBACN/jC,KAAKs9B,YAAa,EAClBt9B,KAAK88B,gBAAgByG,SAzCvBvjC,KAAKw9B,iBAAmBx9B,KAAKW,MAAMwjC,sBAiDtC,CACDxkC,IAAK,wBACL4D,MAAO,SAA+BggC,GACpC,IAAIa,EAASpkC,KAGbujC,EAAMG,kBACN,IACIW,EAAc,EAElBrkC,KAAKqG,aAAarG,KAAK29B,oBACvB39B,KAAK29B,mBAAqB39B,KAAKsG,YAAW,WACxC89B,EAAOxG,QAAU,EACjBwG,EAAOvG,QAAU,IAChB,KAE6B,OAA5B79B,KAAK09B,oBAA+B19B,KAAK2jC,gBAIzCx4B,KAAKuC,IAAI61B,EAAMe,QAAUn5B,KAAKuC,IAAI61B,EAAMgB,UAE1CvkC,KAAK69B,QAAU,EACf79B,KAAK49B,SAAW2F,EAAMgB,OAGlBvkC,KAAK49B,SAlkBY,KAkkBa2F,EAAMgB,QAFzBC,KAIbxkC,KAAK88B,gBAAgByG,GACrBc,EApBiB,IAqBjBrkC,KAAK49B,QAAU,IACN59B,KAAK49B,UAAW,KAAmB2F,EAAMgB,SAAU,OAE5DvkC,KAAK+8B,gBAAgBwG,GACrBc,EAzBiB,IA0BjBrkC,KAAK49B,QAAU,IAKC,IAAhByG,IACFrkC,KAAK09B,mBAAqB19B,KAAKsG,YAAW,WACxC89B,EAAO1G,mBAAqB,OAC3B2G,OAGN,CACD1kC,IAAK,wBACL4D,MAAO,SAA+BggC,GAGpC,GAAIp4B,KAAKuC,IAAI61B,EAAMe,SAAWn5B,KAAKuC,IAAI61B,EAAMgB,QAAS,CAGpD,GAFAhB,EAAMG,kBAEFv4B,KAAKuC,IAAI61B,EAAMe,QA5lBE,EA6lBnB,OAGFtkC,KAAK49B,QAAU,EACf59B,KAAK69B,SAAW0F,EAAMe,OACtBtkC,KAAKykC,WAAWzkC,KAAKkiB,MAAMqZ,UAAYgI,EAAMe,OAAQf,EAAM5rB,QAAS4rB,EAAM1rB,YAO7E,CACDlY,IAAK,yBACL4D,MAAO,SAAgCggC,GACjCvjC,KAAKkiB,MAAMqZ,UAtnBA,EAwnBbv7B,KAAKykC,WAxnBQ,EAwnBmBlB,EAAM5rB,QAAS4rB,EAAM1rB,SAGrD7X,KAAKykC,WAAWzkC,KAAKkiB,MAAMqZ,UArnBF,IAqnB0CgI,EAAM5rB,QAAS4rB,EAAM1rB,WAG3F,CACDlY,IAAK,oBACL4D,MAAO,SAA2B7D,GAChC,GAAIM,KAAKk9B,eAAiBx9B,EACxB,OAAO,EAGT,GA/mBW,IA+mBPM,KAAKk9B,aAEP,OADAl9B,KAAKk9B,aAAex9B,GACb,EAGT,OAAQA,GACN,KApnBW,EAqoBX,QACE,OAAO,EAfT,KAtnBW,EAynBT,OAFAM,KAAKk9B,aAvnBI,EAwnBTl9B,KAAK0kC,0BACE,EAET,KA1nBa,EA2nBX,OA7nBS,IA6nBL1kC,KAAKk9B,eACPl9B,KAAKk9B,aA5nBI,EA6nBTl9B,KAAK0kC,0BACE,MASd,CACD/kC,IAAK,aACL4D,MAAO,SAAoBohC,GACzB3kC,KAAKm9B,YAAYrqB,KAAK6xB,KAEvB,CACDhlC,IAAK,gBACL4D,MAAO,SAAuBohC,GAC5B3kC,KAAKm9B,YAAcn9B,KAAKm9B,YAAY9Z,QAAO,SAAUjjB,GAEnD,OADSA,EAAKkqB,KACAqa,EAAQra,QAGzB,CACD3qB,IAAK,yBACL4D,MAAO,WACL,IAAIqhC,EAAS5kC,KAEbA,KAAKm9B,YAAcn9B,KAAKm9B,YAAY9Z,QAAO,SAAUwhB,GAEnD,OADaA,EAAMnlC,SACDklC,EAAO1H,kBAG5B,CACDv9B,IAAK,kBACL4D,MAAO,SAAyBggC,GAC1BvjC,KAAK8kC,kBAnqBI,IAmqB+BrK,EAAmBsK,mBAAmBxB,EAAMjkC,UACtFU,KAAKglC,WAAWvK,EAAmBwK,gBAAgB1B,IACnDvjC,KAAKklC,kBAAkB3B,MAG1B,CACD5jC,IAAK,kBACL4D,MAAO,SAAyBggC,GAC1BvjC,KAAK8kC,kBA3qBI,IA4qBX9kC,KAAKmlC,iBAAiB5B,EAAO,CAAC9I,EAAmBwK,gBAAgB1B,OAGpE,CACD5jC,IAAK,gBACL4D,MAAO,SAAuBggC,GACxBvjC,KAAK8kC,kBAlrBI,KAmrBX9kC,KAAKolC,cAAc3K,EAAmBwK,gBAAgB1B,IACtDvjC,KAAKqlC,gBAAgB9B,MAGxB,CACD5jC,IAAK,qBACL4D,MAAO,SAA4BggC,GACjC,GAAIvjC,KAAK8kC,kBAxrBM,GAyrBb,OAAQvB,EAAM/+B,MACZ,IAAK,cACCi2B,EAAmBsK,mBAAmBxB,EAAMjkC,UAC9CU,KAAKglC,WAAWvK,EAAmB6K,kBAAkB/B,IACrDvjC,KAAKklC,kBAAkB3B,IAGzB,MAEF,IAAK,cACHvjC,KAAKmlC,iBAAiB5B,EAAO,CAAC9I,EAAmB6K,kBAAkB/B,KACnE,MAEF,IAAK,YACL,IAAK,gBACHvjC,KAAKolC,cAAc3K,EAAmB6K,kBAAkB/B,IACxDvjC,KAAKqlC,gBAAgB9B,MAK5B,CACD5jC,IAAK,mBACL4D,MAAO,SAA0BggC,GAC/B,IAAIgC,EAAUvlC,KAEVA,KAAK8kC,kBAptBI,IAotB+BrK,EAAmBsK,mBAAmBxB,EAAMjkC,UACtF,GAAGiH,QAAQzG,KAAKyjC,EAAMiC,gBAAgB,SAAUC,GAC9C,OAAOF,EAAQP,WAAWvK,EAAmBiL,kBAAkBD,OAEjEzlC,KAAKklC,kBAAkB3B,MAG1B,CACD5jC,IAAK,kBACL4D,MAAO,SAAyBggC,GAC1BvjC,KAAK8kC,kBA9tBI,IA+tBX9kC,KAAKmlC,iBAAiB5B,EAAO,GAAG58B,IAAI7G,KAAKyjC,EAAMiC,gBAAgB,SAAUC,GACvE,OAAOhL,EAAmBiL,kBAAkBD,SAIjD,CACD9lC,IAAK,iBACL4D,MAAO,SAAwBggC,GAC7B,IAAIoC,EAAU3lC,KAEVA,KAAK8kC,kBAzuBI,KA0uBX,GAAGn+B,IAAI7G,KAAKyjC,EAAMiC,gBAAgB,SAAUI,GAC1C,OAAOD,EAAQP,cAAc3K,EAAmBiL,kBAAkBE,OAEpE5lC,KAAKqlC,gBAAgB9B,MAGxB,CACD5jC,IAAK,oBACL4D,MAAO,SAA2BohC,GAC5B3kC,KAAKkiB,MAAMqZ,WA3wBA,EA4wBbv7B,KAAK6lC,iBAAiBlB,GAEtB3kC,KAAK8lC,gBAAgBnB,KAGxB,CACDhlC,IAAK,oBACL4D,MAAO,SAA2BggC,GAGhC,OAFAvjC,KAAK+lC,UAAU,MAEP/lC,KAAKm9B,YAAY19B,QACvB,KAAK,EAED8jC,EAAMQ,iBACN/jC,KAAKgmC,kBAAkBhmC,KAAKm9B,YAAY,IACxC,MAGJ,KAAK,EAEDoG,EAAMQ,iBACN/jC,KAAKimC,iBAAiBjmC,KAAKm9B,gBAKlC,CACDx9B,IAAK,mBACL4D,MAAO,SAA0BggC,EAAOpG,GACtC,OAAQn9B,KAAKi9B,eACX,KAxxBU,EA0xBNsG,EAAMQ,iBACN/jC,KAAKkmC,WAAW/I,EAAY,IAC5B,MAGJ,KA9xBW,EAgyBPoG,EAAMQ,iBACN/jC,KAAKmmC,YAAYhJ,EAAY,IAC7B,MAGJ,KApyBW,EAsyBPoG,EAAMQ,iBACN/jC,KAAKomC,YAAYjJ,MAKxB,CACDx9B,IAAK,kBACL4D,MAAO,SAAyBggC,GAM9B,OAvzBY,IAkzBRvjC,KAAKi9B,gBACPj9B,KAAKqmC,uBACLrmC,KAAK+lC,UAAUxC,IAGTvjC,KAAKm9B,YAAY19B,QACvB,KAAK,EAEDO,KAAKk9B,aArzBA,EAszBL,MAGJ,KAAK,EAEDqG,EAAMQ,iBACN/jC,KAAKgmC,kBAAkBhmC,KAAKm9B,YAAY,IACxC,MAGJ,KAAK,EAEDoG,EAAMQ,iBACN/jC,KAAKimC,iBAAiBjmC,KAAKm9B,gBAKlC,CACDx9B,IAAK,YACL4D,MAAO,SAAmBggC,GACxB,OAAQvjC,KAAKi9B,eACX,KAh1BU,EAi1BRj9B,KAAKsmC,cAAc/C,GACnB,MAEF,KAn1BW,EAo1BTvjC,KAAKumC,eAAehD,GACpB,MAEF,KAt1BW,EAu1BTvjC,KAAKwmC,eAAejD,MAQzB,CACD5jC,IAAK,kBACL4D,MAAO,SAAyBkjC,GAC9B,IAAI9uB,EAAU8uB,EAAM/3B,EAChBmJ,EAAU4uB,EAAM30B,EAEf9R,KAAKW,MAAM4hC,aAIhBviC,KAAKi9B,cA32BO,EA42BZj9B,KAAK89B,WAAanmB,EAClB3X,KAAK+9B,WAAalmB,EAClB7X,KAAKg+B,iBAAmBh+B,KAAKkiB,MAAMtK,QACnC5X,KAAKi+B,iBAAmBj+B,KAAKkiB,MAAMpK,WAMpC,CACDnY,IAAK,aACL4D,MAAO,SAAoBmjC,GACzB,IAAI/uB,EAAU+uB,EAAMh4B,EAChBmJ,EAAU6uB,EAAM50B,EAChB60B,EAAa3mC,KAAK89B,WAAanmB,EAAU3X,KAAKg+B,iBAC9C4I,EAAa5mC,KAAK+9B,WAAalmB,EAAU7X,KAAKi+B,iBAE9Cj+B,KAAKkiB,MAAMtK,UAAY+uB,GAAc3mC,KAAKkiB,MAAMpK,UAAY8uB,GAC9D5mC,KAAK2+B,SAAS,CACZ/mB,QAAS+uB,EACT7uB,QAAS8uB,MAId,CACDjnC,IAAK,gBACL4D,MAAO,WACL,IAAIsjC,EAAU7mC,KAEdA,KAAKi9B,cA14BO,EA24BZj9B,KAAK89B,WAAa,EAClB99B,KAAK+9B,WAAa,EAClB/9B,KAAKg+B,iBAAmB,EACxBh+B,KAAKi+B,iBAAmB,EAExB,IAAIoF,EAAarjC,KAAKsjC,gBAClBH,EAAch4B,KAAK+C,IAAIm1B,EAAW3B,KAAMv2B,KAAKkD,IAAIg1B,EAAW5B,KAAMzhC,KAAKkiB,MAAMtK,UAC7EwrB,EAAcj4B,KAAK+C,IAAIm1B,EAAWzB,KAAMz2B,KAAKkD,IAAIg1B,EAAW1B,KAAM3hC,KAAKkiB,MAAMpK,UAE7EqrB,IAAgBnjC,KAAKkiB,MAAMtK,SAAWwrB,IAAgBpjC,KAAKkiB,MAAMpK,UACnE9X,KAAK2+B,SAAS,CACZ/mB,QAASurB,EACTrrB,QAASsrB,EACT9H,eAAe,IAEjBt7B,KAAKsG,YAAW,WACdugC,EAAQlI,SAAS,CACfrD,eAAe,MAEhBt7B,KAAKW,MAAMmmC,sBAGjB,CACDnnC,IAAK,mBACL4D,MAAO,SAA0BwjC,GAC/B,IAAIpvB,EAAUovB,EAAMr4B,EAChBmJ,EAAUkvB,EAAMj1B,EACpB9R,KAAKi9B,cAp6BQ,EAq6Bbj9B,KAAKk+B,YAAcvmB,EACnB3X,KAAKm+B,YAActmB,EACnB7X,KAAKo+B,UAAYzmB,EACjB3X,KAAKq+B,UAAYxmB,IAElB,CACDlY,IAAK,cACL4D,MAAO,SAAqByjC,GAC1B,IAAIrvB,EAAUqvB,EAAMt4B,EAChBmJ,EAAUmvB,EAAMl1B,EACpB9R,KAAKo+B,UAAYzmB,EACjB3X,KAAKq+B,UAAYxmB,IAElB,CACDlY,IAAK,iBACL4D,MAAO,SAAwBggC,GAC7B,IAAI0D,EAAQjnC,KAAKo+B,UAAYp+B,KAAKk+B,YAC9BgJ,EAAW/7B,KAAKuC,IAAIu5B,GACpBE,EAAWh8B,KAAKuC,IAAI1N,KAAKq+B,UAAYr+B,KAAKm+B,aAO9C,GANAn+B,KAAKi9B,cA17BO,EA27BZj9B,KAAKk+B,YAAc,EACnBl+B,KAAKm+B,YAAc,EACnBn+B,KAAKo+B,UAAY,EACjBp+B,KAAKq+B,UAAY,KAEZkF,GAASvjC,KAAK2jC,eAAiBuD,EAAsB,IAAXC,GAA/C,CAIA,GAAID,EA17Be,KA67BbA,EAFUlnC,KAAKmhC,kBAEI1/B,MAAQ,EAC7B,OAIAwlC,EAAQ,GAAKjnC,KAAKW,MAAMq/B,SAC1BuD,EAAMQ,iBACN/jC,KAAK+8B,mBACIkK,EAAQ,GAAKjnC,KAAKW,MAAMsjC,UACjCV,EAAMQ,iBACN/jC,KAAK88B,sBAGR,CACDn9B,IAAK,yBACL4D,MAAO,WACL,IAAI6jC,EAAQ5nC,UAAUC,OAAS,QAAsBkmB,IAAjBnmB,UAAU,GAAmBA,UAAU,GAAKQ,KAAKs+B,eACjF+I,EAAQtO,EAAeqO,EAAO,GAC9B79B,EAAI89B,EAAM,GACV/8B,EAAI+8B,EAAM,GAEd,OAAOl8B,KAAKm8B,KAAKn8B,KAAKM,IAAIlC,EAAEmF,EAAIpE,EAAEoE,EAAG,GAAKvD,KAAKM,IAAIlC,EAAEuI,EAAIxH,EAAEwH,EAAG,MAE/D,CACDnS,IAAK,uBACL4D,MAAO,WACL,IAAIgkC,EAAQ/nC,UAAUC,OAAS,QAAsBkmB,IAAjBnmB,UAAU,GAAmBA,UAAU,GAAKQ,KAAKs+B,eACjFkJ,EAASzO,EAAewO,EAAO,GAC/Bh+B,EAAIi+B,EAAO,GACXl9B,EAAIk9B,EAAO,GAEf,MAAO,CACL94B,EAAGnF,EAAEmF,GAAKnF,EAAEmF,EAAIpE,EAAEoE,GAAK,EACvBoD,EAAGvI,EAAEuI,GAAKvI,EAAEuI,EAAIxH,EAAEwH,GAAK,KAG1B,CACDnS,IAAK,mBACL4D,MAAO,SAA0B45B,GAC1Bn9B,KAAKW,MAAM4hC,aAIhBviC,KAAKi9B,cA/+BQ,EAg/Bbj9B,KAAKs+B,eAAiBnB,EAAYx2B,KAAI,SAAU8gC,GAI9C,MAAO,CACLnd,GAJOmd,EAAOnd,GAKd5b,EAJM+4B,EAAO/4B,EAKboD,EAJM21B,EAAO31B,MAOjB9R,KAAKu+B,cAAgBv+B,KAAK0nC,4BAE3B,CACD/nC,IAAK,cACL4D,MAAO,SAAqB45B,GAC1Bn9B,KAAKs+B,eAAiBt+B,KAAKs+B,eAAe33B,KAAI,SAAUghC,GACtD,IAAK,IAAIpoC,EAAI,EAAGA,EAAI49B,EAAY19B,OAAQF,GAAK,EAC3C,GAAI49B,EAAY59B,GAAG+qB,KAAOqd,EAAWrd,GACnC,OAAO6S,EAAY59B,GAIvB,OAAOooC,KAET,IAAIC,EAAc5nC,KAAK0nC,yBACnBnM,EAAYv7B,KAAKkiB,MAAMqZ,UAAYqM,EAAc5nC,KAAKu+B,cAC1Dv+B,KAAKu+B,cAAgBqJ,EAErB,IAAIC,EAAwB7nC,KAAK8nC,qBAAqB9nC,KAAKs+B,gBACvD3mB,EAAUkwB,EAAsBn5B,EAChCmJ,EAAUgwB,EAAsB/1B,EAEpC9R,KAAKykC,WAAWlJ,EAAW5jB,EAASE,KAErC,CACDlY,IAAK,iBACL4D,MAAO,WACLvD,KAAKi9B,cAxhCO,EAyhCZj9B,KAAKs+B,eAAiB,KACtBt+B,KAAKu+B,cAAgB,IAGtB,CACD5+B,IAAK,qBACL4D,MAAO,WACLvD,KAAKqG,aAAarG,KAAKy9B,eACvBz9B,KAAKy9B,cAAgBz9B,KAAKsG,WAAWtG,KAAKytB,YAAY/pB,KAAK1D,MAAO,OAEnE,CACDL,IAAK,0BACL4D,MAAO,WACL,IAAIi/B,EAAgBxiC,KAAKkiB,MAAMqZ,UAjjCJ,IAkjC3Bv7B,KAAKykC,WAAWjC,GAEZA,IAAkBjI,GACpBv6B,KAAK27B,WAAW93B,QAAQkkC,UAG3B,CACDpoC,IAAK,2BACL4D,MAAO,WACL,IAAIi/B,EAAgBxiC,KAAKkiB,MAAMqZ,UA3jCJ,IA4jC3Bv7B,KAAKykC,WAAWjC,GAlkCD,IAokCXA,GACFxiC,KAAK07B,UAAU73B,QAAQkkC,UAG1B,CACDpoC,IAAK,0BACL4D,MAAO,SAAiCggC,GAGtC,GAFAA,EAAMG,kBAED1jC,KAAK47B,QAAQ/3B,QAAlB,CAIA,IACIzC,EADwBpB,KAAK47B,QAAQ/3B,QAAQm+B,wBACd5gC,OAE/B4mC,EAAyBhoC,KAAK47B,QAAQ/3B,QACtCokC,EAAeD,EAAuBC,aACtCC,EAAYF,EAAuBE,WAEnC3E,EAAMe,OAAS,GAAKljC,EAAS8mC,GAAaD,GAAgB1E,EAAMe,OAAS,GAAK4D,GAAa,IAC7F3E,EAAMQ,oBAIT,CACDpkC,IAAK,cACL4D,MAAO,WACL,OAAOvD,KAAKkiB,MAAMoZ,eAAiBt7B,KAAKkiB,MAAMkZ,YAG/C,CACDz7B,IAAK,gBACL4D,MAAO,SAAuBm9B,GAC5B,OAAOA,GAAYA,KAAY1gC,KAAKu9B,YAAcv9B,KAAKu9B,WAAWmD,GAAUT,SAG7E,CACDtgC,IAAK,YACL4D,MAAO,SAAmBm8B,EAASgB,EAAUp9B,GAC3C,IAAI6kC,EAAUnoC,KAGd,GAAIA,KAAK4gC,cAAcF,GACrB1gC,KAAKsG,YAAW,WACdhD,MACC,OAHL,CAOA,IAAI8kC,EAAgB,IAAInO,EAAAA,EAAOoO,MAE3BroC,KAAKW,MAAM2nC,mBACbF,EAAcG,YAAcvoC,KAAKW,MAAM2nC,kBAGzCF,EAAcI,QAAU,SAAUC,GAChCN,EAAQxnC,MAAM+nC,iBAAiBhI,EAAUhB,EAAS+I,GAGlDN,EAAQxJ,UAAS,SAAUgK,GACzB,MAAO,CACLnN,gBAAiBtE,EAAeA,EAAe,GAAIyR,EAAUnN,iBAAkB,GAAIrE,EAAgB,GAAIuI,GAAS,QAIpHp8B,EAAKmlC,IAGPL,EAAcQ,OAAS,WACrBT,EAAQxnC,MAAMkoC,YAAYnI,EAAUhB,EAAS0I,GAE7CD,EAAQ5K,WAAWmD,GAAY,CAC7BT,QAAQ,EACRx+B,MAAO2mC,EAAc3mC,MACrBL,OAAQgnC,EAAchnC,QAExBkC,KAGF8kC,EAActH,IAAMJ,KAGrB,CACD/gC,IAAK,gBACL4D,MAAO,WACL,IAAIulC,EAAU9oC,KAEVW,EAAQnB,UAAUC,OAAS,QAAsBkmB,IAAjBnmB,UAAU,GAAmBA,UAAU,GAAKQ,KAAKW,MAEjFooC,EAA2B,SAAkCrJ,EAASgB,GACxE,OAAO,SAAUj5B,GAEXA,GAMAqhC,EAAQnoC,MAAM++B,KAAagB,GAAYoI,EAAQ3I,YAKnD2I,EAAQrb,gBAKZztB,KAAKy/B,cAAcl5B,SAAQ,SAAUm5B,GACnC,IAAIl7B,EAAOk7B,EAAQx8B,KAEfvC,EAAM6D,IAASskC,EAAQ5mB,MAAMsZ,gBAAgBh3B,IAC/CskC,EAAQnK,UAAS,SAAUgK,GACzB,MAAO,CACLnN,gBAAiBtE,EAAeA,EAAe,GAAIyR,EAAUnN,iBAAkB,GAAIrE,EAAgB,GAAI3yB,GAAM,SAM/G7D,EAAM6D,IAAUskC,EAAQlI,cAAcjgC,EAAM6D,KAA4B,YAAhB7D,EAAM6D,IAAuB7D,EAAMqoC,mBAAwC,YAAhBroC,EAAM6D,IAAuB7D,EAAMqjC,mBAAwC,YAAhBrjC,EAAM6D,IAAuB7D,EAAMujC,mBACnN4E,EAAQG,UAAUzkC,EAAM7D,EAAM6D,GAAOukC,EAAyBvkC,EAAM7D,EAAM6D,UAK/E,CACD7E,IAAK,eACL4D,MAAO,SAAsBggC,GAC3B,IAAI2F,EAAUlpC,KAGVmpC,EAAgB,WAClB,OAAOD,EAAQvoC,MAAMyoC,eAAe7F,IAGlCvjC,KAAKW,MAAM06B,mBAAoC,YAAfkI,EAAM/+B,OAAuBxE,KAAKW,MAAM0oC,oBAE1EF,KAMFnpC,KAAK2+B,SAAS,CACZvD,WAAW,IAGbp7B,KAAKsG,WAAW6iC,EAAenpC,KAAKW,MAAMmmC,sBAE3C,CACDnnC,IAAK,cACL4D,MAAO,SAAqB+lC,EAAW/F,GACrC,IAAIgG,EAAUvpC,KAGVwpC,EAAY,CACdjO,UAluCa,EAmuCb3jB,QAAS,EACTE,QAAS,GAGN9X,KAAKW,MAAM06B,mBAAuBr7B,KAAKs9B,aAAct9B,KAAKW,MAAM0oC,sBACnEG,EAAUlO,eAAgB,EAC1Bt7B,KAAKsG,YAAW,WACd,OAAOijC,EAAQ5K,SAAS,CACtBrD,eAAe,MAEhBt7B,KAAKW,MAAMmmC,oBAGhB9mC,KAAKs9B,YAAa,EAClBt9B,KAAKy+B,eAAgB,EAEH,SAAd6K,GACFtpC,KAAKw+B,YAAc,EACnBx+B,KAAK2+B,SAAS6K,GACdxpC,KAAKW,MAAM8oC,kBAAkBlG,KAE7BvjC,KAAKw+B,YAAc,EACnBx+B,KAAK2+B,SAAS6K,GACdxpC,KAAKW,MAAM+oC,kBAAkBnG,MAIhC,CACD5jC,IAAK,kBACL4D,MAAO,SAAyBggC,GAC9BvjC,KAAK2pC,YAAY,OAAQpG,KAG1B,CACD5jC,IAAK,kBACL4D,MAAO,SAAyBggC,GAC9BvjC,KAAK2pC,YAAY,OAAQpG,KAE1B,CACD5jC,IAAK,SACL4D,MAAO,WACL,IAAIqmC,EAAU5pC,KAEV6pC,EAAc7pC,KAAKW,MACnB06B,EAAoBwO,EAAYxO,kBAChCyL,EAAoB+C,EAAY/C,kBAChCgD,EAAsBD,EAAYC,oBAClCC,EAAsBF,EAAYE,oBAClCxH,EAAasH,EAAYtH,WACzByH,EAAaH,EAAYG,WACzB/F,EAAU4F,EAAY5F,QACtBjE,EAAU6J,EAAY7J,QACtBiK,EAAiBJ,EAAYI,eAC7BC,EAAkBL,EAAYK,gBAC9BC,EAAeN,EAAYO,YAC3B9B,EAAmBuB,EAAYvB,iBAC/B+B,EAAkBR,EAAYQ,gBAC9BC,EAAST,EAAYS,OACrBpG,EAAoB2F,EAAY3F,kBAChCF,EAAoB6F,EAAY7F,kBAChCgF,EAAoBa,EAAYb,kBAChCuB,EAAcvqC,KAAKkiB,MACnBqZ,EAAYgP,EAAYhP,UACxB3jB,EAAU2yB,EAAY3yB,QACtBE,EAAUyyB,EAAYzyB,QACtBsjB,EAAYmP,EAAYnP,UACxBI,EAAkB+O,EAAY/O,gBAC9B0F,EAAUlhC,KAAKmhC,kBACfqJ,EAAkB,IAEjBnP,GAAqBr7B,KAAK2jC,gBAC7B6G,EAAkBtT,EAAeA,EAAe,GAAIsT,GAAkB,GAAI,CACxEC,WAAY,aAAap3B,OAAOyzB,EAAmB,SAKvD,IAAI4D,EAAa,GACjB1qC,KAAKy/B,cAAcl5B,SAAQ,SAAUokC,GACnC,IAAIznC,EAAOynC,EAAOznC,KACd6+B,EAAY4I,EAAO5I,UACvB2I,EAAWxnC,GAAQ6+B,KAGrB,IAAI6I,EAAS,GAETC,EAAW,SAAkBnL,EAASoL,EAAYC,GACpD,GAAgB,YAAZrL,GAAyBsJ,EAC3B4B,EAAO93B,KAAmBigB,EAAAA,cAAoB,MAAO,CACnDpzB,IAAK,GAAG0T,OAAOqsB,EAAS,sBACxB8D,UAAW,GAAGnwB,OAAOy3B,EAAY,0BAChC9B,SAIL,GAAgB,YAAZtJ,GAAyBsE,EAC3B4G,EAAO93B,KAAmBigB,EAAAA,cAAoB,MAAO,CACnDpzB,IAAK,GAAG0T,OAAOqsB,EAAS,8BAK5B,GAAgB,YAAZA,GAAyBwE,EAC3B0G,EAAO93B,KAAmBigB,EAAAA,cAAoB,MAAO,CACnDpzB,IAAK,GAAG0T,OAAOqsB,EAAS,8BAM5B,GAAKkK,EAAQjpC,MAAM++B,GAAnB,CAIA,IASyCx3B,EATrC8iC,EAAgBpB,EAAQpI,oBAAoB9B,GAE5CuL,EAAa/T,EAAeA,EAAe,GAAIsT,GAAkB/P,EAAmByQ,aAAahU,EAAeA,EAAe,GAAI6T,GAAaC,KAcpJ,GAZIzP,EAz1CS,IA01CX0P,EAAWE,OAAS,QAWA,OAAlBH,IAPqC9iC,EAOEszB,EANlCp8B,OAAO0B,KAAKoH,GAAQqd,MAAK,SAAU5lB,GACxC,OAAOuI,EAAOvI,OAMhBirC,EAAO93B,KAAmBigB,EAAAA,cAAoB,MAAO,CACnDyQ,UAAW,GAAGnwB,OAAOy3B,EAAY,2BACjCpqC,MAAOuqC,EACPtrC,IAAKiqC,EAAQjpC,MAAM++B,GAAWgL,EAAWhL,IAC3B3M,EAAAA,cAAoB,MAAO,CACzCyQ,UAAW,uBACVoG,EAAQjpC,MAAMyqC,8BAInB,GAAsB,OAAlBJ,EAAJ,CAqBA,IAAItK,EAAWsK,EAAclK,IAEzBiJ,GACFkB,EAAWI,gBAAkB,QAAQh4B,OAAOqtB,EAAU,MACtDkK,EAAO93B,KAAmBigB,EAAAA,cAAoB,MAAO,CACnDyQ,UAAW,GAAGnwB,OAAOy3B,EAAY,qCACjCQ,cAAe1B,EAAQ9N,uBACvByP,QAAS3B,EAAQ7N,sBACjBr7B,MAAOuqC,EACPtrC,IAAK+gC,EAAWgK,EAAWhL,IACb3M,EAAAA,cAAoB,MAAO,CACzCyQ,UAAW,iDAGboH,EAAO93B,KAAmBigB,EAAAA,cAAoB,MAAO5zB,EAAS,GAAImpC,EAAmB,CACnFC,YAAaD,GACX,GAAI,CACN9E,UAAW,GAAGnwB,OAAOy3B,EAAY,eACjCQ,cAAe1B,EAAQ9N,uBACvByP,QAAS3B,EAAQ7N,sBACjByP,YAAa,SAAqBliC,GAChC,OAAOA,EAAEy6B,kBAEXrjC,MAAOuqC,EACPnK,IAAKJ,EACL/gC,IAAK+gC,EAAWgK,EAAWhL,GAC3B+L,IAA2B,kBAAfzB,EAA0BA,EAAapQ,EAAU,SAC7D8R,WAAW,UAhDf,CACE,IAAIC,OAAyBhmB,IAAX2kB,EAAuBA,EAAsBvX,EAAAA,cAAoB,MAAO,CACxFyQ,UAAW,qEACVhK,EAAmB,IAAIn3B,MAAM,KAAKsE,KAAI,SAAUylB,EAAGpF,GACpD,OAAoB+L,EAAAA,cAAoB,MAAO,CAE7CpzB,IAAKqnB,EACLwc,UAAW,yDAIfoH,EAAO93B,KAAmBigB,EAAAA,cAAoB,MAAO,CACnDyQ,UAAW,GAAGnwB,OAAOy3B,EAAY,8BACjCpqC,MAAOuqC,EACPtrC,IAAKiqC,EAAQjpC,MAAM++B,GAAWgL,EAAWhL,IAC3B3M,EAAAA,cAAoB,MAAO,CACzCyQ,UAAW,yBACVmI,QAoCH9J,EAAiB7hC,KAAK8hC,oBAE1B+I,EAAS,UAAW,gCAAiC,CACnDn8B,EAAGwyB,EAAQz/B,QAGbopC,EAAS,UAAW,oBAAqB,CACvCn8B,GAAI,EAAIkJ,EACR9F,GAAI,EAAIgG,EACR8zB,KAAM/J,IAGRgJ,EAAS,UAAW,gCAAiC,CACnDn8B,GAAI,EAAIwyB,EAAQz/B,QAElB,IAAIoqC,EAAa,CACfC,QAAS5U,EAAe,CACtB6U,OAAQ,IACRC,gBAAiB,eAChB9B,EAAgB4B,SACnBjmB,QAASqR,EAAe,CACtB8U,gBAAiB,cACjB1qC,SAAU,SAEVJ,OAAQ,OACR+qC,aAAc,EACd1qC,QAAS,EACT+4B,IAAK,EACL8H,KAAM,EACNF,MAAO,EACPC,OAAQ,GACP+H,EAAgBrkB,UAErB,OAAoBkN,EAAAA,cAAoBmZ,IAAO/sC,EAAS,CACtDgtC,QAAQ,EACRC,eAAgBtC,EAAsB9pC,KAAK68B,kBAAelX,EAC1DykB,YAAa,WAEPR,EAAQnO,QAAQ53B,SAClB+lC,EAAQnO,QAAQ53B,QAAQkkC,QAG1BoC,KAEFzpC,MAAOmrC,EACPQ,aAAczS,EAAU,YACxB0S,WAAqC,qBAAlBrS,EAAAA,EAAOn4B,OAAyBm4B,EAAAA,EAAOn4B,OAAOC,SAASoE,UAAOwf,GAChF0kB,GAA+BtX,EAAAA,cAAoB,MAAO,CAG3DyQ,UAAW,4CAA4CnwB,OAAOrT,KAAKW,MAAM4rC,iBAAkB,KAAKl5B,OAAO+nB,EAAY,gCAAkC,IACrJ16B,MAAO,CACL+pC,WAAY,WAAWp3B,OAAOyzB,EAAmB,MACjDA,kBAAmB,GAAGzzB,OAAOyzB,EAAmB,MAChD0F,mBAAoBpR,EAAY,SAAW,WAE7C/6B,IAAKL,KAAKy7B,QACV8P,QAASvrC,KAAKo8B,sBACdqQ,YAAazsC,KAAKm8B,gBAClBuQ,YAAa1sC,KAAKk8B,gBAClByQ,aAAc3sC,KAAKq8B,iBACnBuQ,YAAa5sC,KAAKs8B,gBAClBuQ,SAAU,KAEVC,UAAW9sC,KAAKg8B,eAChB+Q,QAAS/sC,KAAKg8B,gBACAjJ,EAAAA,cAAoB,MAAO,CAGzCyQ,UAAW,uBACXwJ,QAASlD,EAAsB9pC,KAAK67B,uBAAoBlW,GACvDilB,GAAS5K,GAAWgE,EAAiCjR,EAAAA,cAAoB,SAAU,CAEpFvuB,KAAM,SACNg/B,UAAW,qDACX7jC,IAAK,OACL,aAAcK,KAAKW,MAAMssC,UACzBha,MAAOjzB,KAAKW,MAAMssC,UAClBD,QAAUhtC,KAAK2jC,mBAAuChe,EAAvB3lB,KAAK+8B,kBAEjC,KAAMkH,GAAWC,EAAiCnR,EAAAA,cAAoB,SAAU,CAEnFvuB,KAAM,SACNg/B,UAAW,qDACX7jC,IAAK,OACL,aAAcK,KAAKW,MAAMusC,UACzBja,MAAOjzB,KAAKW,MAAMusC,UAClBF,QAAUhtC,KAAK2jC,mBAAuChe,EAAvB3lB,KAAK88B,kBAEjC,KAAmB/J,EAAAA,cAAoB,MAAO,CAEjDyQ,UAAW,4BACGzQ,EAAAA,cAAoB,KAAM,CACxCyQ,UAAW,0DACGzQ,EAAAA,cAAoB,KAAM,CACxCyQ,UAAW,sCACGzQ,EAAAA,cAAoB,OAAQ,CAC1CyQ,UAAW,kDACVwG,KAA4BjX,EAAAA,cAAoB,KAAM,CACvDyQ,UAAW,4DACVyG,GAAkBA,EAAetjC,KAAI,SAAUwmC,EAAQ5tC,GACxD,OAAoBwzB,EAAAA,cAAoB,KAAM,CAC5CpzB,IAAK,UAAU0T,OAAO9T,EAAI,GAC1BikC,UAAW,sCACV2J,MACD5K,GAA2BxP,EAAAA,cAAoB,KAAM,CACvDyQ,UAAW,sCACGzQ,EAAAA,cAAoB,SAAU,CAE5CvuB,KAAM,SACN7E,IAAK,UACL,aAAcK,KAAKW,MAAMysC,YACzBna,MAAOjzB,KAAKW,MAAMysC,YAClB5J,UAAW,CAAC,cAAe,wBAAyB,qBAAsB,qBAAqBnwB,OAAOmmB,EAAmB+B,IAAchB,EAAiB,CAAC,8BAAgC,KAAK/f,KAAK,KACnMna,IAAKL,KAAK07B,UACV2R,SAAUrtC,KAAK2jC,eAAiBpI,IAAchB,EAC9CyS,QAAUhtC,KAAK2jC,eAAiBpI,IAAchB,OAAgD5U,EAA/B3lB,KAAK28B,2BACjE4F,GAA2BxP,EAAAA,cAAoB,KAAM,CACxDyQ,UAAW,sCACGzQ,EAAAA,cAAoB,SAAU,CAE5CvuB,KAAM,SACN7E,IAAK,WACL,aAAcK,KAAKW,MAAM2sC,aACzBra,MAAOjzB,KAAKW,MAAM2sC,aAClB9J,UAAW,CAAC,eAAgB,wBAAyB,qBAAsB,sBAAsBnwB,OAAOmmB,EAliD3F,IAkiD8G+B,EAA+B,CAAC,8BAAgC,KAAK/gB,KAAK,KACrMna,IAAKL,KAAK27B,WACV0R,SAAUrtC,KAAK2jC,eApiDF,IAoiDmBpI,EAChCyR,QAAUhtC,KAAK2jC,eAriDF,IAqiDmBpI,OAA+D5V,EAAhC3lB,KAAK48B,4BACpD7J,EAAAA,cAAoB,KAAM,CAC1CyQ,UAAW,sCACGzQ,EAAAA,cAAoB,SAAU,CAE5CvuB,KAAM,SACN7E,IAAK,QACL,aAAcK,KAAKW,MAAM4sC,WACzBta,MAAOjzB,KAAKW,MAAM4sC,WAClB/J,UAAW,+FACXwJ,QAAUhtC,KAAK2jC,mBAAoChe,EAApB3lB,KAAK68B,kBAE/B78B,KAAKW,MAAM6sC,cAGlBza,EAAAA,cAAoB,MAAO,CAEzBwY,QAASvrC,KAAKy8B,wBACdiQ,YAAa,SAAqBnJ,GAChC,OAAOA,EAAMG,mBAEfF,UAAW,2BACXnjC,IAAKL,KAAK47B,SACI7I,EAAAA,cAAoB,MAAO,CACzCyQ,UAAW,2CACVxjC,KAAKW,MAAM6sC,oBAxzD2BxS,EA0zDzC,CAAC,CACHr7B,IAAK,qBACL4D,MAAO,SAA4BjE,GACjC,OAAOA,GAAU,oBAAoB8D,KAAK9D,EAAOkkC,aAElD,CACD7jC,IAAK,kBACL4D,MAAO,SAAyBkqC,GAC9B,MAAO,CACLnjB,GAAI,QACJ5qB,OAnjDW,EAojDXgP,EAAG+B,SAASg9B,EAAW91B,QAAS,IAChC7F,EAAGrB,SAASg9B,EAAW51B,QAAS,OAGnC,CACDlY,IAAK,oBACL4D,MAAO,SAA2BmqC,GAChC,MAAO,CACLpjB,GAAIojB,EAAaC,WACjBjuC,OA5jDW,EA6jDXgP,EAAG+B,SAASi9B,EAAa/1B,QAAS,IAClC7F,EAAGrB,SAASi9B,EAAa71B,QAAS,OAGrC,CACDlY,IAAK,oBACL4D,MAAO,SAA2BqqC,GAChC,MAAO,CACLtjB,GAAIsjB,EAAaC,UACjBnuC,OArkDa,EAskDbgP,EAAG+B,SAASm9B,EAAaj2B,QAAS,IAClC7F,EAAGrB,SAASm9B,EAAa/1B,QAAS,OAIrC,CACDlY,IAAK,eACL4D,MAAO,SAAsBuqC,GAC3B,IAAIC,EAAWD,EAAOp/B,EAClBA,OAAiB,IAAbq/B,EAAsB,EAAIA,EAC9BC,EAAWF,EAAOh8B,EAClBA,OAAiB,IAAbk8B,EAAsB,EAAIA,EAC9BC,EAAcH,EAAOlC,KACrBA,OAAuB,IAAhBqC,EAAyB,EAAIA,EACpCxsC,EAAQqsC,EAAOrsC,MACfu/B,EAAc8M,EAAO9M,YACrBkN,EAAQx/B,EACRy/B,EAAcnU,IAEdv4B,EAAQ0sC,IACVD,IAAUC,EAAc1sC,GAAS,GAGnC,IAAI2sC,EAAcxC,GAAQ5K,EAAcv/B,GACxC,MAAO,CACL4sC,UAAW,eAAeh7B,OAAO66B,EAAO,OAAO76B,OAAOvB,EAAG,kBAAkBuB,OAAO+6B,EAAa,KAAK/6B,OAAO+6B,EAAa,WAj3D1HrT,GAAYvD,EAAkBsD,EAAYl7B,UAAWm7B,GACrDC,GAAaxD,EAAkBsD,EAAaE,GAq3DzCP,EAhmD6B,CAimDpC6T,EAAAA,WAEF7T,EAAmBlH,UAAY,CAM7Bgb,QAAS,SAAiB5tC,EAAOuiB,EAAMsrB,GACrC,OAAK7tC,EAAM4tC,SAAY5tC,EAAMqoC,kBAIxBroC,EAAMqoC,mBAA8C,kBAAlBroC,EAAM4tC,QAItC,KAHE,IAAIxqC,MAAM,iBAAiBsP,OAAO6P,EAAM,eAAe7P,OAAOkkB,EAAQ52B,EAAM4tC,SAAU,mBAAmBl7B,OAAOm7B,EAAW,0BAJ3H,IAAIzqC,MAAM,0DAA0DsP,OAAOm7B,EAAW,iBAYjGxO,QAASl3B,IAAAA,OAGTm7B,QAASn7B,IAAAA,OAKT2lC,iBAAkB3lC,IAAAA,OAGlB4lC,iBAAkB5lC,IAAAA,OAGlB6lC,iBAAkB7lC,IAAAA,OAOlBsgC,eAAgBtgC,IAAAA,KAAAA,WAIhB2gC,kBAAmB3gC,IAAAA,KAInB4gC,kBAAmB5gC,IAAAA,KAGnB4/B,iBAAkB5/B,IAAAA,KAElB+/B,YAAa//B,IAAAA,KAEbshC,YAAathC,IAAAA,KAKbihC,oBAAqBjhC,IAAAA,KAKrBuyB,kBAAmBvyB,IAAAA,KAEnBugC,oBAAqBvgC,IAAAA,KAErBg+B,kBAAmBh+B,IAAAA,OAMnBg7B,eAAgBh7B,IAAAA,OAGhBq7B,oBAAqBr7B,IAAAA,OAKrBkhC,WAAYlhC,IAAAA,KAEZ0kC,aAAc1kC,IAAAA,KAEdw/B,iBAAkBx/B,IAAAA,OAKlBohC,gBAAiBphC,IAAAA,MAAgB,IAEjCu4B,aAAcv4B,IAAAA,OACdyjC,iBAAkBzjC,IAAAA,OAKlBmhC,eAAgBnhC,IAAAA,QAAkBA,IAAAA,MAElCghC,oBAAqBhhC,IAAAA,KAErBy5B,WAAYz5B,IAAAA,KAEZuhC,gBAAiBvhC,IAAAA,MAAgB,IAEjCokC,UAAWpkC,IAAAA,OACXmkC,UAAWnkC,IAAAA,OACXskC,YAAatkC,IAAAA,OACbwkC,aAAcxkC,IAAAA,OACdykC,WAAYzkC,IAAAA,OACZsiC,sBAAuBtiC,IAAAA,KAEvBwhC,OAAQxhC,IAAAA,KAERkgC,kBAAmBlgC,IAAAA,KACnBk7B,kBAAmBl7B,IAAAA,KACnBo7B,kBAAmBp7B,IAAAA,MAErB2xB,EAAmBnH,aAAe,CAChC0W,WAAY,KACZwD,aAAc,KACdvD,eAAgB,KAChBI,gBAAiB,GACjBhP,mBAAmB,EACnByL,kBAAmB,IACnBuC,qBAAqB,EACrBS,qBAAqB,EACrByD,WAAY,iBACZxD,qBAAqB,EACrBxH,YAAY,EACZlB,aAAc,GACdiH,iBAAkB,KAClBnE,oBAAqB,GACrBL,eAAgB,IAChB2K,iBAAkB,KAClBvB,UAAW,aACXjJ,QAAS,KACT0K,iBAAkB,KAClBvE,YAAa,aACb1B,iBAAkB,aAClBG,YAAa,aACba,kBAAmB,aACnBD,kBAAmB,aACnBwD,UAAW,iBACXjN,QAAS,KACT0O,iBAAkB,KAClBxE,gBAAiB,GACjBqC,iBAAkB,GAClBa,YAAa,UACbE,aAAc,WACdlC,sBAAuB,4BACvBd,YAAQ3kB,EACRqjB,uBAAmBrjB,EACnBqe,uBAAmBre,EACnBue,uBAAmBve,GAGrB,0CC5lEA,IAAI9e,EAAuB+nC,EAAQ,KAEnC,SAAS9nC,KACT,SAASC,KACTA,EAAuBC,kBAAoBF,EAE3CG,EAAOC,QAAU,WACf,SAASC,EAAKxG,EAAOyG,EAAUC,EAAeC,EAAUC,EAAcC,GACpE,GAAIA,IAAWX,EAAf,CAIA,IAAIY,EAAM,IAAI1D,MACZ,mLAKF,MADA0D,EAAIvE,KAAO,sBACLuE,GAGR,SAASC,IACP,OAAOP,EAFTA,EAAKQ,WAAaR,EAMlB,IAAIS,EAAiB,CACnBC,MAAOV,EACPW,OAAQX,EACRY,KAAMZ,EACNa,KAAMb,EACNc,OAAQd,EACRe,OAAQf,EACRgB,OAAQhB,EACRiB,OAAQjB,EAERkB,IAAKlB,EACLmB,QAASZ,EACT7F,QAASsF,EACTX,YAAaW,EACboB,WAAYb,EACZ1C,KAAMmC,EACNqB,SAAUd,EACVe,MAAOf,EACPgB,UAAWhB,EACXiB,MAAOjB,EACPkB,MAAOlB,EAEPmB,eAAgB9B,EAChBC,kBAAmBF,GAKrB,OAFAc,EAAekB,UAAYlB,EAEpBA,0BC9CPX,EAAOC,QAAU0nC,EAAQ,MAARA,iCCNnB3nC,EAAOC,QAFoB,gFCP3B9H,OAAOk4B,eAAepwB,EAAS,aAAc,CAC3C3D,OAAO,IAET2D,EAAQ2nC,kBAAoB3nC,EAAQ4nC,qBAAkBnpB,EAEtD,IAAIxmB,EAAWC,OAAOC,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcN,OAAOQ,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQL,EAAOK,GAAOD,EAAOC,IAAY,OAAOL,GAEnPyvC,EAAe,WAAc,SAAS1X,EAAiB/3B,EAAQqB,GAAS,IAAK,IAAIpB,EAAI,EAAGA,EAAIoB,EAAMlB,OAAQF,IAAK,CAAE,IAAIk4B,EAAa92B,EAAMpB,GAAIk4B,EAAWR,WAAaQ,EAAWR,aAAc,EAAOQ,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMv4B,OAAOk4B,eAAeh4B,EAAQm4B,EAAW93B,IAAK83B,IAAiB,OAAO,SAAUqD,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY1D,EAAiByD,EAAYl7B,UAAWm7B,GAAiBC,GAAa3D,EAAiByD,EAAaE,GAAqBF,GAA7gB,GAEfkU,EAASJ,EAAQ,OAEjBK,EAAUC,EAAuBF,GAIjCG,EAAaD,EAFDN,EAAQ,QAMpBQ,EAAcF,EAFDN,EAAQ,QAMrBS,EAAgBH,EAFDN,EAAQ,OAMvBU,EAQJ,SAAiC9sB,GAAO,GAAIA,GAAOA,EAAI+sB,WAAc,OAAO/sB,EAAc,IAAIgtB,EAAS,GAAI,GAAW,MAAPhtB,EAAe,IAAK,IAAI7iB,KAAO6iB,EAAWpjB,OAAOQ,UAAUC,eAAeC,KAAK0iB,EAAK7iB,KAAM6vC,EAAO7vC,GAAO6iB,EAAI7iB,IAAgC,OAAtB6vC,EAAOC,QAAUjtB,EAAYgtB,EAR/OE,CAFCd,EAAQ,QAIxBe,EAAmBf,EAAQ,OAE3BgB,EAAoBV,EAAuBS,GAE3CE,EAAyBjB,EAAQ,OAIrC,SAASM,EAAuB1sB,GAAO,OAAOA,GAAOA,EAAI+sB,WAAa/sB,EAAM,CAAEitB,QAASjtB,GAEvF,SAAS2Y,EAAgBD,EAAUJ,GAAe,KAAMI,aAAoBJ,GAAgB,MAAM,IAAIt3B,UAAU,qCAEhH,SAAS20B,EAA2B5I,EAAMzvB,GAAQ,IAAKyvB,EAAQ,MAAM,IAAI2I,eAAe,6DAAgE,OAAOp4B,GAAyB,kBAATA,GAAqC,oBAATA,EAA8ByvB,EAAPzvB,EAIlO,IAAIgvC,EAAkB5nC,EAAQ4nC,gBAAkB,mBAC5CD,EAAoB3nC,EAAQ2nC,kBAAoB,yBAEhDiB,EAAYH,EAAiBI,gBAAiDpqB,IAApCwpB,EAAWM,QAAQO,aAE7DC,EAAoB,SAA2B/sC,GACjD,OAAOnB,SAASd,cAAciC,IAG5BgtC,EAAkB,WACpB,OAAOJ,EAAYX,EAAWM,QAAQO,aAAeb,EAAWM,QAAQU,qCAG1E,SAASC,EAAiBC,GACxB,OAAOA,IAGT,IAAInE,EAAQ,SAAUxR,GAGpB,SAASwR,IACP,IAAI9rC,EAEAkwC,EAAO1jB,EAEXuO,EAAgBn7B,KAAMksC,GAEtB,IAAK,IAAItnC,EAAOpF,UAAUC,OAAQ2iB,EAAO/f,MAAMuC,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC3Esd,EAAKtd,GAAQtF,UAAUsF,GAGzB,OAAewrC,EAAS1jB,EAAQuL,EAA2Bn4B,MAAOI,EAAO8rC,EAAMnU,WAAa34B,OAAO04B,eAAeoU,IAAQpsC,KAAKC,MAAMK,EAAM,CAACJ,MAAMqT,OAAO+O,KAAiBwK,EAAM2jB,aAAe,YAC5LT,GAAaX,EAAWM,QAAQe,uBAAuB5jB,EAAM5nB,MAC9D,IAAIid,EAASmuB,EAAiBxjB,EAAMjsB,MAAM0vC,gBACtCpuB,GAAUA,EAAOY,SAAS+J,EAAM5nB,MAClCid,EAAOwuB,YAAY7jB,EAAM5nB,MAGzBkT,QAAQw4B,KAAK,mJAEd9jB,EAAM+jB,UAAY,SAAUtwC,GAC7BusB,EAAMgkB,OAASvwC,GACdusB,EAAMikB,aAAe,SAAUlwC,GAChC,IACIiwC,EADeV,GACNF,CAAapjB,EAAOqiB,EAAQQ,QAAQxuC,cAAcouC,EAAcI,QAAStwC,EAAS,CAAE2xC,cAAe5E,EAAM4E,eAAiBnwC,IAASisB,EAAM5nB,MACtJ4nB,EAAM+jB,UAAUC,IACPzY,EAA2BvL,EAAnC0jB,GAmGL,OAnJF,SAAmB3V,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIp3B,UAAU,kEAAoEo3B,GAAeD,EAAS/6B,UAAYR,OAAO2yB,OAAO6I,GAAcA,EAAWh7B,UAAW,CAAEqD,YAAa,CAAEM,MAAOo3B,EAAU1D,YAAY,EAAOU,UAAU,EAAMD,cAAc,KAAekD,IAAYx7B,OAAOy4B,eAAiBz4B,OAAOy4B,eAAe8C,EAAUC,GAAcD,EAAS5C,UAAY6C,GAoB/dC,CAAUqR,EAAOxR,GA+BjBqU,EAAa7C,EAAO,CAAC,CACnBvsC,IAAK,oBACL4D,MAAO,WACAosC,EAAiBI,YAEjBD,IACH9vC,KAAKgF,KAAOirC,EAAkB,QAEhCjwC,KAAKgF,KAAKw+B,UAAYxjC,KAAKW,MAAMmuC,gBAEpBsB,EAAiBpwC,KAAKW,MAAM0vC,gBAClCjqC,YAAYpG,KAAKgF,OAEvB8qC,GAAa9vC,KAAK6wC,aAAa7wC,KAAKW,UAEtC,CACDhB,IAAK,0BACL4D,MAAO,SAAiCo8B,GAGtC,MAAO,CAAEoR,WAFQX,EAAiBzQ,EAAU0Q,gBAEXW,WADhBZ,EAAiBpwC,KAAKW,MAAM0vC,mBAG9C,CACD1wC,IAAK,qBACL4D,MAAO,SAA4Bo8B,EAAWvT,EAAG6kB,GAC/C,GAAKtB,EAAiBI,UAAtB,CACA,IAAImB,EAASlxC,KAAKW,MACdwrC,EAAS+E,EAAO/E,OAChB2C,EAAkBoC,EAAOpC,gBAGzBnP,EAAUmP,kBAAoBA,IAChC9uC,KAAKgF,KAAKw+B,UAAYsL,GAGxB,IAAIiC,EAAaE,EAASF,WACtBC,EAAaC,EAASD,WAEtBA,IAAeD,IACjBA,EAAWN,YAAYzwC,KAAKgF,MAC5BgsC,EAAW5qC,YAAYpG,KAAKgF,QAIzB26B,EAAUwM,QAAWA,KAEzB2D,GAAa9vC,KAAK6wC,aAAa7wC,KAAKW,UAEtC,CACDhB,IAAK,uBACL4D,MAAO,WACL,GAAKosC,EAAiBI,WAAc/vC,KAAKgF,MAAShF,KAAK4wC,OAAvD,CAEA,IAAI1uB,EAAQliB,KAAK4wC,OAAO1uB,MACpBjP,EAAMzD,KAAKyD,MACXk+B,EAAWjvB,EAAMiqB,QAAUnsC,KAAKW,MAAMywC,iBAAmBlvB,EAAMivB,UAAYl+B,EAAMjT,KAAKW,MAAMywC,gBAE5FD,GACGjvB,EAAMmvB,aACTrxC,KAAK4wC,OAAOU,mBAGdhrC,WAAWtG,KAAKuwC,aAAcY,EAAWl+B,IAEzCjT,KAAKuwC,kBAGR,CACD5wC,IAAK,SACL4D,MAAO,WACL,OAAKosC,EAAiBI,WAAcD,IAI/B9vC,KAAKgF,MAAQ8qC,IAChB9vC,KAAKgF,KAAOirC,EAAkB,QAGbC,GACZF,CAAaf,EAAQQ,QAAQxuC,cAAcouC,EAAcI,QAAStwC,EAAS,CAChFkB,IAAKL,KAAK2wC,UACVG,cAAe5E,EAAM4E,eACpB9wC,KAAKW,QAASX,KAAKgF,OAXb,QAaT,CAAC,CACHrF,IAAK,gBACL4D,MAAO,SAAuB1B,GAC5BytC,EAAaiC,WAAW1vC,OASrBqqC,EAhIG,CAiIV8C,EAAOV,WAETpC,EAAM3Y,UAAY,CAChB4Y,OAAQiD,EAAYK,QAAQ1nC,KAAKJ,WACjCjH,MAAO0uC,EAAYK,QAAQ9mC,MAAM,CAC/Bkd,QAASupB,EAAYK,QAAQvnC,OAC7B4jC,QAASsD,EAAYK,QAAQvnC,SAE/B4mC,gBAAiBM,EAAYK,QAAQtnC,OACrC0mC,kBAAmBO,EAAYK,QAAQtnC,OACvCqpC,kBAAmBpC,EAAYK,QAAQtnC,OACvCq7B,UAAW4L,EAAYK,QAAQ/mC,UAAU,CAAC0mC,EAAYK,QAAQtnC,OAAQinC,EAAYK,QAAQ9mC,MAAM,CAC9F8W,KAAM2vB,EAAYK,QAAQtnC,OAAOR,WACjC8pC,UAAWrC,EAAYK,QAAQtnC,OAAOR,WACtC0pC,YAAajC,EAAYK,QAAQtnC,OAAOR,eAE1C+pC,iBAAkBtC,EAAYK,QAAQ/mC,UAAU,CAAC0mC,EAAYK,QAAQtnC,OAAQinC,EAAYK,QAAQ9mC,MAAM,CACrG8W,KAAM2vB,EAAYK,QAAQtnC,OAAOR,WACjC8pC,UAAWrC,EAAYK,QAAQtnC,OAAOR,WACtC0pC,YAAajC,EAAYK,QAAQtnC,OAAOR,eAE1C2kC,WAAY8C,EAAYK,QAAQ/mC,UAAU,CAAC0mC,EAAYK,QAAQlnC,WAAWqnC,EAAkBH,SAAUL,EAAYK,QAAQlnC,WAAWonC,EAAiBgC,oBAAqBvC,EAAYK,QAAQlnC,WAAWonC,EAAiBiC,cAAexC,EAAYK,QAAQnnC,QAAQ8mC,EAAYK,QAAQlnC,WAAWqnC,EAAkBH,YACvTrF,YAAagF,EAAYK,QAAQznC,KACjCokC,eAAgBgD,EAAYK,QAAQznC,KACpCopC,eAAgBhC,EAAYK,QAAQxnC,OACpC4pC,YAAazC,EAAYK,QAAQ1nC,KACjC+pC,uBAAwB1C,EAAYK,QAAQ1nC,KAC5CgqC,0BAA2B3C,EAAYK,QAAQ1nC,KAC/CiqC,4BAA6B5C,EAAYK,QAAQ1nC,KACjDkqC,cAAe7C,EAAYK,QAAQ1nC,KACnCsoC,eAAgBjB,EAAYK,QAAQznC,KACpCkqC,KAAM9C,EAAYK,QAAQvnC,OAC1BuN,KAAM25B,EAAYK,QAAQvnC,OAC1BxB,KAAM0oC,EAAYK,QAAQtnC,OAC1BkkC,aAAc+C,EAAYK,QAAQtnC,OAClCgqC,iBAAkB/C,EAAYK,QAAQ1nC,KACtCqqC,WAAYhD,EAAYK,QAAQznC,KAChCqqC,WAAYjD,EAAYK,QAAQznC,KAChCsiB,GAAI8kB,EAAYK,QAAQtnC,OACxBmqC,eAAgBlD,EAAYK,QAAQznC,KACpCuqC,eAAgBnD,EAAYK,QAAQznC,MAEtCkkC,EAAM5Y,aAAe,CACnB6Y,QAAQ,EACR2C,gBAAiBA,EACjBD,kBAAmBA,EACnBnoC,KAAM,SACNmrC,aAAa,EACbT,eAAgB,EAChBU,wBAAwB,EACxBK,kBAAkB,EAClBJ,2BAA2B,EAC3BC,6BAA6B,EAC7BC,eAAe,EACf5B,eAAgB,WACd,OAAOtuC,SAASoE,MAElBmsC,eAAgB,SAAwB3xC,EAAO6xC,GAC7C,OAAOvD,EAAQQ,QAAQxuC,cACrB,MACAN,EACA6xC,IAGJD,eAAgB,SAAwB5xC,EAAO2D,GAC7C,OAAO2qC,EAAQQ,QAAQxuC,cACrB,MACAN,EACA2D,KAIN4nC,EAAM4E,cAAgB,CACpBhF,QAAS,CACPtqC,SAAU,QACV84B,IAAK,EACL8H,KAAM,EACNF,MAAO,EACPC,OAAQ,EACR6J,gBAAiB,6BAEnBnmB,QAAS,CACPrkB,SAAU,WACV84B,IAAK,OACL8H,KAAM,OACNF,MAAO,OACPC,OAAQ,OACRjhC,OAAQ,iBACRuxC,WAAY,OACZnxC,SAAU,OACVoxC,wBAAyB,QACzBzG,aAAc,MACd0G,QAAS,OACTpxC,QAAS,UAKb,EAAIsuC,EAAuB+C,UAAU1G,GAQrChlC,EAAAA,QAAkBglC,qCCzSlB9sC,OAAOk4B,eAAepwB,EAAS,aAAc,CAC3C3D,OAAO,IAGT,IAAIpE,EAAWC,OAAOC,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcN,OAAOQ,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQL,EAAOK,GAAOD,EAAOC,IAAY,OAAOL,GAEnPi4B,EAA4B,oBAAX70B,QAAoD,kBAApBA,OAAOC,SAAwB,SAAU6f,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,oBAAX9f,QAAyB8f,EAAIvf,cAAgBP,QAAU8f,IAAQ9f,OAAO9C,UAAY,gBAAkB4iB,GAElQusB,EAAe,WAAc,SAAS1X,EAAiB/3B,EAAQqB,GAAS,IAAK,IAAIpB,EAAI,EAAGA,EAAIoB,EAAMlB,OAAQF,IAAK,CAAE,IAAIk4B,EAAa92B,EAAMpB,GAAIk4B,EAAWR,WAAaQ,EAAWR,aAAc,EAAOQ,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAMv4B,OAAOk4B,eAAeh4B,EAAQm4B,EAAW93B,IAAK83B,IAAiB,OAAO,SAAUqD,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY1D,EAAiByD,EAAYl7B,UAAWm7B,GAAiBC,GAAa3D,EAAiByD,EAAaE,GAAqBF,GAA7gB,GAEfkU,EAASJ,EAAQ,OAIjBQ,EAAcF,EAFDN,EAAQ,QAMrBiE,EAAenD,EAFCd,EAAQ,QAMxBkE,EAAa5D,EAFDN,EAAQ,QAMpBU,EAAeI,EAFCd,EAAQ,QAMxBmE,EAAYrD,EAFCd,EAAQ,QAIrBe,EAAmBf,EAAQ,OAE3BgB,EAAoBV,EAAuBS,GAI3CqD,EAAwB9D,EAFDN,EAAQ,QAMnC,SAASc,EAAwBltB,GAAO,GAAIA,GAAOA,EAAI+sB,WAAc,OAAO/sB,EAAc,IAAIgtB,EAAS,GAAI,GAAW,MAAPhtB,EAAe,IAAK,IAAI7iB,KAAO6iB,EAAWpjB,OAAOQ,UAAUC,eAAeC,KAAK0iB,EAAK7iB,KAAM6vC,EAAO7vC,GAAO6iB,EAAI7iB,IAAgC,OAAtB6vC,EAAOC,QAAUjtB,EAAYgtB,EAElQ,SAASN,EAAuB1sB,GAAO,OAAOA,GAAOA,EAAI+sB,WAAa/sB,EAAM,CAAEitB,QAASjtB,GAJvFosB,EAAQ,OAaR,IAAIqE,EAAc,CAChBnH,QAAS,sBACTjmB,QAAS,uBAMPqtB,EAAsB,EAEtBC,EAAc,SAAUzY,GAG1B,SAASyY,EAAYxyC,IApBvB,SAAyBu6B,EAAUJ,GAAe,KAAMI,aAAoBJ,GAAgB,MAAM,IAAIt3B,UAAU,qCAqB5G23B,CAAgBn7B,KAAMmzC,GAEtB,IAAIvmB,EArBR,SAAoC2C,EAAMzvB,GAAQ,IAAKyvB,EAAQ,MAAM,IAAI2I,eAAe,6DAAgE,OAAOp4B,GAAyB,kBAATA,GAAqC,oBAATA,EAA8ByvB,EAAPzvB,EAqBlNq4B,CAA2Bn4B,MAAOmzC,EAAYpb,WAAa34B,OAAO04B,eAAeqb,IAAcrzC,KAAKE,KAAMW,IAkMtH,OAhMAisB,EAAMwmB,cAAgB,SAAUtH,GAC9Blf,EAAMkf,QAAUA,EAChBlf,EAAMjsB,MAAMyxC,YAAcxlB,EAAMjsB,MAAMyxC,WAAWtG,IAGnDlf,EAAMymB,cAAgB,SAAUxtB,GAC9B+G,EAAM/G,QAAUA,EAChB+G,EAAMjsB,MAAM0xC,YAAczlB,EAAMjsB,MAAM0xC,WAAWxsB,IAGnD+G,EAAM0mB,WAAa,WACjB,IAAIzJ,EAAcjd,EAAMjsB,MACpB2rC,EAAazC,EAAYyC,WACzBuF,EAAchI,EAAYgI,YAC1BL,EAAoB3H,EAAY2H,kBAChC3C,EAAoBhF,EAAYgF,kBAIpCA,GAAqBkE,EAAUQ,OAAOxxC,SAASoE,KAAM0oC,GAErD2C,GAAqBuB,EAAUQ,OAAOxxC,SAASyxC,qBAAqB,QAAQ,GAAIhC,GAG5EK,GAAeqB,EAAsB,GAGX,KAF5BA,GAAuB,IAGrB5D,EAAamE,KAAKnH,GAIlB1f,EAAMjsB,MAAMmxC,yBACVllB,EAAMjsB,MAAMqxC,6BACda,EAAaa,YAAY9mB,EAAMjsB,MAAMsxC,eACrCY,EAAac,uBAEbd,EAAae,mBAIbhnB,EAAMjsB,MAAMkzC,cACdjnB,EAAMjsB,MAAMkzC,eAGdb,EAAsBvD,QAAQqE,WAAWlnB,IAG3CA,EAAMmnB,KAAO,WACXnnB,EAAMonB,aACFpnB,EAAM1K,MAAMuvB,WAAa7kB,EAAM1K,MAAMmvB,aACvChrC,aAAaumB,EAAMqnB,YACnBrnB,EAAM+R,SAAS,CAAE0S,aAAa,MAE1BzkB,EAAMjsB,MAAMmxC,yBACde,EAAaqB,iBAAiBtnB,EAAM5nB,MACpC6tC,EAAasB,qBAGfvnB,EAAM+R,SAAS,CAAEwN,QAAQ,IAAQ,WAC/Bvf,EAAMwnB,mBAAqBC,uBAAsB,WAC/CznB,EAAM+R,SAAS,CAAE8S,WAAW,IAExB7kB,EAAMjsB,MAAMwrC,QAAUvf,EAAMjsB,MAAMypC,aACpCxd,EAAMjsB,MAAMypC,YAAY,CACtBkK,UAAW1nB,EAAMkf,QACjB0G,UAAW5lB,EAAM/G,kBAQ7B+G,EAAM2nB,MAAQ,WACR3nB,EAAMjsB,MAAMywC,eAAiB,EAC/BxkB,EAAM0kB,mBAEN1kB,EAAM4nB,uBAIV5nB,EAAM6nB,aAAe,WACnB,OAAO7nB,EAAM/G,UAAY+G,EAAM8nB,mBAAqB9nB,EAAM/G,QAAQkiB,MAAM,CAAEkK,eAAe,KAG3FrlB,EAAM0kB,iBAAmB,WACvB,IAAIH,EAAW3hC,KAAKyD,MAAQ2Z,EAAMjsB,MAAMywC,eACxCxkB,EAAM+R,SAAS,CAAE0S,aAAa,EAAMF,SAAUA,IAAY,WACxDvkB,EAAMqnB,WAAa3tC,WAAWsmB,EAAM4nB,oBAAqB5nB,EAAM1K,MAAMivB,SAAW3hC,KAAKyD,WAIzF2Z,EAAM4nB,oBAAsB,WAC1B5nB,EAAM+R,SAAS,CACb0S,aAAa,EACblF,QAAQ,EACRsF,WAAW,EACXN,SAAU,MACTvkB,EAAM0mB,aAGX1mB,EAAM+nB,cAAgB,SAAUpR,GAnHtB,IAoHJA,EAAM9oB,UACR,EAAIq4B,EAAWrD,SAAS7iB,EAAM/G,QAAS0d,GAGrC3W,EAAMjsB,MAAMwxC,kBAvHR,KAuH4B5O,EAAM9oB,UACxC8oB,EAAMG,kBACN9W,EAAMiQ,aAAa0G,KAIvB3W,EAAMgoB,qBAAuB,SAAUrR,GACX,OAAtB3W,EAAMioB,cACRjoB,EAAMioB,aAAc,GAGlBjoB,EAAMioB,aAAejoB,EAAMjsB,MAAMoxC,4BAC/BnlB,EAAMkoB,oBACRloB,EAAMiQ,aAAa0G,GAEnB3W,EAAM6nB,gBAGV7nB,EAAMioB,YAAc,MAGtBjoB,EAAMmoB,uBAAyB,WAC7BnoB,EAAMioB,aAAc,GAGtBjoB,EAAMooB,yBAA2B,SAAUzR,GACpC3W,EAAMjsB,MAAMoxC,2BAA6BxO,EAAMjkC,QAAUstB,EAAMkf,SAClEvI,EAAMQ,kBAIVnX,EAAMqoB,qBAAuB,WAC3BroB,EAAMioB,aAAc,GAGtBjoB,EAAMsoB,yBAA2B,WAC/BtoB,EAAMioB,aAAc,GAGtBjoB,EAAMiQ,aAAe,SAAU0G,GAC7B,OAAO3W,EAAMkoB,qBAAuBloB,EAAMjsB,MAAMyrC,eAAe7I,IAGjE3W,EAAMkoB,kBAAoB,WACxB,OAAOloB,EAAMjsB,MAAMyrC,gBAGrBxf,EAAMuoB,eAAiB,WACrB,OAAQvoB,EAAM1K,MAAMiqB,SAAWvf,EAAM1K,MAAMmvB,aAG7CzkB,EAAM8nB,gBAAkB,WACtB,OAAO3yC,SAASqzC,gBAAkBxoB,EAAM/G,SAAW+G,EAAM/G,QAAQhD,SAAS9gB,SAASqzC,gBAGrFxoB,EAAMyoB,eAAiB,SAAUzR,EAAO0R,GACtC,IAAIC,EAAyF,YAArD,qBAAfD,EAA6B,YAAc/d,EAAQ+d,IAA4BA,EAAa,CACnH71B,KAAMwzB,EAAYrP,GAClB6N,UAAWwB,EAAYrP,GAAS,eAChCyN,YAAa4B,EAAYrP,GAAS,kBAEhCJ,EAAY+R,EAAW91B,KAO3B,OANImN,EAAM1K,MAAMuvB,YACdjO,EAAYA,EAAY,IAAM+R,EAAW9D,WAEvC7kB,EAAM1K,MAAMmvB,cACd7N,EAAYA,EAAY,IAAM+R,EAAWlE,aAEd,kBAAfiE,GAA2BA,EAAa9R,EAAY,IAAM8R,EAAa9R,GAGvF5W,EAAM4oB,qBAAuB,SAAUC,EAAQC,GAC7C,OAAOt2C,OAAO0B,KAAK40C,GAAOtoC,QAAO,SAAUklB,EAAKpvB,GAE9C,OADAovB,EAAImjB,EAAS,IAAMvyC,GAAQwyC,EAAMxyC,GAC1BovB,IACN,KAGL1F,EAAM1K,MAAQ,CACZuvB,WAAW,EACXJ,aAAa,GAGfzkB,EAAMioB,YAAc,KACpBjoB,EAAM+oB,yBAA2B,KAC1B/oB,EAmHT,OAxUF,SAAmB+N,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIp3B,UAAU,kEAAoEo3B,GAAeD,EAAS/6B,UAAYR,OAAO2yB,OAAO6I,GAAcA,EAAWh7B,UAAW,CAAEqD,YAAa,CAAEM,MAAOo3B,EAAU1D,YAAY,EAAOU,UAAU,EAAMD,cAAc,KAAekD,IAAYx7B,OAAOy4B,eAAiBz4B,OAAOy4B,eAAe8C,EAAUC,GAAcD,EAAS5C,UAAY6C,GAc/dC,CAAUsY,EAAazY,GA0MvBqU,EAAaoE,EAAa,CAAC,CACzBxzC,IAAK,oBACL4D,MAAO,WACDvD,KAAKW,MAAMwrC,QACbnsC,KAAK+zC,SAGR,CACDp0C,IAAK,qBACL4D,MAAO,SAA4Bo8B,EAAWgJ,GAYxC3oC,KAAKW,MAAMwrC,SAAWxM,EAAUwM,OAClCnsC,KAAK+zC,QACK/zC,KAAKW,MAAMwrC,QAAUxM,EAAUwM,QACzCnsC,KAAKu0C,QAIHv0C,KAAKW,MAAMmxC,wBAA0B9xC,KAAKkiB,MAAMiqB,SAAWxD,EAAUwD,QACvEnsC,KAAKy0C,iBAGR,CACD90C,IAAK,uBACL4D,MAAO,WACDvD,KAAKkiB,MAAMiqB,QACbnsC,KAAKszC,aAEPjtC,aAAarG,KAAKi0C,YAClB2B,qBAAqB51C,KAAKo0C,sBAE3B,CACDz0C,IAAK,aACL4D,MAAO,WACL,IAAI2tC,EAASlxC,KAAKW,MACd2rC,EAAa4E,EAAO5E,WACpBuF,EAAcX,EAAOW,YACrBL,EAAoBN,EAAOM,kBAC3B3C,EAAoBqC,EAAOrC,kBAI/BA,GAAqBkE,EAAU8C,IAAI9zC,SAASoE,KAAM0oC,GAElD2C,GAAqBuB,EAAU8C,IAAI9zC,SAASyxC,qBAAqB,QAAQ,GAAIhC,GAEzEK,IACFqB,GAAuB,EACvB5D,EAAawG,KAAKxJ,IAGpB0G,EAAsBvD,QAAQsG,SAAS/1C,QAKxC,CACDL,IAAK,SACL4D,MAAO,WACL,IAAIyyC,EAAUh2C,KAAKW,MACf2pB,EAAK0rB,EAAQ1rB,GACbkZ,EAAYwS,EAAQxS,UACpBkO,EAAmBsE,EAAQtE,iBAC3BZ,EAAgBkF,EAAQlF,cACxBxsC,EAAW0xC,EAAQ1xC,SAEnB2xC,EAAgBzS,EAAY,GAAKsN,EAAcjrB,QAC/CqwB,EAAgBxE,EAAmB,GAAKZ,EAAchF,QAE1D,GAAI9rC,KAAKm1C,iBACP,OAAO,KAGT,IAAIgB,EAAe,CACjB91C,IAAKL,KAAKozC,cACV5P,UAAWxjC,KAAKq1C,eAAe,UAAW3D,GAC1ChxC,MAAOvB,EAAS,GAAI+2C,EAAel2C,KAAKW,MAAMD,MAAMorC,SACpDkB,QAAShtC,KAAK40C,qBACdlI,YAAa1sC,KAAKg1C,0BAGhBoB,EAAej3C,EAAS,CAC1BmrB,GAAIA,EACJjqB,IAAKL,KAAKqzC,cACV3yC,MAAOvB,EAAS,GAAI82C,EAAej2C,KAAKW,MAAMD,MAAMmlB,SACpD2d,UAAWxjC,KAAKq1C,eAAe,UAAW7R,GAC1CqJ,SAAU,KACVC,UAAW9sC,KAAK20C,cAChBjI,YAAa1sC,KAAKk1C,yBAClBmB,UAAWr2C,KAAK+0C,uBAChB/H,QAAShtC,KAAKi1C,qBACdvuC,KAAM1G,KAAKW,MAAM+F,KACjB,aAAc1G,KAAKW,MAAM0rC,cACxBrsC,KAAKw1C,qBAAqB,OAAQr2C,EAAS,CAAEm3C,OAAO,GAAQt2C,KAAKW,MAAMuxC,OAAQlyC,KAAKw1C,qBAAqB,OAAQx1C,KAAKW,MAAM8U,MAAQ,IAAK,CAC1I,cAAezV,KAAKW,MAAM41C,SAGxBhE,EAAiBvyC,KAAKW,MAAM4xC,eAAe6D,EAAc9xC,GAC7D,OAAOtE,KAAKW,MAAM2xC,eAAe6D,EAAc5D,OAI5CY,EA3TS,CA4ThBnE,EAAOV,WAET6E,EAAY7f,aAAe,CACzB5yB,MAAO,CACLorC,QAAS,GACTjmB,QAAS,IAEXirB,cAAe,IAEjBqC,EAAY5f,UAAY,CACtB4Y,OAAQiD,EAAYK,QAAQ1nC,KAAKJ,WACjCmpC,cAAe1B,EAAYK,QAAQ9mC,MAAM,CACvCkd,QAASupB,EAAYK,QAAQvnC,OAC7B4jC,QAASsD,EAAYK,QAAQvnC,SAE/BxH,MAAO0uC,EAAYK,QAAQ9mC,MAAM,CAC/Bkd,QAASupB,EAAYK,QAAQvnC,OAC7B4jC,QAASsD,EAAYK,QAAQvnC,SAE/Bs7B,UAAW4L,EAAYK,QAAQ/mC,UAAU,CAAC0mC,EAAYK,QAAQtnC,OAAQinC,EAAYK,QAAQvnC,SAC1FwpC,iBAAkBtC,EAAYK,QAAQ/mC,UAAU,CAAC0mC,EAAYK,QAAQtnC,OAAQinC,EAAYK,QAAQvnC,SACjG2mC,kBAAmBO,EAAYK,QAAQtnC,OACvCqpC,kBAAmBpC,EAAYK,QAAQtnC,OACvC0pC,YAAazC,EAAYK,QAAQ1nC,KACjCukC,WAAY8C,EAAYK,QAAQ/mC,UAAU,CAAC0mC,EAAYK,QAAQlnC,WAAWqnC,EAAkBH,SAAUL,EAAYK,QAAQlnC,WAAWonC,EAAiBgC,oBAAqBvC,EAAYK,QAAQlnC,WAAWonC,EAAiBiC,cAAexC,EAAYK,QAAQnnC,QAAQ8mC,EAAYK,QAAQlnC,WAAWqnC,EAAkBH,YACvTrF,YAAagF,EAAYK,QAAQznC,KACjC6rC,aAAczE,EAAYK,QAAQznC,KAClCokC,eAAgBgD,EAAYK,QAAQznC,KACpCopC,eAAgBhC,EAAYK,QAAQxnC,OACpC6pC,uBAAwB1C,EAAYK,QAAQ1nC,KAC5CgqC,0BAA2B3C,EAAYK,QAAQ1nC,KAC/CiqC,4BAA6B5C,EAAYK,QAAQ1nC,KACjDkqC,cAAe7C,EAAYK,QAAQ1nC,KACnCrB,KAAM0oC,EAAYK,QAAQtnC,OAC1BkkC,aAAc+C,EAAYK,QAAQtnC,OAClC+pC,KAAM9C,EAAYK,QAAQvnC,OAC1BuN,KAAM25B,EAAYK,QAAQvnC,OAC1B5D,SAAU8qC,EAAYK,QAAQzqC,KAC9BmtC,iBAAkB/C,EAAYK,QAAQ1nC,KACtCqqC,WAAYhD,EAAYK,QAAQznC,KAChCqqC,WAAYjD,EAAYK,QAAQznC,KAChCsiB,GAAI8kB,EAAYK,QAAQtnC,OACxBmqC,eAAgBlD,EAAYK,QAAQznC,KACpCuqC,eAAgBnD,EAAYK,QAAQznC,KACpCuuC,OAAQnH,EAAYK,QAAQtnC,QAE9BjB,EAAAA,QAAkBisC,EAClBlsC,EAAOC,QAAUA,EAAO,4CC1axB9H,OAAOk4B,eAAepwB,EAAS,aAAc,CAC3C3D,OAAO,IAET2D,EAAQsvC,WAqBR,WACMC,IACEA,EAAcC,gBAChBD,EAAcC,gBAAgB,eACG,MAAxBD,EAAch3C,OACvBg3C,EAAclwC,SAAQ,SAAU1E,GAC9B,OAAOA,EAAQ60C,gBAAgB,kBAGjC30C,SAAS40C,iBAAiBF,GAAelwC,SAAQ,SAAU1E,GACzD,OAAOA,EAAQ60C,gBAAgB,mBAIrCD,EAAgB,MAlClBvvC,EAAQiR,IAsCR,WACMoW,GAtCNrnB,EAAQ0vC,eAAiBA,EACzB1vC,EAAQqqC,WAoDR,SAAoB1vC,GAClB,IAAIg1C,EAAah1C,EACjB,GAA0B,kBAAfg1C,GAA2BlH,EAAiBI,UAAW,CAChE,IAAI+G,EAAK/0C,SAAS40C,iBAAiBE,GACnCD,EAAeE,EAAID,GACnBA,EAAaC,EAGf,OADAL,EAAgBI,GAAcJ,GA1DhCvvC,EAAQ6vC,gBAAkBA,EAC1B7vC,EAAQ4uC,KAwER,SAAcxJ,GACZ,IAAI0K,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiBvxB,EAErB,IACE,IAAK,IAAgE1gB,EAA5DC,EAAY6xC,EAAgBzK,GAAY5pC,OAAOC,cAAsBq0C,GAA6B/xC,EAAQC,EAAUzB,QAAQH,MAAO0zC,GAA4B,EAAM,CACnK/xC,EAAM1B,MAEZ2C,aAAa,cAAe,SAEjC,MAAOuB,GACPwvC,GAAoB,EACpBC,EAAiBzvC,EARnB,QAUE,KACOuvC,GAA6B9xC,EAAUiyC,QAC1CjyC,EAAUiyC,SAFd,QAKE,GAAIF,EACF,MAAMC,KA5FdhwC,EAAQusC,KAkGR,SAAcnH,GACZ,IAAI8K,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkB3xB,EAEtB,IACE,IAAK,IAAiE4xB,EAA7DC,EAAaT,EAAgBzK,GAAY5pC,OAAOC,cAAuBy0C,GAA8BG,EAASC,EAAW/zC,QAAQH,MAAO8zC,GAA6B,EAAM,CACzKG,EAAOh0C,MAEbmzC,gBAAgB,gBAErB,MAAOjvC,GACP4vC,GAAqB,EACrBC,EAAkB7vC,EARpB,QAUE,KACO2vC,GAA8BI,EAAWL,QAC5CK,EAAWL,SAFf,QAKE,GAAIE,EACF,MAAMC,KAtHdpwC,EAAQuwC,6BA4HR,WACEhB,EAAgB,MA3HlB,IAMgCj0B,EAN5Bk1B,EAAW9I,EAAQ,OAEnB+I,GAI4Bn1B,EAJOk1B,IAIcl1B,EAAI+sB,WAAa/sB,EAAM,CAAEitB,QAASjtB,GAFnFmtB,EAAmBf,EAAQ,OAI/B,IAAI6H,EAAgB,KAgCpB,SAASG,EAAegB,EAAUC,GAChC,IAAKD,IAAaA,EAASn4C,OACzB,MAAM,IAAIsE,MAAM,oDAAsD8zC,EAAW,KAerF,SAASd,EAAgBzK,GACvB,IAAIwK,EAAKxK,GAAcmK,EACvB,OAAIK,EACKz0C,MAAMO,QAAQk0C,IAAOA,aAAcgB,gBAAkBhB,aAAciB,SAAWjB,EAAK,CAACA,KAE3F,EAAIa,EAAUlI,UAAS,EAAO,CAAC,2CAA4C,iEAAkE,0DAA2D,mEAAoE,qCAAqCj1B,KAAK,MAE/S,yCC5EXpb,OAAOk4B,eAAepwB,EAAS,aAAc,CAC3C3D,OAAO,IAET2D,EAAQsvC,WAiBR,WAGE,IAFA,IAAIrd,EAAO,CAAC6e,EAAQC,GAEXlqB,EAAK,EAAGA,EAAKoL,EAAK15B,OAAQsuB,IAAM,CACvC,IAAIjN,EAAOqY,EAAKpL,GACXjN,IACLA,EAAKvG,YAAcuG,EAAKvG,WAAWk2B,YAAY3vB,IAEjDk3B,EAASC,EAAQ,KACjBC,EAAY,IAzBdhxC,EAAQiR,IA6BR,WACED,QAAQC,IAAI,uBACZD,QAAQC,IAAI+/B,EAAUz4C,QAEtB,IADA,IAAI04C,EAAQ,CAACH,EAAQC,GACZG,EAAM,EAAGA,EAAMD,EAAM14C,OAAQ24C,IAAO,CAC3C,IACIC,EADOF,EAAMC,IACG,GACpBlgC,QAAQC,IAAIkgC,EAAMj+B,SAAUi+B,EAAM7U,UAAW6U,EAAM/tB,IAErDpS,QAAQC,IAAI,4BApCd,IAIgCqK,EAJ5B81B,EAAuB1J,EAAQ,OAE/BoE,GAE4BxwB,EAFmB81B,IAEE91B,EAAI+sB,WAAa/sB,EAAM,CAAEitB,QAASjtB,GAIvF,IAAIw1B,OAAS,EACTC,OAAQ,EACRC,EAAY,GA8BhB,SAASzD,IACkB,IAArByD,EAAUz4C,QAOdy4C,EAAUA,EAAUz4C,OAAS,GAAGg1C,eAoClCzB,EAAsBvD,QAAQ8I,WAjC9B,SAAkBC,EAAWC,GACtBT,GAAWC,KACdD,EAASj2C,SAASd,cAAc,QACzBiF,aAAa,6BAA8B,IAClD8xC,EAAOt3C,MAAMc,SAAW,WACxBw2C,EAAOt3C,MAAMg4C,QAAU,IACvBV,EAAO9xC,aAAa,WAAY,KAChC8xC,EAAO1gC,iBAAiB,QAASm9B,IACjCwD,EAAQD,EAAOW,aACTrhC,iBAAiB,QAASm9B,KAGlCyD,EAAYO,GAEEh5C,OAAS,GAEjBsC,SAASoE,KAAKyyC,aAAeZ,GAC/Bj2C,SAASoE,KAAK0yC,aAAab,EAAQj2C,SAASoE,KAAKyyC,YAE/C72C,SAASoE,KAAK2yC,YAAcb,GAC9Bl2C,SAASoE,KAAKC,YAAY6xC,KAIxBD,EAAOe,eACTf,EAAOe,cAActI,YAAYuH,GAE/BC,EAAMc,eACRd,EAAMc,cAActI,YAAYwH,yCCrFtC74C,OAAOk4B,eAAepwB,EAAS,aAAc,CAC3C3D,OAAO,IAET2D,EAAQsvC,WAYR,WACE,IAAIwC,EAAcj3C,SAASyxC,qBAAqB,QAAQ,GACxD,IAAK,IAAIvtB,KAAOgzB,EACdC,EAAYF,EAAaC,EAAchzB,IAGzC,IAAI9f,EAAOpE,SAASoE,KACpB,IAAK,IAAIgzC,KAAQC,EACfF,EAAY/yC,EAAMizC,EAAiBD,IAGrCF,EAAgB,GAChBG,EAAmB,IAvBrBlyC,EAAQiR,IA2BR,WACMoW,GA3BN,IAAI0qB,EAAgB,GAChBG,EAAmB,GAIvB,SAASF,EAAYG,EAAIpzB,GACvBozB,EAAGtG,UAAUQ,OAAOttB,GAwGZ/e,EAAQ2uC,IAAM,SAAah0C,EAASy3C,GAC5C,OA5BmCC,EA4BjB13C,EAAQkxC,UA5BuByG,EA4BsB,QAAlC33C,EAAQuY,SAASq/B,cAA0BR,EAAgBG,OAAkBE,EAAY7/B,MAAM,KA3B5HlT,SAAQ,SAAUi9B,IA5BH,SAA4BgW,EAAMhW,GACpDgW,EAAKhW,KACRgW,EAAKhW,GAAa,GAEpBgW,EAAKhW,IAAc,EAyBjBkW,CAAmBF,EAAMhW,GACzB+V,EAAa1D,IAAIrS,MAHJ,IAAoB+V,EAAcC,GAqCtCtyC,EAAQqsC,OAAS,SAAgB1xC,EAASy3C,GACrD,OAxBuCC,EAwBnB13C,EAAQkxC,UAxByByG,EAwBoB,QAAlC33C,EAAQuY,SAASq/B,cAA0BR,EAAgBG,OAAkBE,EAAY7/B,MAAM,KAvB9HlT,SAAQ,SAAUi9B,IA5BH,SAA4BgW,EAAMhW,GACrDgW,EAAKhW,KACPgW,EAAKhW,IAAc,GA2BnBmW,CAAmBH,EAAMhW,GACL,IAApBgW,EAAKhW,IAAoB+V,EAAahG,OAAO/P,MAH9B,IAAsB+V,EAAcC,uCCtGvDp6C,OAAOk4B,eAAepwB,EAAS,aAAc,CAC3C3D,OAAO,IAET2D,EAAQsvC,WAsBR,WACEoD,EAAqB,IAtBvB1yC,EAAQiR,IA0BR,WACMoW,GA1BNrnB,EAAQ2yC,WAAaA,EACrB3yC,EAAQ4yC,YAAcA,EACtB5yC,EAAQitC,kBA4DR,WACEyF,EAAmB9mC,KAAK/Q,SAASqzC,gBA5DnCluC,EAAQwsC,YAgER,WACE,IAAIzB,EAAgBzyC,UAAUC,OAAS,QAAsBkmB,IAAjBnmB,UAAU,IAAmBA,UAAU,GAE/Eu6C,EAAU,KACd,IAKE,YAJkC,IAA9BH,EAAmBn6C,SACrBs6C,EAAUH,EAAmB3lC,OACrB8zB,MAAM,CAAEkK,cAAeA,KAGjC,MAAO3oC,GACP4O,QAAQw4B,KAAK,CAAC,+BAAgCqJ,EAAS,oCAAoCv/B,KAAK,QA1EpGtT,EAAQ0sC,gBA+ER,WACEgG,EAAmBn6C,OAAS,GAAKm6C,EAAmB3lC,OA/EtD/M,EAAQgtC,iBAkFR,SAA0BryC,GACxBm4C,EAAen4C,EAEXC,OAAOwV,kBACTxV,OAAOwV,iBAAiB,OAAQuiC,GAAY,GAC5C93C,SAASuV,iBAAiB,QAASwiC,GAAa,KAEhDh4C,OAAOyV,YAAY,SAAUsiC,GAC7B93C,SAASwV,YAAY,UAAWuiC,KAzFpC5yC,EAAQysC,oBA6FR,WACEqG,EAAe,KAEXl4C,OAAOwV,kBACTxV,OAAO2V,oBAAoB,OAAQoiC,GACnC93C,SAAS0V,oBAAoB,QAASqiC,KAEtCh4C,OAAO4V,YAAY,SAAUmiC,GAC7B93C,SAAS2V,YAAY,UAAWoiC,KAnGpC,IAIgCt3B,EAJ5By3B,EAAYrL,EAAQ,OAEpBsL,GAE4B13B,EAFQy3B,IAEaz3B,EAAI+sB,WAAa/sB,EAAM,CAAEitB,QAASjtB,GAEvF,IAAIo3B,EAAqB,GACrBI,EAAe,KACfG,GAAc,EAqBlB,SAASN,IACPM,GAAc,EAGhB,SAASL,IACP,GAAIK,EAAa,CAEf,GADAA,GAAc,GACTH,EACH,OAOF1zC,YAAW,WACL0zC,EAAan3B,SAAS9gB,SAASqzC,kBAG1B,EAAI8E,EAAWzK,SAASuK,GAAc,IAAMA,GAClDjS,UACF,uCC/DP3oC,OAAOk4B,eAAepwB,EAAS,aAAc,CAC3C3D,OAAO,IAET2D,EAAQiR,IAyDR,WACED,QAAQC,IAAI,kCACZD,QAAQC,IAAIiiC,EAAoB3B,cAAch5C,QAC9C26C,EAAoB3B,cAAclyC,SAAQ,SAAU2E,GAClD,OAAOgN,QAAQC,IAAIjN,MAErBgN,QAAQC,IAAI,uCA9DdjR,EAAQsvC,WAkER,WACE4D,EAAsB,IAAIC,GA7D5B,IAAIA,EAAsB,SAASA,IACjC,IAAIztB,EAAQ5sB,MALd,SAAyBk7B,EAAUJ,GAAe,KAAMI,aAAoBJ,GAAgB,MAAM,IAAIt3B,UAAU,qCAO9G23B,CAAgBn7B,KAAMq6C,GAEtBr6C,KAAK+1C,SAAW,SAAUuE,IAC2B,IAA/C1tB,EAAM6rB,cAAc13C,QAAQu5C,KAOhC1tB,EAAM6rB,cAAc3lC,KAAKwnC,GACzB1tB,EAAM2tB,KAAK,cAGbv6C,KAAK8zC,WAAa,SAAUwG,GAC1B,IAAItzB,EAAQ4F,EAAM6rB,cAAc13C,QAAQu5C,IACzB,IAAXtzB,IAOJ4F,EAAM6rB,cAAcnjC,OAAO0R,EAAO,GAClC4F,EAAM2tB,KAAK,gBAGbv6C,KAAKu4C,UAAY,SAAUiC,GACzB5tB,EAAM6tB,YAAY3nC,KAAK0nC,IAGzBx6C,KAAKu6C,KAAO,SAAU/B,GACpB5rB,EAAM6tB,YAAYl0C,SAAQ,SAAUm0C,GAClC,OAAOA,EAAWlC,EAElB5rB,EAAM6rB,cAAcz1C,aAIxBhD,KAAKy4C,cAAgB,GACrBz4C,KAAKy6C,YAAc,IAGjBL,EAAsB,IAAIC,EAmB9BnzC,EAAAA,QAAkBkzC,sCC3ElBh7C,OAAOk4B,eAAepwB,EAAS,aAAc,CAC3C3D,OAAO,IAET2D,EAAQ6oC,UAAY7oC,EAAQ0qC,aAAe1qC,EAAQyqC,wBAAqBhsB,EAExE,IAIgCnD,EAJ5Bm4B,EAAS/L,EAAQ,OAMrB,IAAIgM,IAF4Bp4B,EAFKm4B,IAEgBn4B,EAAI+sB,WAAa/sB,EAAM,CAAEitB,QAASjtB,IAEtEitB,QAEboL,EAAkBD,EAAG7K,UAAYjuC,OAAOg5C,YAAc,GAEjC5zC,EAAQyqC,mBAAqBiJ,EAAG7K,UAAYjuC,OAAOg2C,eAAiB,GAE1E5wC,EAAQ0qC,aAAegJ,EAAG7K,UAAYjuC,OAAOi2C,SAAW,GAE3D7wC,EAAQ6oC,UAAY6K,EAAG7K,UAEvC7oC,EAAAA,QAAkB2zC,sCCrBlBz7C,OAAOk4B,eAAepwB,EAAS,aAAc,CAC3C3D,OAAO,IAET2D,EAAAA,QAcA,SAAkBlC,EAAMu+B,GACtB,IAAIwX,GAAW,EAAIb,EAAWzK,SAASzqC,GAEvC,IAAK+1C,EAASt7C,OAGZ,YADA8jC,EAAMQ,iBAIR,IAAIzkC,OAAS,EAET07C,EAAWzX,EAAMyX,SACjB7pB,EAAO4pB,EAAS,GAChBhrB,EAAOgrB,EAASA,EAASt7C,OAAS,GAClC21C,EAAgB6F,IAIpB,GAAIj2C,IAASowC,EAAe,CAC1B,IAAK4F,EAAU,OACf17C,EAASywB,EAGPA,IAASqlB,GAAkB4F,IAC7B17C,EAAS6xB,GAGPA,IAASikB,GAAiB4F,IAC5B17C,EAASywB,GAGX,GAAIzwB,EAGF,OAFAikC,EAAMQ,sBACNzkC,EAAOyoC,QAeT,IAAImT,EAAc,4BAA4BC,KAAKtwC,UAAUuwC,WAK7D,GAJqC,MAAfF,GAAyC,UAAlBA,EAAY,IAAoE,MAAlD,qBAAqBC,KAAKtwC,UAAUuwC,WAIzF,OAEtB,IAAI1sC,EAAIqsC,EAASh6C,QAAQq0C,GAErB1mC,GAAK,IACPA,GAAKssC,GAAY,EAAI,GAOvB,GAAsB,qBAJtB17C,EAASy7C,EAASrsC,IAQhB,OAHA60B,EAAMQ,sBACNzkC,EAAS07C,EAAWjrB,EAAOoB,GACpB4W,QAITxE,EAAMQ,iBAENzkC,EAAOyoC,SAtFT,IAIgCvlB,EAJ5By3B,EAAYrL,EAAQ,OAEpBsL,GAE4B13B,EAFQy3B,IAEaz3B,EAAI+sB,WAAa/sB,EAAM,CAAEitB,QAASjtB,GAEvF,SAASy4B,IACP,IAAInE,EAAKt3C,UAAUC,OAAS,QAAsBkmB,IAAjBnmB,UAAU,GAAmBA,UAAU,GAAKuC,SAE7E,OAAO+0C,EAAG1B,cAAciG,WAAaJ,EAAiBnE,EAAG1B,cAAciG,YAAcvE,EAAG1B,cA+E1FnuC,EAAOC,QAAUA,EAAO,0CC7FxB9H,OAAOk4B,eAAepwB,EAAS,aAAc,CAC3C3D,OAAO,IAET2D,EAAAA,QA8DA,SAASo0C,EAAwBz5C,GAC/B,IAAI05C,EAAc,GAAGv4C,MAAMlD,KAAK+B,EAAQ80C,iBAAiB,KAAM,GAAGvpC,QAAO,SAAUouC,EAAU1E,GAC3F,OAAO0E,EAASnoC,OAAQyjC,EAAGuE,WAAoBC,EAAwBxE,EAAGuE,YAAlC,CAACvE,MACxC,IACH,OAAOyE,EAAYl4B,OAAO03B,IArD5B,IAAIU,EAAe,6CAEnB,SAASC,EAAc75C,GACrB,IAAI85C,EAAW95C,EAAQ+5C,aAAe,GAAK/5C,EAAQg6C,cAAgB,EAGnE,GAAIF,IAAa95C,EAAQi6C,UAAW,OAAO,EAE3C,IAEE,IAAIp7C,EAAQoB,OAAOi6C,iBAAiBl6C,GACpC,OAAO85C,EAAkD,YAAvCj7C,EAAMs7C,iBAAiB,aAEzCn6C,EAAQo6C,aAAe,GAAKp6C,EAAQomC,cAAgB,EAAyC,QAArCvnC,EAAMs7C,iBAAiB,WAC/E,MAAOxqC,GAGP,OADA0G,QAAQw4B,KAAK,oCACN,GAmBX,SAASwL,EAAUr6C,EAASs6C,GAC1B,IAAI/hC,EAAWvY,EAAQuY,SAASq/B,cAEhC,OADUgC,EAAar4C,KAAKgX,KAAcvY,EAAQwrC,UAA0B,MAAbjzB,GAAmBvY,EAAQ6Y,MAA2ByhC,IAjBvH,SAAiBt6C,GAGf,IAFA,IAAIk3C,EAAgBl3C,EAChBu6C,EAAWv6C,EAAQw6C,aAAex6C,EAAQw6C,cACvCtD,GACDA,IAAkBh3C,SAASoE,MADX,CAMpB,GAFIi2C,GAAYrD,IAAkBqD,IAAUrD,EAAgBqD,EAASE,KAAK/hC,YAEtEmhC,EAAc3C,GAAgB,OAAO,EACzCA,EAAgBA,EAAcx+B,WAEhC,OAAO,EAMOgiC,CAAQ16C,GAGxB,SAASk5C,EAASl5C,GAChB,IAAIgrC,EAAWhrC,EAAQ26C,aAAa,YACnB,OAAb3P,IAAmBA,OAAWlnB,GAClC,IAAI82B,EAAgBlhC,MAAMsxB,GAC1B,OAAQ4P,GAAiB5P,GAAY,IAAMqP,EAAUr6C,GAAU46C,GASjEx1C,EAAOC,QAAUA,EAAO,4CCvExB9H,OAAOk4B,eAAepwB,EAAS,aAAc,CAC3C3D,OAAO,IAGT,IAIgCif,EAJ5Bk6B,EAAS9N,EAAQ,IAEjB+N,GAE4Bn6B,EAFKk6B,IAEgBl6B,EAAI+sB,WAAa/sB,EAAM,CAAEitB,QAASjtB,GAEvFtb,EAAAA,QAAkBy1C,EAAQlN,QAC1BxoC,EAAOC,QAAUA,EAAO,qICZxB,EAAgF,8DCI1E01C,EAAc,SAAC,GAA4C,IAA1Ct4C,EAAyC,EAAzCA,SAAUk/B,EAA+B,EAA/BA,UAAcqZ,GAAiB,YACxDtH,EAAa,CAACuH,EAAoBtZ,GAExC,OACE,+BAAKA,UAAW+R,EAAW/6B,KAAK,MAAUqiC,GACvCv4C,IAKPs4C,EAAYrpB,UAAY,CACtBjvB,SAAUwE,IAAAA,KAAAA,WACV06B,UAAW16B,IAAAA,QAGb8zC,EAAYtpB,aAAe,CACzBkQ,UAAW,MAGb,0FCtBauZ,EACD,IADCA,EAGD,IAHCA,EAKD,IALCA,EAOD,KAPCA,EASD,KAGCC,EAAa,CACxBC,SADwB,WAEtB,OAAOn7C,OAAOk7C,WAAP,eAAiCD,EAAjC,OAA4DG,SAGrEC,SALwB,WAMtB,OAAOr7C,OAAOk7C,WAAP,eAAiCD,EAAjC,OAA4DG,SAGrEE,SATwB,WAUtB,OAAOt7C,OAAOk7C,WAAP,eAAiCD,EAAjC,OAA4DG,SAGrEG,SAbwB,WActB,OAAOv7C,OAAOk7C,WAAP,eAAiCD,EAAjC,OAA4DG,SAGrEI,SAjBwB,WAkBtB,OAAOx7C,OAAOk7C,WAAP,eAAiCD,EAAjC,OAA4DG,6UC7B5DK,EAAc,kBAIdC,EAAiB,2BCSrB,SAASC,EAAa54C,EAAM64C,GAC/B,OCF2BC,EDELD,GAAgB,KCFGlD,EDEG,SAAUoD,GAAY,OAAO/4C,EAAK0B,SAAQ,SAAUlG,GAAO,OEJpG,SAAmBA,EAAKkD,GAO3B,MANmB,oBAARlD,EACPA,EAAIkD,GAEClD,IACLA,EAAIwD,QAAUN,GAEXlD,EFHuGsD,CAAUtD,EAAKu9C,QCDzHv9C,GAAM,IAAAw9C,WAAS,WAAc,MAAO,CAEpCt6C,MAAOo6C,EAEPnD,SAAUA,EAEVsD,OAAQ,CACAj6C,cACA,OAAOxD,EAAIkD,OAEXM,YAAQN,GACR,IAAIw6C,EAAO19C,EAAIkD,MACXw6C,IAASx6C,IACTlD,EAAIkD,MAAQA,EACZlD,EAAIm6C,SAASj3C,EAAOw6C,UAI7B,IAEHvD,SAAWA,EACRn6C,EAAIy9C,OAtBR,IAAwBH,EAAcnD,EACrCn6C,EEdD,IAAI29C,EAAc,CACvBv8C,MAAO,MACPL,OAAQ,MACRG,QAAS,EACTD,SAAU,SACVE,SAAU,QACV84B,IAAK,MACL8H,KAAM,OAGJ6b,EAAe,SAAsB79C,GACvC,IAAIkE,EAAWlE,EAAKkE,SACpB,OAAoB,gBAAoB,WAAgB,KAAmB,gBAAoB,MAAO,CACpG3E,IAAK,cACL,oBAAoB,EACpB,yBAAyB,EACzBe,MAAOs9C,IACL15C,EAAUA,GAAyB,gBAAoB,MAAO,CAChE3E,IAAK,aACL,oBAAoB,EACpB,yBAAyB,EACzBe,MAAOs9C,MAIXC,EAAa1qB,UAET,GACJ0qB,EAAa3qB,aAAe,CAC1BhvB,SAAU,MAEZ,eChCA,SAAS45C,EAAK30C,GACV,OAAOA,EAEX,SAAS40C,EAAkB9lC,EAAU+lC,QACd,IAAfA,IAAyBA,EAAaF,GAC1C,IAAIr0C,EAAS,GACTw0C,GAAW,EA0Df,MAzDa,CACTC,KAAM,WACF,GAAID,EACA,MAAM,IAAIt6C,MAAM,oGAEpB,OAAI8F,EAAOpK,OACAoK,EAAOA,EAAOpK,OAAS,GAE3B4Y,GAEXkmC,UAAW,SAAU9oC,GACjB,IAAIqL,EAAOs9B,EAAW3oC,EAAM4oC,GAE5B,OADAx0C,EAAOiJ,KAAKgO,GACL,WACHjX,EAASA,EAAOwZ,QAAO,SAAU3U,GAAK,OAAOA,IAAMoS,OAG3D09B,iBAAkB,SAAUC,GAExB,IADAJ,GAAW,EACJx0C,EAAOpK,QAAQ,CAClB,IAAIi/C,EAAM70C,EACVA,EAAS,GACT60C,EAAIn4C,QAAQk4C,GAEhB50C,EAAS,CACLiJ,KAAM,SAAUpE,GAAK,OAAO+vC,EAAG/vC,IAC/B2U,OAAQ,WAAc,OAAOxZ,KAGrC80C,aAAc,SAAUF,GACpBJ,GAAW,EACX,IAAIO,EAAe,GACnB,GAAI/0C,EAAOpK,OAAQ,CACf,IAAIi/C,EAAM70C,EACVA,EAAS,GACT60C,EAAIn4C,QAAQk4C,GACZG,EAAe/0C,EAEnB,IAAIg1C,EAAe,WACf,IAAIH,EAAME,EACVA,EAAe,GACfF,EAAIn4C,QAAQk4C,IAEZK,EAAQ,WAAc,OAAOlzB,QAAQC,UAAUK,KAAK2yB,IACxDC,IACAj1C,EAAS,CACLiJ,KAAM,SAAUpE,GACZkwC,EAAa9rC,KAAKpE,GAClBowC,KAEJz7B,OAAQ,SAAUA,GAEd,OADAu7B,EAAeA,EAAav7B,OAAOA,GAC5BxZ,MAOpB,SAASk1C,EAAa1mC,EAAU+lC,GAEnC,YADmB,IAAfA,IAAyBA,EAAaF,GACnCC,EAAkB9lC,EAAU+lC,GAGhC,SAASY,EAAoBnkC,QAChB,IAAZA,IAAsBA,EAAU,IACpC,IAAIokC,EAASd,EAAkB,MAE/B,OADAc,EAAOpkC,SAAU,QAAS,CAAEqkC,OAAO,EAAMC,KAAK,GAAStkC,GAChDokC,EC3EJ,IAAIG,EAAcL,EAAa,IAAI,SAAU3+C,GAGlD,MAAO,CACLd,OAHWc,EAAKd,OAIhB+/C,cAHkBj/C,EAAKi/C,kBAMhBC,EAAaP,IACbQ,EAAeR,IACfS,EAAgBR,EAAoB,CAC7CE,OAAO,ICJLO,EAAa,GACbC,EAAyB,cAAiB,SAAqB/+C,EAAOg/C,GACxE,IAAIC,EAEAC,EAAkB,aAClBC,EAAeD,EAAgB,GAC/BE,EAAcF,EAAgB,GAE9BG,EAAW,WACXC,EAAW,UAAa,GACxBC,EAAyB,SAAa,MACtC57C,EAAW3D,EAAM2D,SACjB+oC,EAAW1sC,EAAM0sC,SACjB8S,EAAgBx/C,EAAMw/C,cACtBC,EAAkBz/C,EAAMy/C,gBACxBC,EAAa1/C,EAAM0/C,WACnBC,EAAY3/C,EAAM2/C,UAElBC,GADqB5/C,EAAM6/C,mBACnB7/C,EAAM4/C,OACd/c,EAAY7iC,EAAM6iC,UAClBid,EAAY9/C,EAAM8/C,UAClBC,EAAqB//C,EAAM+/C,mBAC3BC,EAAgBhgD,EAAMigD,OACtBA,OAA2B,IAAlBD,EAA2BlB,EAAakB,EACjDE,EAAYlgD,EAAMJ,GAClBugD,OAA0B,IAAdD,EAAuB,MAAQA,EAC3CE,EAAmBpgD,EAAMqgD,UACzBC,OAAsC,IAArBF,EAA8B,GAAKA,EACpDG,EAAUvgD,EAAMwgD,QAChBC,EAAoBzgD,EAAM+yC,YAC1B2N,EAAe1gD,EAAM0gD,aACrBC,EAAuB3gD,EAAM4gD,aAC7BC,EAAyB7gD,EAAM8gD,eAG/Bn3B,EADmB,WAAe,IACZ,GAGtBi3B,EAAe,eAAkB,WACnCrB,EAAuBr8C,QAAUq8C,EAAuBr8C,SAAW9B,UAAYA,SAASqzC,cAEpF4K,EAASn8C,SAAWy9C,GACtBA,EAAqBtB,EAASn8C,SAGhCo8C,EAASp8C,SAAU,IAClB,CAACy9C,IACAG,EAAiB,eAAkB,WACrCxB,EAASp8C,SAAU,EAEf29C,GACFA,EAAuBxB,EAASn8C,WAEjC,CAAC29C,KACJ,IAAAj8C,YAAU,WACH8nC,IAGH6S,EAAuBr8C,QAAU,QAElC,IACH,IAAI6vC,EAAc,eAAkB,SAAUgO,GAC5C,IAAIC,EAAgBzB,EAAuBr8C,QAE3C,GAAI89C,GAAiBA,EAAc5Z,MAAO,CACxC,IAAI6Z,EAAgD,oBAAtBR,EAAmCA,EAAkBO,GAAiBP,EAEpG,GAAIQ,EAAkB,CACpB,IAAIC,EAAiD,kBAArBD,EAAgCA,OAAmBj8B,EACnFu6B,EAAuBr8C,QAAU,KAE7B69C,EAGF91B,QAAQC,UAAUK,MAAK,WACrB,OAAOy1B,EAAc5Z,MAAM8Z,MAG7BF,EAAc5Z,MAAM8Z,OAIzB,CAACT,IAEAU,EAAU,eAAkB,SAAUve,GACpC0c,EAASp8C,SACXu7C,EAAYb,UAAUhb,KAEvB,IACCwe,EAASzC,EAAWf,UAGpByD,EAAiB,eAAkB,SAAUC,GAC3CjC,EAASn8C,UAAYo+C,IACvBjC,EAASn8C,QAAUo+C,EACnBlC,EAAYkC,MAEb,IAgBH,IAAIjB,GAAY,SAAUpB,EAAY,IAAc,GAA4BvS,GAAY,WAAYuS,EAAU,GAAyBW,EAAOX,GAAYqB,GAE1JiB,GAAqC,IAAlB/B,EACnBgC,EAAmBD,GAAsC,SAAlB/B,EACvCiC,EAAY3E,EAAa,CAACkC,EAAWqC,IACzC,OAAoB,gBAAoB,WAAgB,KAAME,GAAoB,CAGlF,gBAAoB,MAAO,CACzBviD,IAAK,cACL,oBAAoB,EACpBktC,SAAUQ,GAAY,EAAI,EAC1B3sC,MAAOs9C,IAET0C,EAAkC,gBAAoB,MAAO,CAC3D/gD,IAAK,gBACL,oBAAoB,EACpBktC,SAAUQ,GAAY,EAAI,EAC1B3sC,MAAOs9C,IACJ,OAAQ3Q,GAAyB,gBAAoB6T,EAAS,CACjE52B,GAAIA,EACJ62B,QAAS3B,EACTQ,SAAUF,EACVzS,SAAUA,EACV+S,gBAAiBA,EACjBC,WAAYA,EACZC,UAAWA,EACXG,UAAWA,EACXG,OAAQA,EACRW,aAAcA,EACdE,eAAgBA,EAChB/N,YAAaA,EACb2N,aAAcA,IACC,gBAAoBP,GAAW,OAAS,CACvDzgD,IAAK+hD,GACJpB,EAAW,CACZxd,UAAWA,EACXue,OAAQA,EACRD,QAASA,IACPx9C,GAAW69C,GAAiC,gBAAoB,MAAO,CACzE,oBAAoB,EACpBtV,SAAUQ,GAAY,EAAI,EAC1B3sC,MAAOs9C,QAGX0B,EAAUnsB,UAoBN,GACJmsB,EAAUpsB,aAAe,CACvBhvB,cAAUqhB,EACV0nB,UAAU,EACVqG,aAAa,EACb2N,kBAAc17B,EACdw6B,eAAe,EACfG,WAAW,EACXF,iBAAiB,EACjBC,YAAY,EACZK,wBAAoB/6B,EACpB66B,wBAAoB76B,EACpB46B,WAAO56B,EACP6d,eAAW7d,EACX86B,eAAW96B,EACXi7B,YAAQj7B,EACRplB,GAAI,MACJygD,UAAW,GACXO,kBAAc57B,EACd87B,oBAAgB97B,GAElB,6BCjIA,MA1EA,SAAwB08B,EAAoBC,GAe1C,OAAO,SAAcC,GAOnB,IACIrgC,EADAsgC,EAAmB,GAGvB,SAASC,IACPvgC,EAAQmgC,EAAmBG,EAAiB77C,KAAI,SAAUu0B,GACxD,OAAOA,EAASv6B,UAElB2hD,EAA0BpgC,GAG5B,IAAIwgC,EAA0B,SAAUC,GAGtC,SAASD,IACP,OAAOC,EAAe5iD,MAAMC,KAAMR,YAAcQ,MAHlD,OAAe0iD,EAAYC,GAO3BD,EAAWlxB,KAAO,WAChB,OAAOtP,GAGT,IAAI0gC,EAASF,EAAW9iD,UAqBxB,OAnBAgjD,EAAOC,kBAAoB,WACzBL,EAAiB1vC,KAAK9S,MACtByiD,KAGFG,EAAOE,mBAAqB,WAC1BL,KAGFG,EAAOG,qBAAuB,WAC5B,IAAI/7B,EAAQw7B,EAAiBzhD,QAAQf,MACrCwiD,EAAiBltC,OAAO0R,EAAO,GAC/By7B,KAGFG,EAAOn8C,OAAS,WACd,OAAoB,gBAAoB87C,EAAkBviD,KAAKW,QAG1D+hD,EAjCqB,CAkC5B,EAAAM,eAIF,OAFA,OAAgBN,EAAY,cAAe,cAzD7C,SAAwBH,GACtB,OAAOA,EAAiBU,aAAeV,EAAiBr/C,MAAQ,YAwDLggD,CAAeX,GAAoB,KAEvFG,IC7DPS,EAAgB,SAAUn+C,GAE1B,OAAOA,EAAKuV,YAAcvV,EAAKuV,WAAW6oC,WAAavhC,KAAKwhC,uBAEpDr+C,EAAKuV,WAAW+hC,KAClBt3C,EAAKuV,YAEX+oC,EAAY,SAAUt+C,GAEtB,OAAOA,IAASjD,UAAaiD,GAAQA,EAAKo+C,WAAavhC,KAAK0hC,eAE5DC,EAAoB,SAAUx+C,EAAMy+C,GACpC,OAAQz+C,GAAQs+C,EAAUt+C,KAxBR,SAAUA,GAG5B,GAAIA,EAAKo+C,WAAavhC,KAAK6hC,aACvB,OAAO,EAEX,IAAIC,EAAgB7hD,OAAOi6C,iBAAiB/2C,EAAM,MAClD,SAAK2+C,IAAkBA,EAAc3H,oBAGiB,SAA9C2H,EAAc3H,iBAAiB,YAA0E,WAAjD2H,EAAc3H,iBAAiB,eAc1D4H,CAAgB5+C,IAASy+C,EAAYN,EAAcn+C,KAEjF6+C,EAAkB,SAAUC,EAAiB9+C,GACpD,IAAI++C,EAASD,EAAgBl2B,IAAI5oB,GACjC,QAAe2gB,IAAXo+B,EACA,OAAOA,EAEX,IAAIplC,EAAS6kC,EAAkBx+C,EAAM6+C,EAAgBngD,UAAKiiB,EAAWm+B,IAErE,OADAA,EAAgB/5C,IAAI/E,EAAM2Z,GACnBA,GAKAqlC,EAA2B,SAAU32B,EAAOroB,GACnD,IAAI++C,EAAS12B,EAAMO,IAAI5oB,GACvB,QAAe2gB,IAAXo+B,EACA,OAAOA,EAEX,IAAIplC,EARyB,SAAU3Z,EAAMy+C,GAC7C,QAAOz+C,IAASs+C,EAAUt+C,OAASi/C,EAAmBj/C,IAAQy+C,EAAYN,EAAcn+C,IAO3Ek/C,CAA2Bl/C,EAAMg/C,EAAyBtgD,UAAKiiB,EAAW0H,IAEvF,OADAA,EAAMtjB,IAAI/E,EAAM2Z,GACTA,GAEAwlC,EAAa,SAAUn/C,GAE9B,OAAOA,EAAKo/C,SAGLC,EAAqB,SAAUr/C,GAAQ,MAAwB,UAAjBA,EAAKqV,SACnDiqC,EAAiB,SAAUt/C,GAClC,OAAOq/C,EAAmBr/C,IAAuB,UAAdA,EAAKR,MAKjCy/C,EAAqB,SAAUj/C,GACtC,IAAIu/C,EAAYv/C,EAAKw3C,aTxCO,qBSyC5B,OAAQ,EAAC,EAAM,OAAQ,IAAIgI,SAASD,IAE7BE,EAAU,SAAUz/C,GAAQ,IAAI6nB,EAAI,OAAO8L,QAAQ3zB,IAAqC,QAA3B6nB,EAAKs3B,EAAWn/C,UAA0B,IAAP6nB,OAAgB,EAASA,EAAG63B,cAC5HC,EAAc,SAAU3/C,GAAQ,OAAQy/C,EAAQz/C,IAChD4/C,EAAY,SAAUl2C,GAAK,OAAOiqB,QAAQjqB,IC3D1Cm2C,EAAc,SAAU7/C,EAAM8/C,GACrC,OAAIR,EAAet/C,IAASA,EAAK9B,KAPb,SAAU8B,EAAM8/C,GACpC,OAAOA,EACFzhC,OAAOihC,GACPjhC,QAAO,SAAUyzB,GAAM,OAAOA,EAAG5zC,OAAS8B,EAAK9B,QAC/CmgB,QAAO,SAAUyzB,GAAM,OAAOA,EAAGiO,WAAY,IAAM//C,EAI7CggD,CAAkBhgD,EAAM8/C,GAE5B9/C,GCVAigD,EAAiB,SAAUH,GAClC,OAAIA,EAAM,IAAMA,EAAMrlD,OAAS,EACpBolD,EAAYC,EAAM,GAAIA,GAE1BA,EAAM,IAENI,EAAgB,SAAUJ,EAAO99B,GACxC,OAAI89B,EAAMrlD,OAAS,EACRqlD,EAAM/jD,QAAQ8jD,EAAYC,EAAM99B,GAAQ89B,IAE5C99B,GCRAm+B,EAAY,YASZC,EAAW,SAAUC,EAAYC,EAAYlQ,EAAemQ,GACnE,IAAIC,EAAMH,EAAW5lD,OACjBgmD,EAAaJ,EAAW,GACxBK,EAAYL,EAAWG,EAAM,GAC7BG,EAAYlB,EAAQrP,GAExB,KAAIA,GAAiBiQ,EAAWtkD,QAAQq0C,IAAkB,GAA1D,CAGA,IFJgC0P,EAE5Bc,EEEAC,OAAgClgC,IAAlByvB,EAA8BkQ,EAAWvkD,QAAQq0C,IAAkB,EACjF0Q,EAAYP,EAAWD,EAAWvkD,QAAQwkD,GAAYM,EACtDE,EAAiBR,EAAWF,EAAWtkD,QAAQwkD,IAAa,EAC5DS,EAAYH,EAAcC,EAC1BG,EAAiBX,EAAWvkD,QAAQ0kD,GACpCS,EAAgBZ,EAAWvkD,QAAQ2kD,GACnCS,GFV4BrB,EEUEQ,EFR9BM,EAAY,IAAIQ,IACpBtB,EAAMv+C,SAAQ,SAAUvB,GAAQ,OAAO4gD,EAAU/P,IAAIgP,EAAY7/C,EAAM8/C,OAEhEA,EAAMzhC,QAAO,SAAUre,GAAQ,OAAO4gD,EAAUr0B,IAAIvsB,OEOvDqhD,QADmC1gC,IAAlByvB,EAA8B+Q,EAAeplD,QAAQq0C,IAAkB,IACjDmQ,EAAWY,EAAeplD,QAAQwkD,GAAYM,GACrFS,EAAkBpB,EAAcG,EAAY,GAC5CkB,EAAiBrB,EAAcG,EAAYG,EAAM,GAErD,OAAqB,IAAjBK,IAA0C,IAApBE,EACfZ,GAGNa,GAAaD,GAAkB,EACzBA,EAGPF,GAAeI,GAAkBN,GAAax6C,KAAKuC,IAAIs4C,GAAa,EAC7DO,EAGPV,GAAeK,GAAiBP,GAAax6C,KAAKuC,IAAIs4C,GAAa,EAC5DM,EAGPN,GAAa76C,KAAKuC,IAAI24C,GAAsB,EACrCN,EAGPF,GAAeI,EACRM,EAGPV,EAAcK,EACPI,EAGPN,EACI76C,KAAKuC,IAAIs4C,GAAa,EACfD,GAEHP,EAAMO,EAAiBC,GAAaR,OAJhD,IC1DOt6B,EAAU,SAAU3hB,GAE3B,IADA,IAAImpB,EAAMrwB,MAAMkH,EAAE9J,QACTF,EAAI,EAAGA,EAAIgK,EAAE9J,SAAUF,EAC5BmzB,EAAInzB,GAAKgK,EAAEhK,GAEf,OAAOmzB,GAEA8zB,EAAU,SAAUj9C,GAAK,OAAQlH,MAAMO,QAAQ2G,GAAKA,EAAI,CAACA,ICTzDk9C,EAAU,SAAUl9C,EAAGe,GAC9B,IAAIo8C,EAAUn9C,EAAEsjC,SAAWviC,EAAEuiC,SACzBmZ,EAAYz8C,EAAEyd,MAAQ1c,EAAE0c,MAC5B,GAAI0/B,EAAS,CACT,IAAKn9C,EAAEsjC,SACH,OAAO,EAEX,IAAKviC,EAAEuiC,SACH,OAAQ,EAGhB,OAAO6Z,GAAWV,GAEXW,EAAkB,SAAU7B,EAAO8B,EAAgBC,GAC1D,OAAO37B,EAAQ45B,GACVn+C,KAAI,SAAU3B,EAAMgiB,GAAS,MAAO,CACrChiB,KAAMA,EACNgiB,MAAOA,EACP6lB,SAAUga,IAAiC,IAAnB7hD,EAAK6nC,UAAoB7nC,EAAKo/C,SAAW,IAAIM,WAAa,GAAK,EAAK1/C,EAAK6nC,aAEhGxpB,QAAO,SAAU5N,GAAQ,OAAQmxC,GAAkBnxC,EAAKo3B,UAAY,KACpE1e,KAAKs4B,ICnBVK,ECAmB,CACnB,iBACA,iBACA,mBACA,gBAGA,UACA,aACA,UACA,SACA,SACA,QACA,kBACA,kBACA,aACA,oBACA,eDjB2BtsC,KAAK,KAChCusC,EAAsB,GAAG1zC,OAAOyzC,EAAgB,wBAChDE,EAA6B,SAAU/kC,EAAQglC,GAC/C,IAAIp6B,EACJ,OAAO3B,GAAsC,QAA5B2B,EAAK5K,EAAOo5B,kBAA+B,IAAPxuB,OAAgB,EAASA,EAAGvoB,WAAa2d,EAAO3d,UAAU8I,QAAO,SAAUklB,EAAKltB,GACjI,OAAOktB,EAAIjf,OAAOjO,EAAM83C,QAAQ+J,EAAaF,EAAsBD,GAAkB,CAAC1hD,GAAS,GAAI4hD,EAA2B5hD,MAC/H,KAEI8hD,GAAgB,SAAUC,EAASF,GAC1C,OAAOE,EAAQ/5C,QAAO,SAAUklB,EAAKrQ,GACjC,OAAOqQ,EAAIjf,OAEX2zC,EAA2B/kC,EAAQglC,GAEnChlC,EAAO1H,WACD2Q,EAAQjJ,EAAO1H,WAAWo8B,iBAAiBmQ,IAAiBzjC,QAAO,SAAUre,GAAQ,OAAOA,IAASid,KACrG,MACP,KEXImlC,GAAkB,SAAUtC,EAAOhB,GAC1C,OAAO54B,EAAQ45B,GACVzhC,QAAO,SAAUre,GAAQ,OAAO6+C,EAAgBC,EAAiB9+C,MACjEqe,QAAO,SAAUre,GAAQ,OR6CN,SAAUA,GAClC,SAAUq/C,EAAmBr/C,IANA,SAAUA,GAAQ,MAAwB,WAAjBA,EAAKqV,QAMrBgtC,CAAoBriD,MAAyB,WAAdA,EAAKR,MAAqBQ,EAAKqoC,WQ9C/Dia,CAAetiD,OAE7CuiD,GAAsB,SAAUzC,EAAOz3B,GAE9C,YADc,IAAVA,IAAoBA,EAAQ,IAAI+D,KAC7BlG,EAAQ45B,GAAOzhC,QAAO,SAAUre,GAAQ,OAAOg/C,EAAyB32B,EAAOroB,OAM/EwiD,GAAmB,SAAUC,EAAU3D,EAAiBmD,GAC/D,OAAON,EAAgBS,GAAgBF,GAAcO,EAAUR,GAAanD,IAAkB,EAAMmD,IAM7FS,GAAsB,SAAUD,EAAU3D,GACjD,OAAO6C,EAAgBS,GAAgBF,GAAcO,GAAW3D,IAAkB,IAO3E6D,GAAuB,SAAUC,EAAS9D,GACjD,OAAOsD,IFXHS,EEW2CD,EFXtBjR,iBAAiB,IAAItjC,OfX1B,wBeW6C,MAC1D6X,EAAQ28B,GACVlhD,KAAI,SAAU3B,GAAQ,OAAOkiD,GAAc,CAACliD,OAC5CoI,QAAO,SAAUklB,EAAKwyB,GAAS,OAAOxyB,EAAIjf,OAAOyxC,KAAW,KEQRhB,GFZxB,IAC7B+D,GEgBGhlC,GAAW,SAAUilC,EAAOjmD,GACnC,OAASimD,EAAMzM,WACTx4B,GAASilC,EAAMzM,WAAYx5C,GAC3BzC,OAAO04B,eAAegwB,GAAOjlC,SAAS/iB,KAAKgoD,EAAOjmD,KACpDqpB,EAAQ48B,EAAMxjD,UAAUihB,MAAK,SAAUngB,GAAS,OAAOyd,GAASzd,EAAOvD,OCf3EkmD,GAAe,SAAU/iD,GACzB,OAAOA,EAAKuV,WAAawtC,GAAa/iD,EAAKuV,YAAcvV,GAOlDgjD,GAAsB,SAAUhjD,GAEvC,OADYwhD,EAAQxhD,GACPqe,OAAOsV,SAASvrB,QAAO,SAAUklB,EAAK21B,GAC/C,IAAI1H,EAAQ0H,EAAYzL,aAAae,GAIrC,OAHAjrB,EAAIxf,KAAK/S,MAAMuyB,EAAMiuB,EAnCV,SAAUuE,GAGzB,IAFA,IAAIoD,EAAY,IAAI9B,IAChBn8C,EAAI66C,EAAMrlD,OACLF,EAAI,EAAGA,EAAI0K,EAAG1K,GAAK,EACxB,IAAK,IAAIkK,EAAIlK,EAAI,EAAGkK,EAAIQ,EAAGR,GAAK,EAAG,CAC/B,IAAIjI,EAAWsjD,EAAMvlD,GAAG4oD,wBAAwBrD,EAAMr7C,KAEjDjI,EAAWqgB,KAAKumC,gCAAkC,GACnDF,EAAUrS,IAAIpsC,IAEbjI,EAAWqgB,KAAKwmC,4BAA8B,GAC/CH,EAAUrS,IAAIt2C,GAK1B,OAAOulD,EAAMzhC,QAAO,SAAU+I,EAAGpF,GAAS,OAAQkhC,EAAU32B,IAAIvK,MAoBtDshC,CAAap9B,EAAQ68B,GAAaE,GAAatR,iBAAiB,IAAItjC,OAAOkqC,EAAa,MAAOlqC,OAAOktC,EAAO,YAAaltC,OAAOmqC,EAAgB,oBACjJ,CAACyK,IACA31B,IACR,KChDHi2B,GAA+B,SAAUlN,GACzC,OAAOA,EAAWjG,cACZiG,EAAWjG,cAAciG,WACrBkN,GAA6BlN,EAAWjG,cAAciG,YACtDA,EAAWjG,mBACfzvB,GAKCs1B,GAAmB,WAC1B,OAAQl5C,SAASqzC,cACXrzC,SAASqzC,cAAciG,WACnBkN,GAA6BxmD,SAASqzC,cAAciG,YACpDt5C,SAASqzC,mBACbzvB,GCZN6iC,GAAa,SAAUxjD,EAAMmiD,GAM7B,YALgB,IAAZA,IAAsBA,EAAU,IACpCA,EAAQr0C,KAAK9N,GACTA,EAAKuV,YACLiuC,GAAWxjD,EAAKuV,WAAW+hC,MAAQt3C,EAAKuV,WAAY4sC,GAEjDA,GAQAsB,GAAkB,SAAUC,EAAOC,GAI1C,IAHA,IAAIC,EAAWJ,GAAWE,GACtBG,EAAWL,GAAWG,GAEjBppD,EAAI,EAAGA,EAAIqpD,EAASnpD,OAAQF,GAAK,EAAG,CACzC,IAAIupD,EAAgBF,EAASrpD,GAC7B,GAAIspD,EAAS9nD,QAAQ+nD,IAAkB,EACnC,OAAOA,EAGf,OAAO,GAEAC,GAAqB,SAAUC,EAAmBC,EAAWC,GACpE,IAAIC,EAAiB3C,EAAQwC,GACzBI,EAAc5C,EAAQyC,GACtB7T,EAAgB+T,EAAe,GAC/BE,GAAY,EAgBhB,OAfAD,EAAY/lC,OAAOsV,SAASpyB,SAAQ,SAAU+iD,GAC1CD,EAAYZ,GAAgBY,GAAaC,EAAOA,IAAUD,EAC1DH,EAAa7lC,OAAOsV,SAASpyB,SAAQ,SAAUgjD,GAC3C,IAAIC,EAASf,GAAgBrT,EAAemU,GACxCC,IAEIH,GADCA,GAAaxmC,GAAS2mC,EAAQH,GACnBG,EAGAf,GAAgBe,EAAQH,UAM7CA,GCzBAI,GAAgB,SAAU7B,EAASrC,GAC1C,IAAInQ,EAAgBrzC,UAAYk5C,KAC5ByO,EAAU1B,GAAoBJ,GAASvkC,OAAOshC,GAC9CgF,EAAeZ,GAAmB3T,GAAiBwS,EAASA,EAAS8B,GACrE5F,EAAkB,IAAI1yB,IACtBw4B,EAAelC,GAAoBgC,EAAS5F,GAC5C+F,EAAgBrC,GAAiBkC,EAAS5F,GAAiBzgC,QAAO,SAAUwJ,GAC5E,IAAI7nB,EAAO6nB,EAAG7nB,KACd,OAAO2/C,EAAY3/C,MAEvB,GAAK6kD,EAAc,KACfA,EAAgBD,GACG,GAFvB,CAMA,IA5ByBE,EAAUC,EAC/BC,EANwBC,EAiCxB3E,EAAaoC,GAAoB,CAACiC,GAAe7F,GAAiBn9C,KAAI,SAAUkmB,GAEhF,OADWA,EAAG7nB,QAGdklD,GAhCqBJ,EAgCexE,EAhCLyE,EAgCiBF,EA/BhDG,EAAQ,IAAI54B,IAEhB24B,EAASxjD,SAAQ,SAAU2Z,GAAU,OAAO8pC,EAAMjgD,IAAImW,EAAOlb,KAAMkb,MAE5D4pC,EAASnjD,KAAI,SAAU3B,GAAQ,OAAOglD,EAAMp8B,IAAI5oB,MAAUqe,OAAOuhC,IA4BpES,EAAa6E,EAAqBvjD,KAAI,SAAUkmB,GAEhD,OADWA,EAAG7nB,QAGdmlD,EAAQ/E,EAASC,EAAYC,EAAYlQ,EAAemQ,GAC5D,GAAI4E,IAAUhF,EAAW,CACrB,IAAIiF,EAAgB7C,GAAoBqC,EAAajjD,KAAI,SAAUkmB,GAE/D,OADWA,EAAG7nB,SAEdqe,QA/CoB4mC,EDiDK,SAAUP,EAAS5F,GACpD,OAAO4F,EAAQt8C,QAAO,SAAUklB,EAAKttB,GAAQ,OAAOstB,EAAIjf,OAAOs0C,GAAqB3iD,EAAM8+C,MAAsB,ICHjFuG,CAAwBX,EAAS5F,GA9CzD,SAAU9+C,GAAQ,IAAI6nB,EAE7B,OAAO7nB,EAAKslD,cAA4C,QAA3Bz9B,EAAKs3B,EAAWn/C,UAA0B,IAAP6nB,OAAgB,EAASA,EAAGy9B,YAAcL,EAAelpD,QAAQiE,IAAS,KA6CtI,MAAO,CACHA,KAAMolD,GAAiBA,EAAc3qD,OAC/BwlD,EAAemF,GACfnF,EAAesC,GAAoBlC,KAGjD,YAAc1/B,IAAVwkC,EACOA,EAEJD,EAAqBC,KCvD5BI,GAAa,EACbC,IAAe,ECCnB,GDOsB,SAAU5C,EAASrC,EAAU1qC,QAC/B,IAAZA,IAAsBA,EAAU,IACpC,IAnB2Bvb,EAAQ+hD,EAmB/BnF,EAAYuN,GAAc7B,EAASrC,GACvC,IAAIiF,IAGAtO,EAAW,CACX,GAAIqO,GAAa,EAQb,OANAryC,QAAQpU,MAAM,qJAEd0mD,IAAe,OACflkD,YAAW,WACPkkD,IAAe,IAChB,GAGPD,KAlCuBjrD,EAmCf48C,EAAUl3C,KAnCaq8C,EAmCPxmC,EAAQwmC,aAlChC,UAAW/hD,GACXA,EAAOyoC,MAAMsZ,GAEb,kBAAmB/hD,GAAUA,EAAOmrD,eACpCnrD,EAAOmrD,cAAc1iB,QA+BrBwiB,OEhCJG,GAAoB,SAAU9C,GAC9B,OAAOjvB,QAAQzN,EAAQ08B,EAAQjR,iBAAiB,WAAWpxB,MAAK,SAAUvgB,GAAQ,OAAoBA,IAFnDjD,SAASqzC,mBAOrDuV,GAAc,SAAU/C,GAC/B,IAAIxS,EAAgBrzC,UAAYk5C,KAChC,SAAK7F,GAAkBA,EAAcgP,SAAWhP,EAAcgP,QAAQM,aAG/DsD,GAAoBJ,GAASriC,MAAK,SAAUvgB,GAAQ,OAAO6d,GAAS7d,EAAMowC,IAAkBsV,GAAkB1lD,OCR9G4lD,GAAkB,SAAUhD,GACnC,IAAI8B,EAAU1B,GAAoBJ,GAASvkC,OAAOshC,GAC9CgF,EAAeZ,GAAmBnB,EAASA,EAAS8B,GACpD5F,EAAkB,IAAI1yB,IACtBk0B,EAAakC,GAAiB,CAACmC,GAAe7F,GAAiB,GAC/D+F,EAAgBrC,GAAiBkC,EAAS5F,GACzCzgC,QAAO,SAAUwJ,GAClB,IAAI7nB,EAAO6nB,EAAG7nB,KACd,OAAO2/C,EAAY3/C,MAElB2B,KAAI,SAAUkmB,GAEf,OADWA,EAAG7nB,QAGlB,OAAOsgD,EAAW3+C,KAAI,SAAUkmB,GAC5B,IAAI7nB,EAAO6nB,EAAG7nB,KACd,MAAO,CACHA,KAAMA,EACNgiB,MAHwB6F,EAAG7F,MAI3B6jC,SAAUhB,EAAc9oD,QAAQiE,IAAS,EACzC8lD,MAAOrG,EAAQz/C,QC5BpB,SAAS+lD,GAAYC,GAE1B,IACIC,EADUnpD,OACampD,aAEC,qBAAjBA,EACTA,EAAaD,GAEb1kD,WAAW0kD,EAAQ,GAGhB,ICCHE,GAAc,WAChB,OAJOnpD,UAAYA,SAASqzC,gBAAkBrzC,SAASoE,SCCjDivC,EAAgBrzC,UAAYk5C,OAKzB/vB,EAAQnpB,SAAS40C,iBAAiB,IAAItjC,O5BJxB,qB4BI4C,OAAOkS,MAAK,SAAUvgB,GAAQ,OAAO6d,GAAS7d,EAAMowC,MAN9F,IACnBA,GDMJ+V,GAAiB,KACjBC,GAAkB,KAClBC,GAAsB,KACtBC,IAAwB,EAExBC,GAAmB,WACrB,OAAO,GAkBT,SAASC,GAAUC,EAAY3hC,EAAKkC,EAAM0/B,GACxC,IAAIC,EAAY,KACZpsD,EAAIksD,EAER,EAAG,CACD,IAAI3qC,EAAO4qC,EAASnsD,GAEpB,GAAIuhB,EAAKgqC,MACHhqC,EAAK9b,KAAKo/C,QAAQwH,iBACpBD,EAAY7qC,OAET,KAAIA,EAAK+pC,SAQd,MAPA,GAAItrD,IAAMksD,EAER,OAGFE,EAAY,aAINpsD,GAAKysB,KAAUlC,GAErB6hC,IACFA,EAAU3mD,KAAK6nC,SAAW,GAI9B,IAAIgf,GAAa,SAAoBxrD,GACnC,OAAOA,GAAO,YAAaA,EAAMA,EAAIwD,QAAUxD,GAa7CyrD,GAAc,SAASA,EAAYzT,EAAOvB,EAAIiV,GAChD,OAAOjV,IACPA,EAAGwF,OAASjE,KAAWvB,EAAG1B,eAAiB2W,EAASlpC,SAASi0B,EAAG1B,iBAC7D0B,EAAGv8B,YAAcuxC,EAAYzT,EAAOvB,EAAGv8B,WAAYwxC,KASpDC,GAAe,WACjB,IA3DqDnqD,EA2DjD8c,GAAS,EAEb,GAAIwsC,GAAgB,CAClB,IAAIc,EAAkBd,GAClBnL,EAAWiM,EAAgBjM,SAC3BI,EAAkB6L,EAAgB7L,gBAClCE,EAAY2L,EAAgB3L,UAC5BM,EAASqL,EAAgBrL,OACzBP,EAAa4L,EAAgB5L,WAC7BgB,EAAe4K,EAAgB5K,aAC/B6K,EAAclM,GAAYqL,IAAuBA,GAAoBc,gBACrE/W,EAAgBrzC,UAAYA,SAASqzC,cAEzC,GAAI8W,EAAa,CACf,IAAIE,EAAc,CAACF,GAAa74C,OAAOutC,EAAOj6C,IAAIklD,IAAYxoC,OAAOsV,UA2BrE,GAzBKyc,IAtFY,SAA0BA,GAC/C,OAAQ+V,GAAe1K,WAAa8K,IAAkBnW,GAqF5BiX,CAAiBjX,KACjCgL,IAAmCC,EArCpC1nB,QAAQ2yB,IAIgB,cAA1BA,MAiCsDJ,OAAkBE,IAAmB9K,KACtF4L,KACJvB,GAAYyB,IACZhX,GA3BO,SAAoBA,EAAegX,GAClD,OAAOA,EAAY7mC,MAAK,SAAU+mC,GAChC,OAAOR,GAAY1W,EAAekX,EAAMA,MAyBjBC,CAAWnX,EAAegX,KA/EEvqD,EA+EkCuzC,EA9EhFiW,IAAuBA,GAAoBc,kBAAoBtqD,MA+ExDE,WAAaqpD,IAAmBhW,IAAkBkL,GAEhDlL,EAAcoX,MAChBpX,EAAcoX,OAGhBzqD,SAASoE,KAAK4hC,UAEdppB,EAAS,GAAgBytC,EAAahB,GAAiB,CACrD/J,aAAcA,IAEhBgK,GAAsB,KAI1BC,IAAwB,EACxBF,GAAkBrpD,UAAYA,SAASqzC,eAIvCrzC,SAAU,CACZ,IAAI0qD,EAAmB1qD,UAAYA,SAASqzC,cACxCsW,EAAWd,GAAgBwB,GAC3BM,EAAehB,EAAS/kD,KAAI,SAAUvG,GAExC,OADWA,EAAK4E,QAEfjE,QAAQ0rD,GAEPC,GAAgB,IAElBhB,EAASroC,QAAO,SAAUwhB,GACxB,IAAIimB,EAAQjmB,EAAMimB,MACd9lD,EAAO6/B,EAAM7/B,KACjB,OAAO8lD,GAAS9lD,EAAKo/C,QAAQwH,kBAC5BrlD,SAAQ,SAAUkgC,GAEnB,OADWA,EAAMzhC,KACL0xC,gBAAgB,eAE9B8U,GAAUkB,EAAchB,EAASjsD,OAAQ,EAAIisD,GAC7CF,GAAUkB,GAAe,GAAI,EAAGhB,MAMxC,OAAO/sC,GAGLguC,GAAS,SAAgBppB,GACvByoB,MAAkBzoB,IAEpBA,EAAMG,kBACNH,EAAMQ,mBAINge,GAAS,WACX,OAAOgJ,GAAYiB,KAGjBlK,GAAU,SAAiBve,GAE7B,IAAI7jC,EAAS6jC,EAAMjkC,OACf2oD,EAAc1kB,EAAM8b,cAEnB4I,EAAYplC,SAASnjB,KAvJ1B2rD,GAAsB,CACpBuB,aAuJa3E,EAtJbkE,gBAsJ0BzsD,KAoB1BmtD,GAAe,WACjBvB,GAAwB,OAExBhlD,YAAW,WACTglD,GAAwB,cACvB,IA6DLlM,EAAYZ,iBAAiBsD,IAC7BxC,EAAWX,aAAaoD,IACxBxC,EAAaZ,cAAa,SAAUF,GAClC,OAAOA,EAAG,CACRqO,gBAAiB,GACjBnC,YAAaA,QAGjB,OAAe,GAtDf,SAA4BoC,GAC1B,OAAOA,EAAU1pC,QAAO,SAAU0jB,GAEhC,OADeA,EAAMsG,eAKzB,SAAmC2f,GACjC,IAAIC,EAAOD,EAAMhqD,OAAO,GAAG,GAEvBiqD,IAAS9B,KArBbppD,SAASuV,iBAAiB,UAAWq1C,IACrC5qD,SAASuV,iBAAiB,WAAYyqC,IACtCjgD,OAAOwV,iBAAiB,OAAQu1C,KAuBhC,IAAIK,EAAW/B,GACXgC,EAAWD,GAAYD,GAAQA,EAAK3iC,KAAO4iC,EAAS5iC,GACxD6gC,GAAiB8B,EAEbC,IAAaC,IACfD,EAASzL,iBAEJuL,EAAM3pC,QAAO,SAAU2jB,GAE1B,OADSA,EAAM1c,KACD4iC,EAAS5iC,MACtB7qB,QAEDytD,EAASxZ,aAAauZ,IAItBA,GACF7B,GAAkB,KAEb+B,GAAYD,EAASlN,WAAaiN,EAAKjN,UAC1CiN,EAAK1L,eAGPyK,KACAjB,GAAYiB,MA3CdjqD,SAAS0V,oBAAoB,UAAWk1C,IACxC5qD,SAAS0V,oBAAoB,WAAYsqC,IACzCjgD,OAAO2V,oBAAoB,OAAQo1C,IA4CjCzB,GAAkB,QAatB,EA1FmB,WACjB,OAAO,QE7KLgC,GAAoC,cAAiB,SAAgCzsD,EAAON,GAC9F,OAAoB,gBAAoB,GAAa,OAAS,CAC5D8gD,QAAS,GACT9gD,IAAKA,GACJM,OAGDP,GAAO,aAAyB,GACtBA,GAAK+gD,SACH,OAA8B/gD,GAAM,CAAC,YAErDgtD,GAAqB75B,UAAgE,GACrF,ICxBA,GDwBA,GE1BW85B,GAAqB,4BACrBC,GAAqB,0BCArBC,GAAYvO,ICInBwO,GAAU,aAMVC,GAAe,cAAiB,SAAU9sD,EAAOg/C,GACjD,IAAIt/C,EAAM,SAAa,MACnBwsB,EAAK,WAAe,CACpB6gC,gBAAiBF,GACjBG,eAAgBH,GAChBI,mBAAoBJ,KACpBK,EAAYhhC,EAAG,GAAIihC,EAAejhC,EAAG,GACrCkhC,EAAeptD,EAAMotD,aAAczpD,EAAW3D,EAAM2D,SAAUk/B,EAAY7iC,EAAM6iC,UAAWwqB,EAAkBrtD,EAAMqtD,gBAAiBC,EAAUttD,EAAMstD,QAASrN,EAASjgD,EAAMigD,OAAQO,EAAUxgD,EAAMwgD,QAAS+M,EAAcvtD,EAAMutD,YAAaC,EAAQxtD,EAAMwtD,MAAOC,EAAiBztD,EAAMytD,eAAgBrhC,EAAKpsB,EAAMJ,GAAIugD,OAAmB,IAAP/zB,EAAgB,MAAQA,EAAIshC,GAAO,QAAO1tD,EAAO,CAAC,eAAgB,WAAY,YAAa,kBAAmB,UAAW,SAAU,UAAW,cAAe,QAAS,iBAAkB,OAC7fugD,EAAUC,EACVmN,EAAe7Q,EAAa,CAACp9C,EAAKs/C,IAClCsB,GAAiB,SAAS,QAAS,GAAIoN,GAAOR,GAClD,OAAQ,gBAAoB,WAAgB,KACxCI,GAAY,gBAAoB/M,EAAS,CAAEC,QAASoM,GAAWS,gBAAiBA,EAAiBpN,OAAQA,EAAQsN,YAAaA,EAAaC,MAAOA,EAAOL,aAAcA,EAAcM,iBAAkBA,EAAgBG,QAASluD,IAChO0tD,EAAgB,eAAmB,gBAAoBzpD,IAAW,SAAS,QAAS,GAAI28C,GAAiB,CAAE5gD,IAAKiuD,KAAqB,gBAAoBxN,GAAW,QAAS,GAAIG,EAAgB,CAAEzd,UAAWA,EAAWnjC,IAAKiuD,IAAiBhqD,OAEvPmpD,GAAan6B,aAAe,CACxB26B,SAAS,EACTD,iBAAiB,EACjBG,OAAO,GAEXV,GAAalY,WAAa,CACtBiZ,UAAWlB,GACXmB,UAAWpB,IC/Bf,ICFIqB,GDEAxN,GAAU,SAAUr0B,GACpB,IAAIs0B,EAAUt0B,EAAGs0B,QAASkN,GAAO,QAAOxhC,EAAI,CAAC,YAC7C,IAAKs0B,EACD,MAAM,IAAIp9C,MAAM,sEAEpB,IAAI4qD,EAASxN,EAAQ7C,OACrB,IAAKqQ,EACD,MAAM,IAAI5qD,MAAM,4BAEpB,OAAO,gBAAoB4qD,GAAQ,QAAS,GAAIN,KAEpDnN,GAAQ0N,iBAAkB,EEZ1B,SAASC,KACL,IAAK9sD,SACD,OAAO,KACX,IAAI2T,EAAM3T,SAASd,cAAc,SACjCyU,EAAIlR,KAAO,WACX,IAAIsqD,EDDAJ,IAIO,KCCX,OAHII,GACAp5C,EAAIxP,aAAa,QAAS4oD,GAEvBp5C,EAgBJ,IAAIq5C,GAAsB,WAC7B,IAAIC,EAAU,EACVC,EAAa,KACjB,MAAO,CACHpZ,IAAK,SAAUn1C,GAlBvB,IAAsBgV,EAAKw5C,EAmBA,GAAXF,IACKC,EAAaJ,QApBPK,EAqBkBxuD,GArBvBgV,EAqBWu5C,GAnBrBE,WAEJz5C,EAAIy5C,WAAWC,QAAUF,EAGzBx5C,EAAItP,YAAYrE,SAASstD,eAAeH,IAGhD,SAAwBx5C,IACT3T,SAASovB,MAAQpvB,SAASyxC,qBAAqB,QAAQ,IAC7DptC,YAAYsP,GAUD45C,CAAeL,IAGvBD,KAEJzb,OAAQ,cACJyb,GACgBC,IACZA,EAAW10C,YAAc00C,EAAW10C,WAAWk2B,YAAYwe,GAC3DA,EAAa,SC1ClBM,GAAiB,WACxB,ICCIC,EDDAC,GCCAD,EAAQT,KACL,SAAUjS,GACb,aAAgB,WAEZ,OADA0S,EAAM3Z,IAAIiH,GACH,WACH0S,EAAMjc,YAEX,CAACuJ,MDFR,OALY,SAAUjwB,GAClB,IAAIiwB,EAASjwB,EAAGiwB,OAEhB,OADA2S,EAAS3S,GACF,OENJ4S,GAAU,CACjBttB,KAAM,EACN9H,IAAK,EACL4H,MAAO,EACPytB,IAAK,GAELC,GAAQ,SAAUlhD,GAAK,OAAO+B,SAAS/B,GAAK,GAAI,KAAO,GAQhDmhD,GAAc,SAAUC,GAE/B,QADgB,IAAZA,IAAsBA,EAAU,UACd,qBAAXhuD,OACP,OAAO4tD,GAEX,IAAIK,EAZQ,SAAUD,GACtB,IAAIE,EAAKluD,OAAOi6C,iBAAiBh6C,SAASoE,MACtCi8B,EAAO4tB,EAAe,YAAZF,EAAwB,cAAgB,cAClDx1B,EAAM01B,EAAe,YAAZF,EAAwB,aAAe,aAChD5tB,EAAQ8tB,EAAe,YAAZF,EAAwB,eAAiB,eACxD,MAAO,CAACF,GAAMxtB,GAAOwtB,GAAMt1B,GAAMs1B,GAAM1tB,IAOzB+tB,CAAUH,GACpBI,EAAgBnuD,SAASoY,gBAAgBg2C,YACzChiB,EAAcrsC,OAAOo4B,WACzB,MAAO,CACHkI,KAAM2tB,EAAQ,GACdz1B,IAAKy1B,EAAQ,GACb7tB,MAAO6tB,EAAQ,GACfJ,IAAKxkD,KAAK+C,IAAI,EAAGigC,EAAc+hB,EAAgBH,EAAQ,GAAKA,EAAQ,MCtBxEK,GAAQb,KAIRc,GAAY,SAAUxjC,EAAIyjC,EAAeR,EAASS,GAClD,IAAInuB,EAAOvV,EAAGuV,KAAM9H,EAAMzN,EAAGyN,IAAK4H,EAAQrV,EAAGqV,MAAOytB,EAAM9iC,EAAG8iC,IAE7D,YADgB,IAAZG,IAAsBA,EAAU,UAC7B,QAAQz8C,OTTgB,0BSSc,4BAA4BA,OAAOk9C,EAAW,yBAAyBl9C,OAAOs8C,EAAK,OAAOt8C,OAAOk9C,EAAW,2CAA2Cl9C,OAAOk9C,EAAW,8CAA8Cl9C,OAAO,CACvQi9C,GAAiB,sBAAsBj9C,OAAOk9C,EAAW,KAC7C,WAAZT,GACI,uBAAuBz8C,OAAO+uB,EAAM,0BAA0B/uB,OAAOinB,EAAK,4BAA4BjnB,OAAO6uB,EAAO,kEAAkE7uB,OAAOs8C,EAAK,OAAOt8C,OAAOk9C,EAAW,WACnN,YAAZT,GAAyB,kBAAkBz8C,OAAOs8C,EAAK,OAAOt8C,OAAOk9C,EAAW,MAE/EltC,OAAOsV,SACPne,KAAK,IAAK,kBAAkBnH,OAAOg6C,GAAoB,mBAAmBh6C,OAAOs8C,EAAK,OAAOt8C,OAAOk9C,EAAW,mBAAmBl9C,OAAOi6C,GAAoB,0BAA0Bj6C,OAAOs8C,EAAK,OAAOt8C,OAAOk9C,EAAW,mBAAmBl9C,OAAOg6C,GAAoB,MAAMh6C,OAAOg6C,GAAoB,qBAAqBh6C,OAAOk9C,EAAW,mBAAmBl9C,OAAOi6C,GAAoB,MAAMj6C,OAAOi6C,GAAoB,4BAA4Bj6C,OAAOk9C,EAAW,8BAA8Bl9C,OTXld,iCSWif,MAAMA,OAAOs8C,EAAK,eAK5hBa,GAAkB,SAAU7vD,GACnC,IAAIksB,EAAK,WAAegjC,GAAYlvD,EAAMmvD,UAAWH,EAAM9iC,EAAG,GAAI4jC,EAAS5jC,EAAG,GAC9E,aAAgB,WACZ4jC,EAAOZ,GAAYlvD,EAAMmvD,YAC1B,CAACnvD,EAAMmvD,UACV,IAAIY,EAAa/vD,EAAM+vD,WAAYC,EAAchwD,EAAMgwD,YAAa5jC,EAAKpsB,EAAMmvD,QAASA,OAAiB,IAAP/iC,EAAgB,SAAWA,EAC7H,OAAO,gBAAoBqjC,GAAO,CAAEtT,OAAQuT,GAAUV,GAAMe,EAAYZ,EAAUa,EAA6B,GAAf,iBC7BhGC,IAAmB,EACvB,GAAsB,qBAAX9uD,OACP,IACI,IAAI+Y,GAAUzb,OAAOk4B,eAAe,GAAI,UAAW,CAC/C1J,IAAK,WAED,OADAgjC,IAAmB,GACZ,KAIf9uD,OAAOwV,iBAAiB,OAAQuD,GAASA,IAEzC/Y,OAAO2V,oBAAoB,OAAQoD,GAASA,IAEhD,MAAOpT,IACHmpD,IAAmB,EAGpB,IAAIC,KAAaD,IAAmB,CAAEE,SAAS,GCN3CC,GAA0B,SAAUC,EAAMhsD,GACjD,IAAInB,EAAUmB,EACd,EAAG,CAMC,GAJ0B,qBAAfisD,YAA8BptD,aAAmBotD,aACxDptD,EAAUA,EAAQy4C,MAEH4U,GAAuBF,EAAMntD,GAC9B,CACd,IAAIgpB,EAAKskC,GAAmBH,EAAMntD,GAClC,GADgDgpB,EAAG,GAAQA,EAAG,GAE1D,OAAO,EAGfhpB,EAAUA,EAAQ0W,iBACb1W,GAAWA,IAAY9B,SAASoE,MACzC,OAAO,GAkBP+qD,GAAyB,SAAUF,EAAMhsD,GACzC,MAAgB,MAATgsD,EA/CmB,SAAUhsD,GACpC,IAAI83C,EAASh7C,OAAOi6C,iBAAiB/2C,GACrC,MAA6B,WAArB83C,EAAOsU,aACTtU,EAAOsU,YAActU,EAAOuU,WAAkC,YAArBvU,EAAOsU,WA4ChCE,CAAwBtsD,GAzCpB,SAAUA,GACpC,IAAI83C,EAASh7C,OAAOi6C,iBAAiB/2C,GACrC,MAA6B,WAArB83C,EAAOuU,aACTvU,EAAOsU,YAActU,EAAOuU,WAAkC,YAArBvU,EAAOuU,WAsCAE,CAAwBvsD,IAE9EmsD,GAAqB,SAAUH,EAAMhsD,GACrC,MAAgB,MAATgsD,EAlBA,EAFyBnkC,EAoBU7nB,GAnBvBkjC,UAA0Brb,EAAGob,aAA6Bpb,EAAG2kC,cAO1D,SAAU3kC,GAEhC,MAAO,CADUA,EAAG4kC,WAA0B5kC,EAAGovB,YAA2BpvB,EAAGsjC,aAW7BuB,CAAoB1sD,GApBhD,IAAU6nB,GCxBzB8kC,GAAa,SAAUpuB,GAC9B,MAAO,mBAAoBA,EAAQ,CAACA,EAAMiC,eAAe,GAAG7tB,QAAS4rB,EAAMiC,eAAe,GAAG3tB,SAAW,CAAC,EAAG,IAErG+5C,GAAa,SAAUruB,GAAS,MAAO,CAACA,EAAMgB,OAAQhB,EAAMe,SACnE,GAAa,SAAUjkC,GACvB,OAAOA,GAAO,YAAaA,EAAMA,EAAIwD,QAAUxD,GAG/CwxD,GAAgB,SAAUvnC,GAAM,MAAO,4BAA4BjX,OAAOiX,EAAI,qDAAqDjX,OAAOiX,EAAI,8BAC9IwnC,GAAY,EACZC,GAAY,GCbhB,IVWsCC,GUXtC,IVWsCA,GSG/B,SAA6BrxD,GAChC,IAAIsxD,EAAqB,SAAa,IAClCC,EAAgB,SAAa,CAAC,EAAG,IACjCC,EAAa,WACb7nC,EAAK,WAAewnC,MAAa,GACjC1B,EAAQ,YAAe,WAAc,OAAOb,QAAqB,GACjE6C,EAAY,SAAazxD,GAC7B,aAAgB,WACZyxD,EAAUvuD,QAAUlD,IACrB,CAACA,IACJ,aAAgB,WACZ,GAAIA,EAAMwtD,MAAO,CACbpsD,SAASoE,KAAK4sC,UAAU8C,IAAI,uBAAuBxiC,OAAOiX,IAC1D,IAAI+nC,GAAU,QAAc,CAAC1xD,EAAM4tD,QAAQ1qD,UAAWlD,EAAMigD,QAAU,IAAIj6C,IAAI,KAAa,GAAM0c,OAAOsV,SAExG,OADA05B,EAAQ9rD,SAAQ,SAAUuwC,GAAM,OAAOA,EAAG/D,UAAU8C,IAAI,uBAAuBxiC,OAAOiX,OAC/E,WACHvoB,SAASoE,KAAK4sC,UAAUQ,OAAO,uBAAuBlgC,OAAOiX,IAC7D+nC,EAAQ9rD,SAAQ,SAAUuwC,GAAM,OAAOA,EAAG/D,UAAUQ,OAAO,uBAAuBlgC,OAAOiX,WAIlG,CAAC3pB,EAAMwtD,MAAOxtD,EAAM4tD,QAAQ1qD,QAASlD,EAAMigD,SAC9C,IAAI0R,EAAoB,eAAkB,SAAU/uB,EAAOthB,GACvD,GAAI,YAAashB,GAAkC,IAAzBA,EAAMgvB,QAAQ9yD,OACpC,OAAQ2yD,EAAUvuD,QAAQuqD,eAE9B,IAIIoE,EAJA5sB,EAAQ+rB,GAAWpuB,GACnBkvB,EAAaP,EAAcruD,QAC3B0gC,EAAS,WAAYhB,EAAQA,EAAMgB,OAASkuB,EAAW,GAAK7sB,EAAM,GAClEtB,EAAS,WAAYf,EAAQA,EAAMe,OAASmuB,EAAW,GAAK7sB,EAAM,GAElEtmC,EAASikC,EAAMjkC,OACfozD,EAAgBvnD,KAAKuC,IAAI62B,GAAUp5B,KAAKuC,IAAI42B,GAAU,IAAM,IAEhE,GAAI,YAAaf,GAA2B,MAAlBmvB,GAAyC,UAAhBpzD,EAAOkF,KACtD,OAAO,EAEX,IAAImuD,EAA+B5B,GAAwB2B,EAAepzD,GAC1E,IAAKqzD,EACD,OAAO,EAUX,GARIA,EACAH,EAAcE,GAGdF,EAAgC,MAAlBE,EAAwB,IAAM,IAC5CC,EAA+B5B,GAAwB2B,EAAepzD,KAGrEqzD,EACD,OAAO,EAKX,IAHKR,EAAWtuD,SAAW,mBAAoB0/B,IAAUgB,GAAUD,KAC/D6tB,EAAWtuD,QAAU2uD,IAEpBA,EACD,OAAO,EAEX,IAAII,EAAgBT,EAAWtuD,SAAW2uD,EAC1C,ODhBkB,SAAUxB,EAAM6B,EAAWtvB,EAAOuvB,EAAaC,GACrE,IAAIC,EATiB,SAAUhC,EAAM1nB,GAMrC,MAAgB,MAAT0nB,GAA8B,QAAd1nB,GAAuB,EAAI,EAG5B2pB,CAAmBjC,EAAMlvD,OAAOi6C,iBAAiB8W,GAAWvpB,WAC9E4pB,EAAQF,EAAkBF,EAE1BxzD,EAASikC,EAAMjkC,OACf6zD,EAAeN,EAAUhwC,SAASvjB,GAClC8zD,GAAqB,EACrBC,EAAkBH,EAAQ,EAC1BI,EAAkB,EAClBC,EAAqB,EACzB,EAAG,CACC,IAAI1mC,EAAKskC,GAAmBH,EAAM1xD,GAASkC,EAAWqrB,EAAG,GACrD2mC,EADoE3mC,EAAG,GAAeA,EAAG,GACnDmmC,EAAkBxxD,GACxDA,GAAYgyD,IACRtC,GAAuBF,EAAM1xD,KAC7Bg0D,GAAmBE,EACnBD,GAAsB/xD,GAG9BlC,EAASA,EAAOib,kBAGlB44C,GAAgB7zD,IAAWyC,SAASoE,MAEjCgtD,IAAiBN,EAAUhwC,SAASvjB,IAAWuzD,IAAcvzD,IAQlE,OAPI+zD,IAAqBN,GAAoC,IAApBO,IAA4BP,GAAgBG,EAAQI,KAGnFD,IACJN,GAAuC,IAAvBQ,IAA+BR,IAAiBG,EAAQK,MAH1EH,GAAqB,GAMlBA,EChBIK,CAAab,EAAe3wC,EAAQshB,EAAyB,MAAlBqvB,EAAwBruB,EAASD,GAAQ,KAC5F,IACCovB,EAAgB,eAAkB,SAAUC,GAC5C,IAAIpwB,EAAQowB,EACZ,GAAK5B,GAAUtyD,QAAUsyD,GAAUA,GAAUtyD,OAAS,KAAO2wD,EAA7D,CAIA,IAAI8C,EAAQ,WAAY3vB,EAAQquB,GAAWruB,GAASouB,GAAWpuB,GAC3DqwB,EAAc3B,EAAmBpuD,QAAQwf,QAAO,SAAU/Z,GAAK,OAAOA,EAAEpG,OAASqgC,EAAM/+B,MAAQ8E,EAAEhK,SAAWikC,EAAMjkC,SAxEjGoP,EAwEwHpF,EAAE4pD,MAxEvHphD,EAwE8HohD,EAxElHxkD,EAAE,KAAOoD,EAAE,IAAMpD,EAAE,KAAOoD,EAAE,IAArD,IAAUpD,EAAGoD,KAwEyI,GAEjK,GAAI8hD,GAAeA,EAAYC,OAC3BtwB,EAAMQ,sBAIV,IAAK6vB,EAAa,CACd,IAAIE,GAAc1B,EAAUvuD,QAAQ+8C,QAAU,IACzCj6C,IAAI,IACJ0c,OAAOsV,SACPtV,QAAO,SAAUre,GAAQ,OAAOA,EAAK6d,SAAS0gB,EAAMjkC,YACxCw0D,EAAWr0D,OAAS,EAAI6yD,EAAkB/uB,EAAOuwB,EAAW,KAAO1B,EAAUvuD,QAAQqqD,cAElG3qB,EAAMQ,qBAGf,IACCgwB,EAAe,eAAkB,SAAU7wD,EAAMgwD,EAAO5zD,EAAQu0D,GAChE,IAAItwB,EAAQ,CAAErgC,KAAMA,EAAMgwD,MAAOA,EAAO5zD,OAAQA,EAAQu0D,OAAQA,GAChE5B,EAAmBpuD,QAAQiP,KAAKywB,GAChCj9B,YAAW,WACP2rD,EAAmBpuD,QAAUouD,EAAmBpuD,QAAQwf,QAAO,SAAU/Z,GAAK,OAAOA,IAAMi6B,OAC5F,KACJ,IACCywB,EAAmB,eAAkB,SAAUzwB,GAC/C2uB,EAAcruD,QAAU8tD,GAAWpuB,GACnC4uB,EAAWtuD,aAAU8hB,IACtB,IACCsuC,EAAc,eAAkB,SAAU1wB,GAC1CwwB,EAAaxwB,EAAM/+B,KAAMotD,GAAWruB,GAAQA,EAAMjkC,OAAQgzD,EAAkB/uB,EAAO5iC,EAAM4tD,QAAQ1qD,YAClG,IACCqwD,EAAkB,eAAkB,SAAU3wB,GAC9CwwB,EAAaxwB,EAAM/+B,KAAMmtD,GAAWpuB,GAAQA,EAAMjkC,OAAQgzD,EAAkB/uB,EAAO5iC,EAAM4tD,QAAQ1qD,YAClG,IACH,aAAgB,WAUZ,OATAkuD,GAAUj/C,KAAKs9C,GACfzvD,EAAMmtD,aAAa,CACfJ,gBAAiBuG,EACjBtG,eAAgBsG,EAChBrG,mBAAoBsG,IAExBnyD,SAASuV,iBAAiB,QAASo8C,EAAe7C,IAClD9uD,SAASuV,iBAAiB,YAAao8C,EAAe7C,IACtD9uD,SAASuV,iBAAiB,aAAc08C,EAAkBnD,IACnD,WACHkB,GAAYA,GAAU1uC,QAAO,SAAU8wC,GAAQ,OAAOA,IAAS/D,KAC/DruD,SAAS0V,oBAAoB,QAASi8C,EAAe7C,IACrD9uD,SAAS0V,oBAAoB,YAAai8C,EAAe7C,IACzD9uD,SAAS0V,oBAAoB,aAAcu8C,EAAkBnD,OAElE,IACH,IAAI7C,EAAkBrtD,EAAMqtD,gBAAiBG,EAAQxtD,EAAMwtD,MAC3D,OAAQ,gBAAoB,WAAgB,KACxCA,EAAQ,gBAAoBiC,EAAO,CAAEtT,OAAQ+U,GAAcvnC,KAAS,KACpE0jC,EAAkB,gBAAoBwC,GAAiB,CAAEV,QAAS,WAAc,OCzI3DvC,GVYlBhP,UAAUyT,IACV9Q,IWZPkT,GAAoB,cAAiB,SAAUzzD,EAAON,GAAO,OAAQ,gBAAoBotD,IAAc,QAAS,GAAI9sD,EAAO,CAAEN,IAAKA,EAAK8gD,QAAS,SACpJiT,GAAkB7e,WAAakY,GAAalY,WAC5C,iCCmBA,SAASv0C,GAA8BtB,EAAQkB,GAC7C,GAAc,MAAVlB,EAAgB,MAAO,GAC3B,IAEIC,EAAKJ,EAFLD,EAAS,GACTuB,EAAazB,OAAO0B,KAAKpB,GAG7B,IAAKH,EAAI,EAAGA,EAAIsB,EAAWpB,OAAQF,IACjCI,EAAMkB,EAAWtB,GACbqB,EAASG,QAAQpB,IAAQ,IAC7BL,EAAOK,GAAOD,EAAOC,IAGvB,OAAOL,EAIS,UACY,UACC,UAKlB,UARb,IAsBI+0D,IAA6B,IAAAl0D,aAAW,SAAuBC,EAAMiE,GACvE,IAAIiwD,EAAcl0D,EAAK+rC,OACnBA,OAAyB,IAAhBmoB,GAAgCA,EACzC3zD,EAAQK,GAA8BZ,EAAM,CAAC,WAoBjD,OAlBA,IAAAmF,YAAU,WACR,OAAO,QAAY,YAClB,KAIH,IAAAA,YAAU,WACJ4mC,EAEFrqC,OAAOyyD,0BAA2B,EAElCzyD,OAAOuyC,uBAAsB,WAG3BvyC,OAAOyyD,0BAA2B,OAGrC,CAACpoB,IACGA,EAAS,gBAAoB,IAAQ,CAC1C,4BAA6B,IAC5B,gBAAoBqoB,GAAap1D,OAAOC,OAAO,CAChDgB,IAAKgE,GACJ1D,KAAW,QAehB,IAAI6zD,IAA2B,IAAAr0D,aAAW,SAAqB0kC,EAAOxgC,GACpE,IAAI+pD,EAAiBvpB,EAAMupB,eACvBqG,EAAwB5vB,EAAM6vB,2BAC9BA,OAAuD,IAA1BD,GAA2CA,EACxEE,EAAyB9vB,EAAM+vB,4BAC/BA,OAAyD,IAA3BD,GAA4CA,EAC1EE,EAAkBhwB,EAAMgwB,gBACxB7nB,EAAUnI,EAAMmI,QAChB8nB,EAAkBjwB,EAAMkwB,UACxBA,OAAgC,IAApBD,EAA6B,KAAOA,EAChDhoB,EAAYjI,EAAMiI,UAClBJ,EAAc7H,EAAM6H,YACpBsoB,EAAwBnwB,EAAMowB,+BAC9BA,OAA2D,IAA1BD,GAA0CA,EAC3Er0D,EAAQK,GAA8B6jC,EAAO,CAAC,iBAAkB,6BAA8B,8BAA+B,kBAAmB,UAAW,YAAa,YAAa,cAAe,mCAEpMqwB,GAAkB,IAAAvwD,QAAO,MACzBwwD,GAAc,IAAAxwD,QAAO,MACrBtE,GAAM,QAAa80D,EAAa9wD,GAChC+wD,GAAoB,IAAArwD,cAAY,WAC9B8vD,GAAmBA,EAAgBhxD,SACrCgxD,EAAgBhxD,QAAQkkC,UAEzB,CAAC8sB,IAuBJ,OAHA,IAAAtvD,YAAU,WACR,OAAO4vD,EAAYtxD,QAiHvB,SAAyBwxD,GACvB,IAAIC,EAAiB,GACjBC,EAAY,GACZvzD,GAAgB,QAAiBqzD,IAAetzD,SAEpD,IAAKszD,EAKH,OAAO,KAuBT,OApBAhzD,MAAMzC,UAAU2G,QAAQzG,KAAKkC,EAAc20C,iBAAiB,aAAa,SAAU3xC,GACjF,IAAIwwD,EAAuBC,EAI3B,GAAIzwD,KAFiE,QAAnDwwD,EAAwBH,EAAW96C,kBAAkD,IAA1Bi7C,GAA4G,QAA/DC,EAAyBD,EAAsBj7C,kBAAmD,IAA3Bk7C,OAAjF,EAA8HA,EAAuBl7C,YAErQ,CAIA,IAAIm7C,EAAO1wD,EAAKw3C,aAAa,eACA,OAATkZ,GAA0B,UAATA,IAMrCJ,EAAexiD,KAAK4iD,GACpBH,EAAUziD,KAAK9N,GACfA,EAAKkB,aAAa,cAAe,aAE5B,WACLqvD,EAAUhvD,SAAQ,SAAUvB,EAAMgiB,GAChC,IAAI2uC,EAAgBL,EAAetuC,GAEb,OAAlB2uC,EACF3wD,EAAK0xC,gBAAgB,eAErB1xC,EAAKkB,aAAa,cAAeyvD,OAzJRC,CAAgBT,EAAYtxD,cAAW,IACnE,IACI,gBAAoB,GAAW,CACpCy8C,WAAW,EACX5M,aAAa,EACb6N,aAAc6T,EACd/nB,SAAUqnB,EACVrU,WAAY4U,GACX,gBAAoB,GAAc,CACnC7G,eAAgBA,EAChBH,SAAU2G,GACT,gBAAoB,MAAOx1D,OAAOC,OAAO,GAAIsB,EAAO,CACrDN,IAAKA,EACL,4BAA6B,GAO7B2sC,SAAS,QAAUA,GAvCrB,SAAqBzJ,GACf2xB,EAAgBrxD,UAAY0/B,EAAMjkC,SACpCikC,EAAMG,kBACNqxB,EAAUxxB,OAqCZuJ,WAAW,QAAUA,GAjCvB,SAAuBvJ,GACH,WAAdA,EAAM5jC,MACR4jC,EAAMG,kBACNqxB,EAAUxxB,OA+BZmJ,aAAa,QAAUA,GA3BzB,SAAyBnJ,GACvB2xB,EAAgBrxD,QAAU0/B,EAAMjkC,kBAoDpC,IAAIu2D,IAA6B,IAAA11D,aAAW,SAAuBsmC,EAAOpiC,GACxE,IAAI2oC,EAAUvG,EAAMuG,QAEhBrsC,GADY8lC,EAAMqG,UACV9rC,GAA8BylC,EAAO,CAAC,UAAW,eAE7D,OAAO,gBAAoB,MAAOrnC,OAAOC,OAAO,CAC9C,aAAc,OACdqH,KAAM,SACNmmC,UAAW,GACVlsC,EAAO,CACRN,IAAKgE,EACL,4BAA6B,GAC7B2oC,SAAS,QAAUA,GAAS,SAAUzJ,GACpCA,EAAMG,2BAkHZ,wCClUA,GAA0B,wBAA1B,GAA2D,uBAA3D,GAA4I,6BAA5I,GAAiL,sBAAjL,GAA2P,2BAA3P,GAA6R,qBAA7R,GAA4T,6RCerT,SAASoyB,GAAT,GAA+D,IAAvCtyB,EAAsC,EAAtCA,UAAWl/B,EAA2B,EAA3BA,SAAau4C,GAAc,aAC7DtH,EAAa,CAACuH,IAIpB,OAHItZ,GACF+R,EAAWziC,KAAK0wB,GAGhB,gBAAC6wB,IAAD,QAAe7wB,UAAW+R,EAAW/6B,KAAK,MAAUqiC,GACjDv4C,GAoCA,SAASyxD,GAAT,GAA+D,IAAvCvyB,EAAsC,EAAtCA,UAAWl/B,EAA2B,EAA3BA,SAAau4C,GAAc,aAC7DtH,EAAa,CAACuH,IAIpB,OAHItZ,GACF+R,EAAWziC,KAAK0wB,GAGhB,gBAACqyB,IAAD,QAAeryB,UAAW+R,EAAW/6B,KAAK,MAAUqiC,GACjDv4C,GA8BA,SAAS0xD,GAAT,GAA6D,IAAvCxyB,EAAsC,EAAtCA,UAAWl/B,EAA2B,EAA3BA,SAAau4C,GAAc,aAC3DtH,EAAa,CAACuH,IAIpB,OAHItZ,GACF+R,EAAWziC,KAAK0wB,GAGhB,8BAAIA,UAAW+R,EAAW/6B,KAAK,MAAUqiC,GACtCv4C,GAkBA,SAAS2xD,GAAT,GAA+D,IAAvCzyB,EAAsC,EAAtCA,UAAWl/B,EAA2B,EAA3BA,SAAau4C,GAAc,aAC7DtH,EAAa,CAACuH,IAIpB,OAHItZ,GACF+R,EAAWziC,KAAK0wB,GAGhB,+BAAKA,UAAW+R,EAAW/6B,KAAK,MAAUqiC,GACvCv4C,GAkBA,SAAS4xD,GAAT,GAAiE,IAAvC1yB,EAAsC,EAAtCA,UAAW1C,EAA2B,EAA3BA,IAAK2K,EAAsB,EAAtBA,IAAQoR,GAAc,aAC/DtH,EAAa,CAACuH,IAIpB,OAHItZ,GACF+R,EAAWziC,KAAK0wB,GAGhB,+BAAK1C,IAAKA,EAAK2K,IAAKA,EAAKjI,UAAW+R,EAAW/6B,KAAK,MAAUqiC,IAkB3D,SAASsZ,GAAT,GAAkD,IAA7B3yB,EAA4B,EAA5BA,UAAcqZ,GAAc,aAChDtH,EAAa,CAACuH,IAIpB,OAHItZ,GACF+R,EAAWziC,KAAK0wB,GAEX,+BAAKA,UAAW+R,EAAW/6B,KAAK,MAAUqiC,IAgB5C,SAASuZ,GAAT,GAAgE,IAApC5yB,EAAmC,EAAnCA,UAAWxQ,EAAwB,EAAxBA,MAAU6pB,GAAc,aACpE,OACE,gBAACwZ,GAAA,GAAD,QAAQ7xD,KAAK,SAAS8xD,QAAQ,OAAO9yB,UAAWA,GAAeqZ,GAC7D,gBAAC0Z,GAAA,EAAD,CAA2BpjC,KAAMH,GAASwjC,GAAAA,EAAAA,SAmBhD,SAAStqB,GAAT,GAQI,IAPF1I,EAOC,EAPDA,UACA2I,EAMC,EANDA,OACA4oB,EAKC,EALDA,UACA0B,EAIC,EAJDA,SACAnyD,EAGC,EAHDA,SACAuwD,EAEC,EAFDA,gBACGhY,GACF,aACD,OACE,gBAACiZ,GAAD,CACE3pB,OAAQA,EACR4oB,UAAWA,EACXF,gBAAiBA,GAEjB,gBAACkB,IAAD,QAAcvyB,UAAWA,GAAeqZ,GACrC4Z,GACC,gBAACL,GAAD,CACE5yB,UAAWsZ,GACX9P,QAAS+nB,IAGZzwD,IA9MT+vD,GAAcpR,YAAc,eAE5B6S,GAAaxiC,aAAe,CAC1BkQ,UAAW,KACX2I,QAAQ,EACR4oB,UAAW,aACXF,gBAAiB,aAEjBzG,gBAAgB,EAChBsG,4BAA4B,EAC5BE,6BAA6B,GAG/BkB,GAAaviC,UAAY,CACvBjvB,SAAUwE,IAAAA,KAAAA,WACV06B,UAAW16B,IAAAA,OACXqjC,OAAQrjC,IAAAA,KACRisD,UAAWjsD,IAAAA,KACX+rD,gBAAiB/rD,IAAAA,KACjBslD,eAAgBtlD,IAAAA,KAChB4rD,2BAA4B5rD,IAAAA,KAC5B8rD,4BAA6B9rD,IAAAA,MAsB/B+sD,GAAc5S,YAAc,eAE5B8S,GAAaziC,aAAe,CAC1BkQ,UAAW,MAGbuyB,GAAaxiC,UAAY,CACvBjvB,SAAUwE,IAAAA,KAAAA,WACV06B,UAAW16B,IAAAA,OAOX,aAAcA,IAAAA,OACd,kBAAmBA,IAAAA,QAoBrBktD,GAAW1iC,aAAe,CACxBkQ,UAAW,MAGbwyB,GAAWziC,UAAY,CACrBjvB,SAAUwE,IAAAA,KAAAA,WACV06B,UAAW16B,IAAAA,QAmBbmtD,GAAa3iC,aAAe,CAC1BkQ,UAAW,MAGbyyB,GAAa1iC,UAAY,CACvBjvB,SAAUwE,IAAAA,KAAAA,WACV06B,UAAW16B,IAAAA,QAiBbotD,GAAe5iC,aAAe,CAC5BkQ,UAAW,MAGb0yB,GAAe3iC,UAAY,CACzBiQ,UAAW16B,IAAAA,OACXg4B,IAAKh4B,IAAAA,OAAAA,WACL2iC,IAAK3iC,IAAAA,OAAAA,YAePqtD,GAAU7iC,aAAe,CACvBkQ,UAAW,MAGb2yB,GAAU5iC,UAAY,CACpBiQ,UAAW16B,IAAAA,OACXxE,SAAUwE,IAAAA,KAAAA,YAeZstD,GAAiB9iC,aAAe,CAC9BkQ,UAAW,KACXxQ,MAAO,MAGTojC,GAAiB7iC,UAAY,CAC3BiQ,UAAW16B,IAAAA,OACXkqB,MAAOlqB,IAAAA,QAmCTojC,GAAM5Y,aAAe,CACnBkQ,UAAW,KACX2I,QAAQ,EACRsqB,UAAU,EACV1B,UAAW,aACXF,gBAAiB,cAGnB3oB,GAAM3Y,UAAY,CAIhBiQ,UAAW16B,IAAAA,OAKXqjC,OAAQrjC,IAAAA,KAKRisD,UAAWjsD,IAAAA,KAKX+rD,gBAAiB/rD,IAAAA,KAKjB2tD,SAAU3tD,IAAAA,KAEVxE,SAAUwE,IAAAA,UAAoB,CAC5BA,IAAAA,QAAkBA,IAAAA,MAClBA,IAAAA,OACCnB,WAOH,aAAcmB,IAAAA,OACd,kBAAmBA,IAAAA,QAIrB,qRCjSA,EAAyB,+BAAzB,EAAiE,+BAAjE,EAAkK,qCAAlK,EAA+Q,uCAA/Q,EAA6T,6BAA7T,EAAiW,6BAAjW,EAAob,iCAApb,EAA2d,4BAA3d,EAAmjB,mCAAnjB,EAA+oB,4HCWxoB,SAAS4tD,EAAT,GAA4D,IAAvClzB,EAAsC,EAAtCA,UAAWl/B,EAA2B,EAA3BA,SAAau4C,GAAc,YAC1DtH,EAAa,CAACuH,GAIpB,OAHItZ,GACF+R,EAAWziC,KAAK0wB,GAGhB,gBAACmzB,EAAA,IAAD,QAAMnzB,UAAW+R,EAAW/6B,KAAK,MAAUqiC,GACxCv4C,GAkBA,SAASsyD,EAAT,GAAgD,IAAxBpzB,EAAuB,EAAvBA,UAAWl/B,EAAY,EAAZA,SAClCixC,EAAa,CAACuH,GAIpB,OAHItZ,GACF+R,EAAWziC,KAAK0wB,GAEX,gBAAC,KAAD,CAASA,UAAW+R,EAAW/6B,KAAK,MAAOlW,GAgB7C,SAASuyD,EAAT,GAAsD,IAAlCrzB,EAAiC,EAAjCA,UAAWl/B,EAAsB,EAAtBA,SAAU+oC,EAAY,EAAZA,SACxCkI,EAAa,CAACuH,GAIpB,OAHItZ,GACF+R,EAAWziC,KAAK0wB,GAGhB,gBAAC,KAAD,CAAKA,UAAW+R,EAAW/6B,KAAK,KAAM6yB,SAAUA,GAC7C/oC,GAoBA,SAASwyD,EAAT,GAAkD,IAAxBtzB,EAAuB,EAAvBA,UAAWl/B,EAAY,EAAZA,SACpCixC,EAAa,CAACuH,GAIpB,OAHItZ,GACF+R,EAAWziC,KAAK0wB,GAEX,gBAAC,KAAD,CAAWA,UAAW+R,EAAW/6B,KAAK,MAAOlW,GAgB/C,SAASyyD,EAAT,GAAiD,IAAxBvzB,EAAuB,EAAvBA,UAAWl/B,EAAY,EAAZA,SACnCixC,EAAa,CAACuH,GAIpB,OAHItZ,GACF+R,EAAWziC,KAAK0wB,GAEX,gBAAC,KAAD,CAAUA,UAAW+R,EAAW/6B,KAAK,MAAOlW,GAgBtC,SAAS0yD,EAAT,GAQX,IAPF7qB,EAOC,EAPDA,OACA3I,EAMC,EANDA,UACAuxB,EAKC,EALDA,UACAzwD,EAIC,EAJDA,SACA2uB,EAGC,EAHDA,MACAgkC,EAEC,EAFDA,KACGpa,GACF,YACKtH,EAAa,CAACuH,GAIpB,OAHItZ,GACF+R,EAAWziC,KAAK0wB,GAGhB,gBAAC0I,EAAA,IAAD,QACEC,OAAQA,EACR3I,UAAW+R,EAAW/6B,KAAK,KAC3Bu6C,UAAWA,EACX0B,UAAU,GACN5Z,GAEJ,uBAAKrZ,UAAWsZ,GACd,uBAAKtZ,UAAWsZ,GACd,sBAAItZ,UAAWsZ,GACZma,GAAQ,uBAAKn2B,IAAKm2B,EAAMxrB,IAAI,GAAGjI,UAAWsZ,IAC1C7pB,KAIN3uB,GApIPoyD,EAAUpjC,aAAe,CACvBkQ,UAAW,MAGbkzB,EAAUnjC,UAAY,CACpBjvB,SAAUwE,IAAAA,KAAAA,WACV06B,UAAW16B,IAAAA,QAeb8tD,EAAatjC,aAAe,CAC1BkQ,UAAW,MAGbozB,EAAarjC,UAAY,CACvBjvB,SAAUwE,IAAAA,KAAAA,WACV06B,UAAW16B,IAAAA,QAmBb+tD,EAASvjC,aAAe,CACtBkQ,UAAW,KACX6J,UAAU,GAGZwpB,EAAStjC,UAAY,CACnBjvB,SAAUwE,IAAAA,KAAAA,WACV06B,UAAW16B,IAAAA,OACXukC,SAAUvkC,IAAAA,MAeZguD,EAAexjC,aAAe,CAC5BkQ,UAAW,MAGbszB,EAAevjC,UAAY,CACzBjvB,SAAUwE,IAAAA,KAAAA,WACV06B,UAAW16B,IAAAA,QAebiuD,EAAczjC,aAAe,CAC3BkQ,UAAW,MAGbuzB,EAAcxjC,UAAY,CACxBjvB,SAAUwE,IAAAA,KAAAA,WACV06B,UAAW16B,IAAAA,QAyCbkuD,EAAc1jC,aAAe,CAC3B6Y,QAAQ,EACR3I,UAAW,KACXuxB,UAAW,aACXkC,KAAM,MAGRD,EAAczjC,UAAY,CACxBjvB,SAAUwE,IAAAA,KAAAA,WACVmqB,MAAOnqB,IAAAA,KAAAA,WACPmuD,KAAMnuD,IAAAA,OACNqjC,OAAQrjC,IAAAA,KACR06B,UAAW16B,IAAAA,OACXisD,UAAWjsD,IAAAA,yJC7Kb,EAAwB,sBAAxB,EAAyD,yBAAzD,EAA0F,sBCMpFouD,EAAQ,SAAC,GASR,IAIDC,EAZJ7yD,EAQI,EARJA,SACA9C,EAOI,EAPJA,SACAgiC,EAMI,EANJA,UACA5iB,EAKI,EALJA,OACAysB,EAII,EAJJA,SACA+pB,EAGI,EAHJA,OACAC,EAEI,EAFJA,OACAC,EACI,EADJA,SAEA,GAA4BzZ,EAAAA,EAAAA,WAAS,GAA9B1R,EAAP,KAAeorB,EAAf,KACA,GAA0C1Z,EAAAA,EAAAA,WAAS,GAA5C2Z,EAAP,KAAsBC,EAAtB,KACA,GAAsC5Z,EAAAA,EAAAA,UAAS,MAAxC6Z,EAAP,KAAoBC,EAApB,MAGApyD,EAAAA,EAAAA,YAAU,WACJ8nC,GACFkqB,GAAU,KAEX,CAAClqB,IAEJ,IAAMuqB,EAAa,WACjBvxD,aAAaqxD,GACbrxD,aAAa8wD,GAET9pB,GAIAmqB,GAIJG,EACErxD,YAAW,YACM,IAAX6lC,GACFirB,IAEFG,GAAU,KACT,OAIDM,EAAa,WACjBxxD,aAAaqxD,GAEbD,GAAiB,GAEjBN,EAAc7wD,YAAW,WACvBixD,GAAU,GACVF,MACC,IAGCS,EAAc,YACb3rB,GAAUkB,IAGfoqB,EAAiBtrB,GACjBorB,GAAWprB,KAab,OACE,gBAAC4rB,EAAA,GAAD,KACE,gBAACC,EAAA,EAAD,MACG,gBAAG33D,EAAH,EAAGA,IAAH,OACC0yB,EAAAA,aAAmBzuB,EAAU,CAC3BjE,IAAAA,EACA43D,YAAaL,EACbM,aAAcL,EACd/V,QAAS8V,EACT7V,OAAQ8V,EACR7qB,QAAS8qB,OAKd3rB,GACC,gBAAC,IAAD,KACE,gBAACgsB,EAAA,EAAD,CACEC,UAAW52D,EACX62D,UAAW,CACT,CACEn1D,KAAM,SACN2X,QAAS,CACP+F,OAAQ,CAAC,EAAGA,QAKjB,gBArCH03C,EAqCM53D,EAAH,EAAGA,MAAkB63D,EAArB,EAAUH,UAA0B/3D,EAApC,EAAoCA,IAAKm4D,EAAzC,EAAyCA,WAAzC,OACC,uBACEn4D,IAAKA,EACLqG,KAAK,UACLhG,MAAOA,EACP8iC,WA1CN80B,EAAe,CAACxb,GAElBtZ,GACF80B,EAAaxlD,KAAK0wB,GAGb80B,EAAa99C,KAAK,MAqCb,iBAAgB+9C,EAChBN,YAAaL,EACbM,aAAcL,EACd/V,QAAS8V,EACT7V,OAAQ8V,GAER,uBAAKr0B,UAAWsZ,GAAkBwa,GAClC,uBACEj3D,IAAKm4D,EAAWn4D,IAChBK,MAAO83D,EAAW93D,MAClB8iC,UAAWsZ,EACX,iBAAgByb,WAWlCrB,EAAM5jC,aAAe,CACnB9xB,SAAU,SACVgiC,UAAW,KACX5iB,OAAQ,EACRysB,UAAU,EACV+pB,OAAQ,aACRC,OAAQ,cAGVH,EAAM3jC,UAAY,CAChBjvB,SAAUwE,IAAAA,KAAAA,WACVtH,SAAUsH,IAAAA,MAAgB,CAAC,MAAO,QAAS,SAAU,SACrD06B,UAAW16B,IAAAA,OACX8X,OAAQ9X,IAAAA,OACRukC,SAAUvkC,IAAAA,KACVsuD,OAAQtuD,IAAAA,KACRuuD,OAAQvuD,IAAAA,KACRwuD,SAAUxuD,IAAAA,KAAAA,YAGZ,0KCxJM2vD,EAA0B1lC,EAAAA,YAC9B,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,mIACFwpB,KAAK,SAKbslC,EAAwBnlC,aAAe,CACrCN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX8yC,EAAwBllC,UAAY,CAClCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,6CChCM4vD,EAAyB3lC,EAAAA,YAC7B,WAA4C1yB,GAA5C,IAAG2yB,EAAH,EAAGA,MAAOzI,EAAV,EAAUA,KAAM0I,EAAhB,EAAgBA,MAAOC,EAAvB,EAAuBA,QAAYvyB,GAAnC,mBACE,+BACEwyB,KAAMH,EACNI,MAAM,6BACNC,QAAQ,YACRhzB,IAAKA,EACLoB,MAAO8oB,EACPnpB,OAAQmpB,EACR,kBAAiB2I,GACbvyB,GAEHsyB,EAAQ,yBAAO3I,GAAI4I,GAAUD,GAAiB,KAC/C,wBACEtpB,EAAE,gIACFwpB,KAAK,KAEP,wBAAMxpB,EAAE,oCAAoCwpB,KAAK,SAIvDulC,EAAuBplC,aAAe,CACpCN,MAAO,eACPzI,KAAM,GACN0I,WAAOtN,EACPuN,aAASvN,GAEX+yC,EAAuBnlC,UAAY,CACjCP,MAAOlqB,IAAAA,OACPyhB,KAAMzhB,IAAAA,OACNmqB,MAAOnqB,IAAAA,OACPoqB,QAASpqB,IAAAA,QAEX,mBCnCA,EAAwB,sBCQlB6vD,EAAQ,SAAC,GASR,IARLruC,EAQI,EARJA,GACApnB,EAOI,EAPJA,KACAK,EAMI,EANJA,MACAyvB,EAKI,EALJA,MACA+xB,EAII,EAJJA,QACA1X,EAGI,EAHJA,SACA7J,EAEI,EAFJA,UACAo1B,EACI,EADJA,SAEMrjB,EAAa,CAACuH,EAActZ,GAElC,OACE,wBACEA,UAAW+R,EAAW/6B,KAAK,KAC3B9T,KAAK,QACL,eAAcq+C,EACdlY,SAAU,GAEV,yBACEroC,KAAK,QACL8lB,GAAIA,EACJpnB,KAAMA,EACNK,MAAOA,EACPwhD,QAASA,EACT1X,SAAUA,EACVurB,SAAUA,EACV/rB,UAAW,IAGZkY,EAAU,gBAAC,EAAD,CAAS5xB,KAAMH,IAAY,gBAAC,EAAD,QAK5C2lC,EAAMrlC,aAAe,CACnBN,MAAOwjC,EAAAA,EAAAA,kBACPzR,SAAS,EACT1X,UAAU,EACV7J,UAAW,KACXo1B,SAAU,cAGZD,EAAMplC,UAAY,CAChBjJ,GAAIxhB,IAAAA,OAAAA,WACJ5F,KAAM4F,IAAAA,OAAAA,WACNkqB,MAAOlqB,IAAAA,OACPvF,MAAOuF,IAAAA,OAAAA,WACPi8C,QAASj8C,IAAAA,KACTukC,SAAUvkC,IAAAA,KACV06B,UAAW16B,IAAAA,OACX8vD,SAAU9vD,IAAAA,MAGZ,+BC/DA,IASC,iCAPD7B,EAAAA,SAOC,EAPDA,EAAAA,OCQgB,SAAU4xD,GCN1B,cAGA,QACA,oBAGA,YACAt5D,EAAAA,EACA0K,GAAAA,EACA/C,QAAAA,IAUA,OANC,EAAD2xD,GAAAA,KAAAA,EAAAA,QAAAA,EAAAA,EAAAA,QAAAA,GAGA5xD,EAAAA,GAAAA,EAGAA,EAAAA,QAvBA,SA4DA,OAhCC6xD,EAAAA,EAAAA,EAGDA,EAAAA,EAAAA,EAGAA,EAAAA,EAAAA,SAAAA,EAAAA,EAAAA,GACAA,EAAAA,EAAAA,EAAAA,IACA15D,OAAAA,eAAAA,EAAAA,EAAAA,CACAs4B,cAAAA,EACAT,YAAAA,EACArJ,IAAAA,KAMAkrC,EAAAA,EAAAA,SAAAA,GACA,sBACA,WAA2B,kBAC3B,WAAiC,UAEjC,OADCA,EAAAA,EAAAA,EAAAA,IAAAA,GACDC,GAIAD,EAAAA,EAAAA,SAAAA,EAAAA,GAAsD,kDAGtDA,EAAAA,EAAAA,GAGAA,EAAAA,EAAAA,EAAAA,GDnDgB,CAAC,CAmEX,SAAU7xD,EAAQC,EAAS4xD,GErEjC,MAAgBA,EAAQ,GAKxB7xD,EAAAA,QAAmB6xD,EAAQ,EAARA,CAAmCE,EAAAA,WAAAC,IFyFhD,SAAUhyD,EAAQC,EAAS4xD,GAEjC,aGnGA7xD,EAAAA,QAAmB6xD,EAAQ,IH+GrB,SAAU7xD,EAAQC,EAAS4xD,GAEjC,aI3GA7xD,EAAOC,QAFP,gDJ8HM,SAAUD,EAAQiyD,EAAqBJ,GAE7C,aKpIA,SAASK,EAAc3/C,GACvB,0BAGA,SAAS4/C,EAAmBl2D,GAC5B,uBACA,YAGA,qBACA,8BAdA,IAAIm2D,EAAJ,SACAC,EAAAA,OACAjsC,EAAAA,GAee6rC,EAAAA,EAAAA,GL+IT,SAAUjyD,EAAQiyD,EAAqBJ,GAE7C,aAGA,SAASS,EAAcj6D,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAyB,MAAhBF,UAAUD,GAAaC,UAAUD,GAAAA,GAAao3B,EAAUv3B,OAAO0B,KAAKpB,GAAqD,mBAAjCN,OAAOy3B,wBAAwCF,EAAUA,EAAQtjB,OAAOjU,OAAOy3B,sBAAsBn3B,GAAQ2jB,QAAO,SAAU0T,GAAO,OAAO33B,OAAO43B,yBAAyBt3B,EAAQq3B,GAAKE,gBAAmBN,EAAQpwB,SAAQ,SAAU5G,GAAOw3B,EAAgB73B,EAAQK,EAAKD,EAAOC,OAAa,OAAOL,EAExd,SAAS63B,EAAgB3U,EAAK7iB,EAAK4D,GAAiK,OAApJ5D,KAAO6iB,EAAOpjB,OAAOk4B,eAAe9U,EAAK7iB,EAAAA,CAAO4D,MAAOA,EAAO0zB,YAAW,EAAOS,cAAa,EAAOC,UAAS,IAAmBnV,EAAI7iB,GAAO4D,EAAgBif,EAJtL,IAAIg3C,EAA2CV,EAAoB,GAC/DW,EAAmDX,EAAoBh2D,EAAE02D,GMnK5FE,EAAiB5wD,EAAAA,EAAUJ,UAAAA,CAC/BI,EAAAA,EAAUX,OACVW,EAAAA,EAAUb,SAIN0xD,EAAAA,CACJ3hD,YAAalP,EAAAA,EAAUL,MAAAA,CACrB,WACA,cAGFmxD,KAAM9wD,EAAAA,EAAUL,MAAAA,CACd,cACA,cAGFoxD,YAAa/wD,EAAAA,EAAUX,OACvB2xD,kBAAmBhxD,EAAAA,EAAUX,OAE7B/G,OAAQs4D,EACRK,aAAcL,EAEdj4D,MAAOi4D,EACPM,YAAaN,EAEb1mC,MAAOlqB,EAAAA,EAAUf,KAEjBkyD,WAAYnxD,EAAAA,EAAUf,KAEtBmyD,WAAYpxD,EAAAA,EAAUf,KACtBoyD,WAAYT,GAIRU,EAAQb,EAAAA,CACZc,eAAgBvxD,EAAAA,EAAUX,OAC1BmyD,eAAgBxxD,EAAAA,EAAUX,OAC1BoyD,qBAAsBzxD,EAAAA,EAAUX,OAChCqyD,qBAAsB1xD,EAAAA,EAAUX,OAEhCsyD,UAAWf,EACXt4B,UAAWs4B,EACXgB,gBAAiBhB,EACjBiB,gBAAiBjB,EAEjBkB,SAAUlB,EACVp4B,SAAUo4B,EACVmB,eAAgBnB,EAChBoB,eAAgBpB,EAEhBqB,SAAUjyD,EAAAA,EAAUb,OACpB+yD,SAAUlyD,EAAAA,EAAUb,OAEpBgzD,cAAenyD,EAAAA,EAAUb,OACzBizD,cAAepyD,EAAAA,EAAUb,OAEzBkzD,cAAeryD,EAAAA,EAAUb,OACzBmzD,cAAetyD,EAAAA,EAAUb,OAEzBozD,cAAe3B,EACf4B,cAAe5B,GAEZC,GAIC4B,EAAAA,CACJC,IAAK1yD,EAAAA,EAAUf,KACf0zD,KAAM3yD,EAAAA,EAAUf,KAChB2zD,MAAO5yD,EAAAA,EAAUf,KACjB4zD,QAAS7yD,EAAAA,EAAUf,KACnB6zD,SAAU9yD,EAAAA,EAAUf,KACpB8zD,MAAO/yD,EAAAA,EAAUf,KACjB+zD,WAAYhzD,EAAAA,EAAUf,KACtBg0D,OAAQjzD,EAAAA,EAAUf,KAClBi0D,IAAKlzD,EAAAA,EAAUf,KACfk0D,GAAInzD,EAAAA,EAAUf,KACdm0D,SAAUpzD,EAAAA,EAAUf,MAGhByzD,EAAGjC,EAAAA,GAAQgC,EAAUnB,GAG3BT,EAASn1D,KAAOpF,OAAO0B,KAAKy6D,GAEbrC,EAAAA,EAAAA,CACbsC,IAAKA,EACLD,MAAOA,EACP5B,SAAUA,EACVS,SAAUA,INoJN,SAAUnzD,EAAQiyD,EAAqBJ,GAE7C,aAeA,SAAS35D,IAA2Q,OAA9PA,EAAWC,OAAOC,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAcN,OAAOQ,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQL,EAAOK,GAAOD,EAAOC,IAAY,OAAOL,GAAkBH,EAASY,MAAMC,KAAMR,WAEhT,SAAS+3B,EAAQ/U,GAAwT,OAAtO+U,EAArD,mBAAX70B,QAAoD,iBAApBA,OAAOC,SAAmC,SAAiB6f,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAX9f,QAAyB8f,EAAIvf,cAAgBP,QAAU8f,IAAQ9f,OAAO9C,UAAY,gBAAkB4iB,IAAyBA,GAExV,SAAS2Y,EAAgBD,EAAUJ,GAAe,KAAMI,aAAoBJ,GAAgB,MAAM,IAAIt3B,UAAU,qCAEhH,SAASg0B,EAAkBl4B,EAAQqB,GAAS,IAAK,IAAIpB,EAAI,EAAGA,EAAIoB,EAAMlB,OAAQF,IAAK,CAAE,IAAIk4B,EAAa92B,EAAMpB,GAAIk4B,EAAWR,WAAaQ,EAAWR,aAAAA,EAAqBQ,EAAWC,cAAAA,EAAyB,UAAWD,IAAYA,EAAWE,UAAAA,GAAiBv4B,OAAOk4B,eAAeh4B,EAAQm4B,EAAW93B,IAAK83B,IAE7S,SAASsX,EAAajU,EAAaC,EAAYC,GAAmJ,OAAhID,GAAYvD,EAAkBsD,EAAYl7B,UAAWm7B,GAAiBC,GAAaxD,EAAkBsD,EAAaE,GAAqBF,EAEzM,SAAS3C,EAA2B5I,EAAMzvB,GAAQ,OAAIA,GAA2B,WAAlBy3B,EAAQz3B,IAAsC,mBAATA,EAA8Cm4B,EAAuB1I,GAAtCzvB,EAEnI,SAAS83B,EAAgBr1B,GAAwJ,OAAnJq1B,EAAkBx4B,OAAOy4B,eAAiBz4B,OAAO04B,eAAiB,SAAyBv1B,GAAK,OAAOA,EAAEw1B,WAAa34B,OAAO04B,eAAev1B,KAA8BA,GAExM,SAAS01B,EAAuB1I,GAAQ,YAAIA,EAAmB,MAAM,IAAI2I,eAAe,6DAAgE,OAAO3I,EAE/J,SAASsL,EAAUF,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIp3B,UAAU,sDAAyDm3B,EAAS/6B,UAAYR,OAAO2yB,OAAO6I,GAAcA,EAAWh7B,UAAAA,CAAaqD,YAAY,CAAGM,MAAOo3B,EAAUhD,UAAS,EAAOD,cAAa,KAAgBkD,GAAY5C,EAAgB2C,EAAUC,GAEnX,SAAS5C,EAAgBz1B,EAAG2I,GAA+G,OAA1G8sB,EAAkB54B,OAAOy4B,gBAAkB,SAAyBt1B,EAAG2I,GAAsB,OAAjB3I,EAAEw1B,UAAY7sB,EAAU3I,IAA6BA,EAAG2I,GAErK,SAASquD,EAAcj6D,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAyB,MAAhBF,UAAUD,GAAaC,UAAUD,GAAAA,GAAao3B,EAAUv3B,OAAO0B,KAAKpB,GAAqD,mBAAjCN,OAAOy3B,wBAAwCF,EAAUA,EAAQtjB,OAAOjU,OAAOy3B,sBAAsBn3B,GAAQ2jB,QAAO,SAAU0T,GAAO,OAAO33B,OAAO43B,yBAAyBt3B,EAAQq3B,GAAKE,gBAAmBN,EAAQpwB,SAAQ,SAAU5G,GAAOw3B,EAAgB73B,EAAQK,EAAKD,EAAOC,OAAa,OAAOL,EAExd,SAAS63B,EAAgB3U,EAAK7iB,EAAK4D,GAAiK,OAApJ5D,KAAO6iB,EAAOpjB,OAAOk4B,eAAe9U,EAAK7iB,EAAAA,CAAO4D,MAAOA,EAAO0zB,YAAW,EAAOS,cAAa,EAAOC,UAAS,IAAmBnV,EAAI7iB,GAAO4D,EAAgBif,EApC3MpjB,OAAOk4B,eAAe4hC,EAAqB,cAAgB31D,OAAM,IAClCu1D,EAAoBnvD,EAAEuvD,EAAqB,WAAW,WAAa,OAAOiD,KAC1ErD,EAAoBnvD,EAAEuvD,EAAqB,cAAc,WAAa,OAAOkD,KAC7EtD,EAAoBnvD,EAAEuvD,EAAqB,WAAW,WAAa,OAAOmD,KACpF,IAAIC,EAAsCxD,EAAoB,GAC1DyD,EAA8CzD,EAAoBh2D,EAAEw5D,GACpEE,EAA2C1D,EAAoB,GAC/D2D,EAAmD3D,EAAoBh2D,EAAE05D,GACzEE,EAAgD5D,EAAoB,IACpE6D,EAAwD7D,EAAoBh2D,EAAE45D,GAC9EE,EAAqD9D,EAAoB,GACzE+D,EAA4C/D,EAAoB,GAChEgE,EAAyChE,EAAoB,IACrDA,EAAoBnvD,EAAEuvD,EAAqB,WAAW,WAAa,OAAO4D,EAA0CvzD,KOzPrJ,IAAMwzD,EAAAA,CACJvuB,UAAW1lC,EAAAA,EAAU9D,KACrBg4D,MAAOl0D,EAAAA,EAAUX,OACjBygB,OAAQ9f,EAAAA,EAAUH,MAAMs0D,EAAAA,EAAWtD,UACnCr1D,SAAUwE,EAAAA,EAAUJ,UAAAA,CAAYI,EAAAA,EAAU9D,KAAM8D,EAAAA,EAAUd,OAC1D4wD,SAAU9vD,EAAAA,EAAUd,MAGhBk1D,EAAoB99D,OAAO0B,KAAKi8D,GAEhCI,EAAO,SAACj1D,EAAQpH,GACpB,IAAMs8D,EAAS7D,EAAAA,GAAQrxD,GAEvB,OADApH,EAAKyF,SAAQ,SAAA5G,GAAG,cAAWy9D,EAAUz9D,MAC9By9D,GAGHC,EAAY,SAAC,GAAe,IAAbz0C,EAAaxoB,EAAbwoB,OACnB,IAAKA,EAAQ,OAAO,KACpB,IAAM9nB,EAAO1B,OAAO0B,KAAK8nB,GACzB,OAAoB,IAAhB9nB,EAAKrB,OAAqB,KACvBqB,EAAKsM,QAAO,SAACuR,EAAQhf,GAE1B,OADAgf,EAAO2+C,OAAAA,EAAAA,EAAAA,CAAU39D,IAAQipB,EAAOjpB,GACzBgf,IAFF7d,KAMHy8D,EAAW,SAAC58D,GAAD,OACfA,EAAMq8D,OAASQ,OAAAA,EAAAA,EAAAA,CAAQL,EAAKx8D,EAAOu8D,KAE/Bd,EP8RN,SAAUqB,GAGR,SAASrB,IACP,IAAIsB,EAEA9wC,EAEJuO,EAAgBn7B,KAAMo8D,GAEtB,IAAK,IAAIx3D,EAAOpF,UAAUC,OAAQ2iB,EAAO,IAAI/f,MAAMuC,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/Esd,EAAKtd,GAAQtF,UAAUsF,GA+DzB,OA1DAqyB,EAAgBc,EAFhBrL,EAAQuL,EAA2Bn4B,MAAO09D,EAAmB9lC,EAAgBwkC,IAAat8D,KAAKC,MAAM29D,EAAAA,CAAmB19D,MAAMqT,OAAO+O,MAEtF,SOzR/C86B,SAAQ,EACRygB,GAAI,KACJX,MAAO,GACPp0C,OAAQ,OP6RRuO,EAAgBc,EAAuBrL,GAAQ,qBO1R7B,WAClBA,EAAK1K,MAAMy7C,GAAGC,YAAYhxC,EAAKixC,eAE/BjxC,EAAKixC,mBP8RL1mC,EAAgBc,EAAuBrL,GAAQ,sBO3R5B,SAAC+S,EAAWgJ,GAC3B/b,EAAK1K,MAAMy7C,KAAOh1B,EAAUg1B,KAC9B/wC,EAAKkxC,kBAAkBn1B,EAAUg1B,IACjC/wC,EAAK1K,MAAMy7C,GAAGC,YAAYhxC,EAAKixC,gBAK7BjxC,EAAKjsB,MAAMi4D,UAAYjwB,EAAUuU,UAAYtwB,EAAK1K,MAAMg7B,SAC1DtwB,EAAKjsB,MAAMi4D,SAAShsC,EAAK1K,MAAMg7B,YPiSjC/lB,EAAgBc,EAAuBrL,GAAQ,wBO7R1B,WACrBA,EAAKmxC,YAAAA,EACLnxC,EAAKkxC,kBAAkBlxC,EAAK1K,MAAMy7C,OPiSlCxmC,EAAgBc,EAAuBrL,GAAQ,qBO9R7B,SAAC+wC,GACdA,IACLA,EAAGK,eAAepxC,EAAKixC,eACvBF,EAAGltC,cPiSH0G,EAAgBc,EAAuBrL,GAAQ,iBO9RjC,WACVA,EAAKmxC,YACLnxC,EAAK1K,MAAMy7C,GAAGzgB,UAAYtwB,EAAK1K,MAAMg7B,SACzCtwB,EAAK+R,SAAAA,CAAWue,QAAStwB,EAAK1K,MAAMy7C,GAAGzgB,aPoSvC/lB,EAAgBc,EAAuBrL,GAAQ,UOjSxC,WACP,MAAmC,mBAAxBA,EAAKjsB,MAAM2D,SACbsoB,EAAKjsB,MAAM2D,SAASsoB,EAAK1K,MAAMg7B,SAEjCtwB,EAAK1K,MAAMg7B,QAAUtwB,EAAKjsB,MAAM2D,SAAW,QPqS3CsoB,EAqBT,OA9FAiO,EAAUuhC,EAAYqB,GA4EtB1uB,EAAaqtB,EAAY,OACvBz8D,IAAK,2BACL4D,MAAO,SOvWuB5C,EAAOuhB,GACrC,IAAM86C,EAAQO,EAAS58D,GACvB,IAAKq8D,EAAO,MAAM,IAAIj5D,MAAM,kCAC5B,IAAM6kB,EAASy0C,EAAU18D,GACzB,GAAIq8D,IAAU96C,EAAM86C,OAASp0C,IAAW1G,EAAM0G,OAAQ,OAAO,KAC7D,IAAM+0C,EAAK3gB,GAAAA,CAAWggB,EAAOp0C,GAAAA,KAAgBA,GAC7C,MAAM,CACJs0B,QAASygB,EAAGzgB,QACZygB,GAAAA,EACAX,MAAAA,EACAp0C,OAAAA,OP6WGwzC,EA/FT,CO9RyBrpC,EAAAA,EAAMub,WPgY/BnX,EOhYMilC,EPgYsB,cO/XL,cPiYvBjlC,EOlYMilC,EPkYsB,gBO/XxBxzC,OAAQ,OAoEZ,IAAMyzC,EAAUtpC,EAAAA,EAAMkrC,gBAEhB9B,EAA4B,SAAAx7D,GAChC,IAAMioB,EAASmK,EAAAA,EAAMmrC,WAAW7B,GAChC,OAAOE,EAAAA,EAAAA,cAACH,EAADG,EAAAA,CAAY3zC,OAAQA,GAAYjoB,KAGzCw7D,EAA0BlZ,YAAc,6BPsUlC,SAAUh8C,EAAQC,GQxbxBD,EAAOC,QAAPD,GR8bM,SAAUA,EAAQC,EAAS4xD,GAEjC,cSlbA,WAuBA,SAASqF,EAAmB35D,GAC5B,gDAEAA,IAAAA,GAAAA,IAAAA,GAAAA,IAAAA,GAAAA,IAAAA,GAAAA,IAAAA,GAAA,+GAwDA,SAAS45D,EAAOl2D,GAChB,iCACA,iBACA,UACA,OACA,aAEA,UACA,OACA,OACA,OACA,OACA,OACA,OACA,SACA,QACA,oBAEA,UACA,OACA,OACA,OACA,SACA,QACA,UAGA,OACA,OACA,OACA,WAyBA,SAASm2D,EAAYn2D,GAOrB,OALC,IACDo2D,GAAAA,EACAC,GAAAA,EAAAA,kLAGAC,EAAAA,IAAAA,EAAAA,KAAAA,EAEA,SAASA,EAAiBt2D,GAC1B,gBAEA,SAASu2D,EAAkBv2D,GAC3B,gBAEA,SAASw2D,EAAkBx2D,GAC3B,gBAEA,SAAS+wD,EAAU/wD,GACnB,mDAEA,SAASy2D,EAAaz2D,GACtB,gBAEA,SAAS02D,EAAW12D,GACpB,gBAEA,SAAS22D,EAAO32D,GAChB,gBAEA,SAAS42D,EAAO52D,GAChB,gBAEA,SAAS62D,EAAS72D,GAClB,gBAEA,SAAS82D,EAAW92D,GACpB,gBAEA,SAAS+2D,EAAa/2D,GACtB,gBAEA,SAASg3D,EAAWh3D,GACpB,gBAjLA9I,OAAOk4B,eAAepwB,EAAQ,aAA9B9H,CAA8CmE,OAAAA,IAI9C,IAAI47D,EAAJ,sCAEAC,EAAAA,EAAAA,OAAAA,IAAAA,iBAAAA,MACAC,EAAAA,EAAAA,OAAAA,IAAAA,gBAAAA,MACAC,EAAAA,EAAAA,OAAAA,IAAAA,kBAAAA,MACAC,EAAAA,EAAAA,OAAAA,IAAAA,qBAAAA,MACAC,EAAAA,EAAAA,OAAAA,IAAAA,kBAAAA,MACAC,EAAAA,EAAAA,OAAAA,IAAAA,kBAAAA,MACAC,EAAAA,EAAAA,OAAAA,IAAAA,iBAAAA,MACAC,EAAAA,EAAAA,OAAAA,IAAAA,oBAAAA,MACAC,EAAAA,EAAAA,OAAAA,IAAAA,yBAAAA,MACAC,EAAAA,EAAAA,OAAAA,IAAAA,qBAAAA,MACAC,EAAAA,EAAAA,OAAAA,IAAAA,kBAAAA,MACAC,EAAAA,EAAAA,OAAAA,IAAAA,cAAAA,MACAC,EAAAA,EAAAA,OAAAA,IAAAA,cAAAA,MAsBAC,EAAAA,aAGAC,EAAAA,SAAAA,GACA,kDAAsFp7D,EAAAA,EAAaA,IACnGsd,EAAAA,EAAAA,GAAAA,UAAAA,GAGA,QACA1Q,EAAAA,YAAAA,EAAAA,QAAAA,OAAAA,WACA,iBAEA,6BACAwG,QAAAA,KAAAA,GAEA,IAIA,mBACK,YAGL+nD,EAAAA,SAAAA,EAAAA,GACA,cACA,wGAEA,OACA,kDAA4FE,EAAAA,EAAeA,IAC3G/9C,EAAAA,EAAAA,GAAAA,UAAAA,GAGA89C,EAAAA,WAAAA,EAAAA,CAAAA,GAAAA,OAAAA,MAKA,IAAI3B,EAAJ,EAwCA6B,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EAEA1C,GAAAA,EAiDAp3D,EAAQk3D,OAARl3D,EACAA,EAAQk5D,UAARl5D,EACAA,EAAQm5D,eAARn5D,EACAA,EAAQo5D,gBAARp5D,EACAA,EAAQq5D,gBAARr5D,EACAA,EAAQs5D,QAARt5D,EACAA,EAAQu5D,WAARv5D,EACAA,EAAQw5D,SAARx5D,EACAA,EAAQy5D,KAARz5D,EACAA,EAAQ05D,KAAR15D,EACAA,EAAQ25D,OAAR35D,EACAA,EAAQ45D,SAAR55D,EACAA,EAAQ65D,WAAR75D,EACAA,EAAQ85D,SAAR95D,EACAA,EAAQi3D,mBAARj3D,EACAA,EAAQm3D,YAARn3D,EACAA,EAAQs3D,iBAARt3D,EACAA,EAAQu3D,kBAARv3D,EACAA,EAAQw3D,kBAARx3D,EACAA,EAAQ+xD,UAAR/xD,EACAA,EAAQy3D,aAARz3D,EACAA,EAAQ03D,WAAR13D,EACAA,EAAQ23D,OAAR33D,EACAA,EAAQ43D,OAAR53D,EACAA,EAAQ63D,SAAR73D,EACAA,EAAQ83D,WAAR93D,EACAA,EAAQ+3D,aAAR/3D,EACAA,EAAQg4D,WAARh4D,EAlNA,IT0pBM,SAAUD,EAAQC,EAAS4xD,GAEjC,aUzoBA,SAASmI,IACT,YAzBA,IAAIjI,EAAUF,EAAQ,GACtBz5D,EAAay5D,EAAQ,GAErBjyD,EAA2BiyD,EAAQ,GACnCjwD,EAAqBiwD,EAAQ,IAE7BvnC,EAAAA,SAAAA,KAAAA,KAAAA,OAAAA,UAAAA,gBACA2uC,EAAAA,aAGAA,EAAAA,SAAAA,GACA,oBACA,6BACAhoD,QAAAA,MAAAA,GAEA,IAIA,mBACK,YAQLjR,EAAOC,QAAPD,SAAAA,EAAAA,GAmBA,cACA,yBACA,wBACA,SAkFA,gBAEA,aAGA,gBAGAyH,IAAAA,GAAAA,IAAAA,EAYA,cACA1O,KAAAA,QAAAA,EACAA,KAAAA,MAAAA,GAKA,cAKA,0BAIA,GAHAqH,EAAAA,GAAAA,EACAE,EAAAA,GAAAA,EAEAC,IAAAA,EAAAA,CACA,MAEA,gBACA,qLAKA,MADC,EAADC,KAAAA,sBACAA,EACS,GAA8B,6BAEvC,eAEAy5D,EAAAA,IAEAC,EAAAA,IAEAjB,EACA,2EACA34D,EAAA,cAAAF,EAAA,wNAKA65D,EAAAA,IAAAA,EACAC,MAIA,kBACAx5D,EAEA,MADA,YACA,+EAEA,qFAEA,KAEA2W,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GA9CA,SACA6iD,EAAAA,EAiDAC,EAAAA,EAAAA,KAAAA,MAAAA,GAGA,OAFC,EAADA,WAAAA,EAAAA,KAAAA,MAAAA,GAEAA,EAGA,cACA,wBACA,WAEA,OADAC,EAAAA,KACAC,EAMA,wCAFAC,EAAAA,GAEA,4CAEA,KAEA,YAOA,cACA,sBACA,wBACA,oGAEA,WACA,qBAEA,+CADAF,EAAAA,GACA,6CAEA,YAAqB9hE,EAAAA,EAAAA,OAAsBA,IAAA,CAC3C,+BACA,sBACA,SAGA,YAEA,YA2BA,cACA,sBACA,wBACA,gBAEA,+CADAiiE,EAAAA,EAAAA,IACA,wDAEA,YAEA,YAGA,cAeA,sBAEA,QADC,EAADC,EAAAA,GACA,IAAqBliE,EAAAA,EAAAA,OAA2BA,IAChD,aACA,YAIA,sCAEA,iBADAgiE,EAAAA,GAEAltD,OAAAA,GAEA9Q,KAEA,2GA7BA,wBA+BAm+D,EAAAA,IA5BAxB,EADA1gE,UAAAA,OAAAA,EAEA,uKAIA,0DAGAyhE,GAuBA,cACA,sBACA,wBACA,qGAEA,WACAU,EAAAA,EAAAA,GACA,gBACA,+FAEA,eACA,WACA,2BACA,sBACA,SAIA,YAEA,YAGA,cAiBA,sBACA,YAAqBpiE,EAAAA,EAAAA,OAAgCA,IAErD,YADAqiE,EAAAA,IACA,aACA,YAIA,2DAxBA,qBAEA,OAD4C,EAAD1B,0EAC3Ce,EAGA,YAAmB1hE,EAAAA,EAAAA,OAAgCA,IAAA,CACnD,WACA,wBAKA,OAJC,EACD,8FACAsiE,EAAAA,GAAA,aAAAtiE,EAAA,KAEA0hE,EAcA,YAaA,cACA,sBACA,WACAU,EAAAA,EAAAA,GACA,gBACA,8FAEA,gBACA,WACA,MAGA,2BACA,KACA,UAGA,YAEA,YAGA,cACA,sBACA,WACAA,EAAAA,EAAAA,GACA,gBACA,8FAIA,WAA6BhhE,EAAAA,GAAAmhE,GAC7B,gBACA,WACA,MACA,aACA,uEACArjD,KAAAA,UAAAA,EAAAA,GAAAA,KAAAA,MACA,iBAAAA,KAAAA,UAAAA,OAAAA,KAAAA,GAAAA,KAAAA,OAGA,2BACA,KACA,SAGA,YAGA,YAGA,cACA,iBACA,aACA,aACA,gBACA,SACA,cACA,SACA,aACA,oBACA,kBAEA,kBACA,SAGA,WACA,MAqBA,SApBA,IACC,EADD,YAEA,kBACA,yBACA,eACA,cAKC,OAAD,mBACA,cACA,OACAsjD,EAAAA,EAAAA,IACA,SASA,SACA,QACA,UAIA,gBAEA,sBAKAN,IAKA,+BAKA,gDAQA,cACA,eACA,wBACA,QAEAA,aAAAA,OAIA,SAEAO,EAAAA,EAAAA,GACA,SAEAL,EAKA,cACA,wBACA,WAEA,WACA,iBACA,qBACA,aACO,uBACP,eAGA,SAKA,cACA,WACA,UACA,YACA,aACA,cACA,cACA,WACA,aACA,aACA,QACA,UAKA,cACA,yCAGAF,EAAAA,YAAAA,KAFAQ,EA7hBA,iDACAC,EAAAA,aAsEAD,EAAAA,gBAIAr6D,EAAAA,CACAC,MAAAA,EAAAA,SACAE,KAAAA,EAAAA,WACAC,KAAAA,EAAAA,YACAC,OAAAA,EAAAA,UACAC,OAAAA,EAAAA,UACAC,OAAAA,EAAAA,UACAC,OAAAA,EAAAA,UAEAC,IAyHA,KAxHAC,QAAAA,EACAzG,QA+IA,WACA,sBACA,WACA,YAIA,KAFA,wCADAw/D,EAAAA,GACA,0DAIA,YATA,GA9IA76D,YA0JA,WACA,sBACA,WACA,+BAIA,KAFA,wCADA66D,EAAAA,GACA,+DAIA,YATA,GAzJA94D,WAAAA,EACAvD,KAwQA,WACA,sBACA,eAGA,KAFA,0EAIA,YAPA,GAvQAwD,SAAAA,EACAC,MAAAA,EACAC,UAAAA,EACAC,MAAAA,EACAC,MAAAA,GAwcA,OAvaC,EAADu5D,UAAAA,MAAAA,UAmaAv6D,EAAAA,eAAAA,EACAA,EAAAA,kBAAAA,EAAAA,kBACAA,EAAAA,UAAAA,EAEAA,IVirBM,SAAUX,EAAQC,EAAS4xD,GAEjC,aWpvCA,SAASsJ,EAASrmD,GAClB,wBACA,6EAGA,iBATA,IAAI8a,EAAJ,6BACAh3B,EAAAA,OAAAA,UAAAA,eACAwiE,EAAAA,OAAAA,UAAAA,qBAsDAp7D,EAAOC,QA5CP,WACA,IACA,kBACA,SAMA,wBAEA,GADAo7D,EAAAA,GAAAA,KACA,uCACA,SAKA,QADAC,EAAAA,GACA,IAAiBhjE,EAAAA,GAAQA,IACzBgjE,EAAAA,IAAAA,OAAAA,aAAAA,IAAAA,EAKA,kBAHAnjE,OAAAA,oBAAAA,GAAAA,KAAAA,SAAAA,GACA,eAEAob,KAAA,IACA,SAIA,SAIA,MAHA,sDACAgoD,EAAAA,GAAAA,KAGA,yBADApjE,OAAAA,KAAAA,OAAAA,OAAAA,GAAkCojE,IAAAhoD,KAAA,IAMhC,SAEF,UAxCA,GA4CApb,OAAAA,OAAA,cAKA,QAJA+D,EAEA2zB,EADArE,EAAAA,EAAAA,GAGA,IAAgBzlB,EAAAA,UAAAA,OAAsBA,IAAA,CAGtC,aAFA7J,EAAAA,OAAAA,UAAAA,IAGAtD,EAAAA,KAAAA,EAAAA,KACA4yB,EAAAA,GAAAA,EAAAA,IAIA,MACAqE,EAAAA,EAAAA,GACA,YAAkBv3B,EAAAA,EAAAA,OAAoBA,IACtC8iE,EAAAA,KAAAA,EAAAA,EAAAA,MACA5vC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,MAMA,WXuwCM,SAAUxrB,EAAQC,EAAS4xD,GAEjC,aYxzCA,SAASjwD,EAAe45D,EAAU,EAAlC,OAEA,eACA,WACA,MAIA,IAGA,4BACA,aACAp7D,GAAAA,eAAA,KAAAC,EAAA,UAAAo7D,EAAA,oGACC,EAADD,GAAA,MAGA,MADC,EAADh7D,KAAAA,sBACAA,EAEA3D,EAAAA,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,KAAAA,GACS,SACTA,EAAAA,EAYA,IAVAA,GAAAA,aAAAA,OACAo8D,GACA74D,GAAAA,eAAA,2BACAC,EAAA,KAAAo7D,EAAA,kGACC,EAAD,kKAMA,uCAGAC,EAAAA,EAAAA,UAAAA,EAEA,eAEAzC,EACA,kDAzEA,IAAIA,EAAJ,aAGAr5D,EAA6BiyD,EAAQ,GACrC6J,EAAAA,GACApxC,EAAAA,SAAAA,KAAAA,KAAAA,OAAAA,UAAAA,gBAEA2uC,EAAAA,SAAAA,GACA,oBACA,6BACAhoD,QAAAA,MAAAA,GAEA,IAIA,mBACK,YAqELrP,EAAe7B,kBAAf6B,WAEA85D,EAAAA,IAIA17D,EAAOC,QAAPD,GZu2CM,SAAUA,EAAQC,EAAS4xD,GAEjC,aax8CA,SAAS8J,EAAI5F,EAAM,EAAnB,GAiBA,cACA6F,GACAA,EAAAA,YAAAA,GAIA,cACAA,GACAA,EAAAA,eAAAA,GAKA,cACAtzC,EAAAA,QAAAA,EAAAA,QACAA,EAAAA,MAAAA,EAAAA,MAGA,aACAszC,GACAA,EAAAA,eAAAA,GApCA,WACA,UACA,uBACA7iE,KAAAA,QAAAA,EAAAA,QACAA,KAAAA,MAAAA,EAAAA,MAEA6iE,EAAAA,YAAAA,QAEC,KAAD7iE,QAAAA,EAAAA,EAAAA,GACAA,KAAAA,MAAAA,EAGAA,KAAAA,YAAAA,EACAA,KAAAA,eAAAA,EACAA,KAAAA,QAAAA,EA2BA,SAASg9C,EAAWggB,EAAM,EAA1B,GACA,oBA/CA,IAAI8F,EAAchK,EAAQ,IAAgBt/C,MAC1CupD,EAAAA,oBAAAA,OAAAA,OAAAA,WAAAA,KAiDA97D,EAAOC,QAAPD,Gbo9CM,SAAUA,EAAQC,EAAS4xD,GAEjC,acv/CA,SAASkK,EAAW/F,EAAW,GAC/B,8BACA,gBAIAgG,EAAAA,QAAAA,EAAAA,MAAAA,EAAAA,OAAAA,EAAAA,KAGA,gBACA,SAGA,uCACA,gBACAC,EAAAA,EAAAA,SACAC,EAAAA,EAAAA,MACA5/D,EAAAA,EAAAA,GAGA,MAAyB,SAEzB,UACA,kBACA,WACA,yCAEA,YACA,aACA,mBACA,oBACA4/D,EAAAA,EAAAA,GACA5/D,EAAAA,EAAAA,GACA,MAEA,iBACA4/D,EAAAA,EAAAA,GACA5/D,EAAAA,EAAAA,GACA,MAEA,mBACA,0BACA,yBACA4/D,EAAAA,EAAAA,GACA5/D,EAAAA,EAAAA,GACA,MAEA,WACA,YACA,kBACA,iBACA4/D,EAAAA,SAAAA,EAAAA,KAAAA,EACA5/D,EAAAA,SAAAA,EAAAA,KAAAA,EAIA,UACA,sBACA,sBACA,yBAIA,uBAIA,SAAS6/D,EAAWnG,GACpB,qCAGA,OAFAD,EAAAA,EAAAA,QAEA,SACAkG,EAAAA,EAAAA,GACA1+D,EAAAA,EAAAA,GACA6+D,EAAAA,EAAAA,IAAAA,GACAC,EAAAA,GAmBA,OAjBC,EAADA,UAAAA,GAAAA,QAAAA,EAAAA,cACAA,EAAAA,KAAAA,EAAAA,EAAAA,cAAAA,MAGAD,EAAAA,EAAAA,MAAAA,gBAAAA,GAEAC,EAAAA,YAAAA,EAAAA,KAAAA,SAAAA,GACA,iBACAC,EAAAA,EAAAA,GAAAA,cAAAA,MAAAA,GAEA,OACAL,SAAAA,EAAAA,GACAK,QAAAA,EAAAA,GACAhgE,MAAAA,EAAAA,OAIA+/D,KAMA,SAASE,EAAUC,GACnB,IACC,EADD,YAQA,OALC,IAEDC,GADAC,EAAAA,EAAAA,MAAAA,yBACAD,GAAAA,EAAAA,IAGAA,EAGA,SAASE,EAAMzJ,GACf,oBAGA,OAFA9lD,OAAAA,GAAAA,MAAAA,GAAAA,IAGA,yBACA,uBACA,kBAIA,SAASwvD,EAAKpkE,GACd,oBAGA,OAFA4U,OAAAA,GAAAA,MAAAA,GAAAA,IAGA,SACA,sBACA,0BACA,6BACA,qBACA,qBACA,wBACA,kBAlJAnN,EAAQsS,MAARtS,EACAA,EAAQ0oD,MAAR1oD,EAIA,IAAI48D,EAAJ,sDACAC,EAAAA,gDACAC,EAAAA,uBACAC,EAAAA,+BACAC,EAAAA,qBd2pDM,SAAUj9D,EAAQiyD,EAAqBJ,GAE7C,aezqDA,SAASqL,EAAOh6D,EAAGoE,GACjB,IAAM61D,EAAU9G,OAAAA,EAAAA,EAAAA,CAAUnzD,GAM1B,MAHiB,iBAANoE,IACTA,EAAC,UAAMA,EAAN,YAECA,EACKpE,GAAAA,IAELoE,EACKQ,EAAO5E,GAEhB,WAAWi6D,EAAX,aAAuB71D,EAAvB,KAGF,SAASiM,EAAK6pD,GACZ,OAAOA,EAAM7pD,KAAK,SAtBpB,kBAGMzL,EAAS,SAAAu1D,GAAI,oBAAWA,IAsBfpL,EAAAA,EAAAA,SAAU12C,GACvB,IAAM+hD,EAAAA,GAON,OANAnlE,OAAO0B,KAAK68D,EAAAA,EAAGnC,KAAKj1D,SAAQ,SAAU4D,GACpC,IAAMoE,EAAIiU,EAAIrY,GACL,MAALoE,GACFg2D,EAAMzxD,KAAKqxD,EAAOh6D,EAAGoE,OAGlBiM,EAAK+pD,+BCjCdt9D,EAAOC,QAAU,CAAE,QAAW,EAAQ,OAAkCqoC,YAAY,0BCApFtoC,EAAOC,QAAU,CAAE,QAAW,EAAQ,MAAoCqoC,YAAY,0BCAtFtoC,EAAOC,QAAU,CAAE,QAAW,EAAQ,OAAmCqoC,YAAY,0BCArFtoC,EAAOC,QAAU,CAAE,QAAW,EAAQ,OAAqCqoC,YAAY,0BCAvFtoC,EAAOC,QAAU,CAAE,QAAW,EAAQ,OAAqCqoC,YAAY,0BCAvFtoC,EAAOC,QAAU,CAAE,QAAW,EAAQ,OAA8CqoC,YAAY,yBCAhGtoC,EAAOC,QAAU,CAAE,QAAW,EAAQ,OAA0DqoC,YAAY,0BCA5GtoC,EAAOC,QAAU,CAAE,QAAW,EAAQ,OAA+CqoC,YAAY,0BCAjGtoC,EAAOC,QAAU,CAAE,QAAW,EAAQ,OAAmCqoC,YAAY,0BCArFtoC,EAAOC,QAAU,CAAE,QAAW,EAAQ,OAA+CqoC,YAAY,0BCAjGtoC,EAAOC,QAAU,CAAE,QAAW,EAAQ,OAA+BqoC,YAAY,0BCAjFtoC,EAAOC,QAAU,CAAE,QAAW,EAAQ,OAA8BqoC,YAAY,0BCAhFtoC,EAAOC,QAAU,CAAE,QAAW,EAAQ,OAAuCqoC,YAAY,qCCIzFroC,EAAQ,EAAU,SAAUg0B,EAAUJ,GACpC,KAAMI,aAAoBJ,GACxB,MAAM,IAAIt3B,UAAU,0ECFxB,IAIgCgf,EAJ5B2U,EAAkB,EAAQ,OAE1BqtC,GAE4BhiD,EAFc2U,IAEO3U,EAAI+sB,WAAa/sB,EAAM,CAAEitB,QAASjtB,GAEvFtb,EAAQ,EAAU,WAChB,SAASmwB,EAAiB/3B,EAAQqB,GAChC,IAAK,IAAIpB,EAAI,EAAGA,EAAIoB,EAAMlB,OAAQF,IAAK,CACrC,IAAIk4B,EAAa92B,EAAMpB,GACvBk4B,EAAWR,WAAaQ,EAAWR,aAAc,EACjDQ,EAAWC,cAAe,EACtB,UAAWD,IAAYA,EAAWE,UAAW,IACjD,EAAI6sC,EAAiB/0B,SAASnwC,EAAQm4B,EAAW93B,IAAK83B,IAI1D,OAAO,SAAUqD,EAAaC,EAAYC,GAGxC,OAFID,GAAY1D,EAAiByD,EAAYl7B,UAAWm7B,GACpDC,GAAa3D,EAAiByD,EAAaE,GACxCF,GAdO,uCCNlB,IAIgCtY,EAJ5B2U,EAAkB,EAAQ,OAE1BqtC,GAE4BhiD,EAFc2U,IAEO3U,EAAI+sB,WAAa/sB,EAAM,CAAEitB,QAASjtB,GAEvFtb,EAAQ,EAAU,SAAUsb,EAAK7iB,EAAK4D,GAYpC,OAXI5D,KAAO6iB,GACT,EAAIgiD,EAAiB/0B,SAASjtB,EAAK7iB,EAAK,CACtC4D,MAAOA,EACP0zB,YAAY,EACZS,cAAc,EACdC,UAAU,IAGZnV,EAAI7iB,GAAO4D,EAGNif,uCClBT,IAIgCA,EAJ5BiiD,EAAU,EAAQ,OAElBC,GAE4BliD,EAFMiiD,IAEejiD,EAAI+sB,WAAa/sB,EAAM,CAAEitB,QAASjtB,GAEvFtb,EAAQ,EAAUw9D,EAASj1B,SAAW,SAAUnwC,GAC9C,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CACzC,IAAIG,EAASF,UAAUD,GAEvB,IAAK,IAAII,KAAOD,EACVN,OAAOQ,UAAUC,eAAeC,KAAKJ,EAAQC,KAC/CL,EAAOK,GAAOD,EAAOC,IAK3B,OAAOL,uCCjBT,IAEIqlE,EAAmBz1B,EAFD,EAAQ,QAM1B01B,EAAW11B,EAFD,EAAQ,QAMlB21B,EAAW31B,EAFA,EAAQ,QAIvB,SAASA,EAAuB1sB,GAAO,OAAOA,GAAOA,EAAI+sB,WAAa/sB,EAAM,CAAEitB,QAASjtB,GAEvFtb,EAAQ,EAAU,SAAUyzB,EAAUC,GACpC,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIp3B,UAAU,4DAAoF,qBAAfo3B,EAA6B,aAAc,EAAIiqC,EAASp1B,SAAS7U,KAG5JD,EAAS/6B,WAAY,EAAIglE,EAASn1B,SAAS7U,GAAcA,EAAWh7B,UAAW,CAC7EqD,YAAa,CACXM,MAAOo3B,EACP1D,YAAY,EACZU,UAAU,EACVD,cAAc,KAGdkD,IAAY+pC,EAAiBl1B,SAAU,EAAIk1B,EAAiBl1B,SAAS9U,EAAUC,GAAcD,EAAS5C,UAAY6C,sCC3BxH1zB,EAAQ,EAAU,SAAUsb,EAAK1hB,GAC/B,IAAIxB,EAAS,GAEb,IAAK,IAAIC,KAAKijB,EACR1hB,EAAKC,QAAQxB,IAAM,GAClBH,OAAOQ,UAAUC,eAAeC,KAAK0iB,EAAKjjB,KAC/CD,EAAOC,GAAKijB,EAAIjjB,IAGlB,OAAOD,uCCTT,IAIgCkjB,EAJ5BsiD,EAAW,EAAQ,OAEnBD,GAE4BriD,EAFMsiD,IAEetiD,EAAI+sB,WAAa/sB,EAAM,CAAEitB,QAASjtB,GAEvFtb,EAAQ,EAAU,SAAUqoB,EAAMzvB,GAChC,IAAKyvB,EACH,MAAM,IAAI2I,eAAe,6DAG3B,OAAOp4B,GAAuF,YAA7D,qBAATA,EAAuB,aAAc,EAAI+kE,EAASp1B,SAAS3vC,KAAuC,oBAATA,EAA8ByvB,EAAPzvB,uCCX1I,IAEIilE,EAAe71B,EAFA,EAAQ,QAMvB81B,EAAgB91B,EAFA,EAAQ,QAI5B,SAASA,EAAuB1sB,GAAO,OAAOA,GAAOA,EAAI+sB,WAAa/sB,EAAM,CAAEitB,QAASjtB,GAEvFtb,EAAQ,EA2BC,SAAUhF,EAAK3C,GACpB,GAAI8C,MAAMO,QAAQV,GAChB,OAAOA,EACF,IAAI,EAAI6iE,EAAat1B,SAASrwC,OAAO8C,IAC1C,OA9BJ,SAAuBA,EAAK3C,GAC1B,IAAI45B,EAAO,GACPC,GAAK,EACLC,GAAK,EACLH,OAAKvT,EAET,IACE,IAAK,IAA0CsT,EAAtClL,GAAK,EAAIi3C,EAAcv1B,SAASvtC,KAAYk3B,GAAMH,EAAKlL,EAAGtqB,QAAQH,QACzE61B,EAAKrmB,KAAKmmB,EAAG11B,QAEThE,GAAK45B,EAAK15B,SAAWF,GAHuD65B,GAAK,IAKvF,MAAO3xB,GACP4xB,GAAK,EACLH,EAAKzxB,EACL,QACA,KACO2xB,GAAMrL,EAAW,QAAGA,EAAW,SACpC,QACA,GAAIsL,EAAI,MAAMH,GAIlB,OAAOC,EAOE8rC,CAAc/iE,EAAK3C,GAE1B,MAAM,IAAIiE,UAAU,6FC3C1B,IAIgCgf,EAJ5B0iD,EAAQ,EAAQ,OAEhBC,GAE4B3iD,EAFI0iD,IAEiB1iD,EAAI+sB,WAAa/sB,EAAM,CAAEitB,QAASjtB,GAEvFtb,EAAQ,EAAU,SAAUhF,GAC1B,GAAIG,MAAMO,QAAQV,GAAM,CACtB,IAAK,IAAI3C,EAAI,EAAG6C,EAAOC,MAAMH,EAAIzC,QAASF,EAAI2C,EAAIzC,OAAQF,IACxD6C,EAAK7C,GAAK2C,EAAI3C,GAGhB,OAAO6C,EAEP,OAAO,EAAI+iE,EAAO11B,SAASvtC,wCChB/BgF,EAAQqoC,YAAa,EAErB,IAEIiI,EAAatI,EAFD,EAAQ,QAMpBk2B,EAAWl2B,EAFD,EAAQ,QAIlB3X,EAAsC,oBAArB6tC,EAAS31B,SAAwD,kBAAvB+H,EAAW/H,QAAuB,SAAUjtB,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAmC,oBAArB4iD,EAAS31B,SAA0BjtB,EAAIvf,cAAgBmiE,EAAS31B,SAAWjtB,IAAQ4iD,EAAS31B,QAAQ7vC,UAAY,gBAAkB4iB,GAEjT,SAAS0sB,EAAuB1sB,GAAO,OAAOA,GAAOA,EAAI+sB,WAAa/sB,EAAM,CAAEitB,QAASjtB,GAEvFtb,EAAA,QAA8C,oBAArBk+D,EAAS31B,SAA0D,WAAhClY,EAAQigB,EAAW/H,SAAwB,SAAUjtB,GAC/G,MAAsB,qBAARA,EAAsB,YAAc+U,EAAQ/U,IACxD,SAAUA,GACZ,OAAOA,GAAmC,oBAArB4iD,EAAS31B,SAA0BjtB,EAAIvf,cAAgBmiE,EAAS31B,SAAWjtB,IAAQ4iD,EAAS31B,QAAQ7vC,UAAY,SAA0B,qBAAR4iB,EAAsB,YAAc+U,EAAQ/U,mCCjBrM,SAAS6iD,EAAS97D,EAAGe,EAAGoc,GAClBnd,aAAa4T,SAAQ5T,EAAI+7D,EAAW/7D,EAAGmd,IACvCpc,aAAa6S,SAAQ7S,EAAIg7D,EAAWh7D,EAAGoc,IAE3C,IAAIzb,EAAIs6D,EAAMh8D,EAAGe,EAAGoc,GAEpB,OAAOzb,GAAK,CACVuZ,MAAOvZ,EAAE,GACT6e,IAAK7e,EAAE,GACPu6D,IAAK9+C,EAAI1jB,MAAM,EAAGiI,EAAE,IACpB9E,KAAMugB,EAAI1jB,MAAMiI,EAAE,GAAK1B,EAAE9J,OAAQwL,EAAE,IACnCw6D,KAAM/+C,EAAI1jB,MAAMiI,EAAE,GAAKX,EAAE7K,SAI7B,SAAS6lE,EAAWI,EAAKh/C,GACvB,IAAItc,EAAIsc,EAAIlN,MAAMksD,GAClB,OAAOt7D,EAAIA,EAAE,GAAK,KAIpB,SAASm7D,EAAMh8D,EAAGe,EAAGoc,GACnB,IAAIi/C,EAAMC,EAAKxjC,EAAMF,EAAOvjB,EACxBknD,EAAKn/C,EAAI3lB,QAAQwI,GACjBu8D,EAAKp/C,EAAI3lB,QAAQuJ,EAAGu7D,EAAK,GACzBtmE,EAAIsmE,EAER,GAAIA,GAAM,GAAKC,EAAK,EAAG,CACrB,GAAGv8D,IAAIe,EACL,MAAO,CAACu7D,EAAIC,GAKd,IAHAH,EAAO,GACPvjC,EAAO1b,EAAIjnB,OAEJF,GAAK,IAAMof,GACZpf,GAAKsmE,GACPF,EAAK7yD,KAAKvT,GACVsmE,EAAKn/C,EAAI3lB,QAAQwI,EAAGhK,EAAI,IACA,GAAfomE,EAAKlmE,OACdkf,EAAS,CAAEgnD,EAAK1xD,MAAO6xD,KAEvBF,EAAMD,EAAK1xD,OACDmuB,IACRA,EAAOwjC,EACP1jC,EAAQ4jC,GAGVA,EAAKp/C,EAAI3lB,QAAQuJ,EAAG/K,EAAI,IAG1BA,EAAIsmE,EAAKC,GAAMD,GAAM,EAAIA,EAAKC,EAG5BH,EAAKlmE,SACPkf,EAAS,CAAEyjB,EAAMF,IAIrB,OAAOvjB,EA3DT1X,EAAOC,QAAUm+D,EAqBjBA,EAASE,MAAQA,oCCpBjBr+D,EAAQ4C,WAuCR,SAAqBi8D,GACnB,IAAIC,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAC3B,OAAuC,GAA9BE,EAAWC,GAAuB,EAAKA,GA1ClDj/D,EAAQk/D,YAiDR,SAAsBL,GACpB,IAAI58C,EAcA5pB,EAbAymE,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAEvB9jE,EAAM,IAAImkE,EAVhB,SAAsBN,EAAKG,EAAUC,GACnC,OAAuC,GAA9BD,EAAWC,GAAuB,EAAKA,EAS9BG,CAAYP,EAAKG,EAAUC,IAEzCI,EAAU,EAGVpkE,EAAMgkE,EAAkB,EACxBD,EAAW,EACXA,EAGJ,IAAK3mE,EAAI,EAAGA,EAAI4C,EAAK5C,GAAK,EACxB4pB,EACGq9C,EAAUT,EAAI77D,WAAW3K,KAAO,GAChCinE,EAAUT,EAAI77D,WAAW3K,EAAI,KAAO,GACpCinE,EAAUT,EAAI77D,WAAW3K,EAAI,KAAO,EACrCinE,EAAUT,EAAI77D,WAAW3K,EAAI,IAC/B2C,EAAIqkE,KAAcp9C,GAAO,GAAM,IAC/BjnB,EAAIqkE,KAAcp9C,GAAO,EAAK,IAC9BjnB,EAAIqkE,KAAmB,IAANp9C,EAGK,IAApBg9C,IACFh9C,EACGq9C,EAAUT,EAAI77D,WAAW3K,KAAO,EAChCinE,EAAUT,EAAI77D,WAAW3K,EAAI,KAAO,EACvC2C,EAAIqkE,KAAmB,IAANp9C,GAGK,IAApBg9C,IACFh9C,EACGq9C,EAAUT,EAAI77D,WAAW3K,KAAO,GAChCinE,EAAUT,EAAI77D,WAAW3K,EAAI,KAAO,EACpCinE,EAAUT,EAAI77D,WAAW3K,EAAI,KAAO,EACvC2C,EAAIqkE,KAAcp9C,GAAO,EAAK,IAC9BjnB,EAAIqkE,KAAmB,IAANp9C,GAGnB,OAAOjnB,GA3FTgF,EAAQu/D,cAkHR,SAAwBC,GAQtB,IAPA,IAAIv9C,EACAhnB,EAAMukE,EAAMjnE,OACZknE,EAAaxkE,EAAM,EACnBya,EAAQ,GACRgqD,EAAiB,MAGZrnE,EAAI,EAAGsnE,EAAO1kE,EAAMwkE,EAAYpnE,EAAIsnE,EAAMtnE,GAAKqnE,EACtDhqD,EAAM9J,KAAKg0D,EAAYJ,EAAOnnE,EAAIA,EAAIqnE,EAAkBC,EAAOA,EAAQtnE,EAAIqnE,IAI1D,IAAfD,GACFx9C,EAAMu9C,EAAMvkE,EAAM,GAClBya,EAAM9J,KACJi0D,EAAO59C,GAAO,GACd49C,EAAQ59C,GAAO,EAAK,IACpB,OAEsB,IAAfw9C,IACTx9C,GAAOu9C,EAAMvkE,EAAM,IAAM,GAAKukE,EAAMvkE,EAAM,GAC1Cya,EAAM9J,KACJi0D,EAAO59C,GAAO,IACd49C,EAAQ59C,GAAO,EAAK,IACpB49C,EAAQ59C,GAAO,EAAK,IACpB,MAIJ,OAAOvM,EAAMpC,KAAK,KAzIpB,IALA,IAAIusD,EAAS,GACTP,EAAY,GACZH,EAA4B,qBAAfp9D,WAA6BA,WAAa5G,MAEvD2kE,EAAO,mEACFznE,EAAI,EAAG4C,EAAM6kE,EAAKvnE,OAAQF,EAAI4C,IAAO5C,EAC5CwnE,EAAOxnE,GAAKynE,EAAKznE,GACjBinE,EAAUQ,EAAK98D,WAAW3K,IAAMA,EAQlC,SAAS0mE,EAASF,GAChB,IAAI5jE,EAAM4jE,EAAItmE,OAEd,GAAI0C,EAAM,EAAI,EACZ,MAAM,IAAI4B,MAAM,kDAKlB,IAAImiE,EAAWH,EAAIhlE,QAAQ,KAO3B,OANkB,IAAdmlE,IAAiBA,EAAW/jE,GAMzB,CAAC+jE,EAJcA,IAAa/jE,EAC/B,EACA,EAAK+jE,EAAW,GAsEtB,SAASY,EAAaJ,EAAOliD,EAAOsF,GAGlC,IAFA,IAAIX,EARoB1F,EASpBwjD,EAAS,GACJ1nE,EAAIilB,EAAOjlB,EAAIuqB,EAAKvqB,GAAK,EAChC4pB,GACIu9C,EAAMnnE,IAAM,GAAM,WAClBmnE,EAAMnnE,EAAI,IAAM,EAAK,QACP,IAAfmnE,EAAMnnE,EAAI,IACb0nE,EAAOn0D,KAdFi0D,GADiBtjD,EAeM0F,IAdT,GAAK,IACxB49C,EAAOtjD,GAAO,GAAK,IACnBsjD,EAAOtjD,GAAO,EAAI,IAClBsjD,EAAa,GAANtjD,IAaT,OAAOwjD,EAAOzsD,KAAK,IAjGrBgsD,EAAU,IAAIt8D,WAAW,IAAM,GAC/Bs8D,EAAU,IAAIt8D,WAAW,IAAM,uCCjB/B,IAAIg9D,EAAQ,EAAQ,OAyFpB,SAASC,IACL,IAAIC,EAAc,GACd78C,EAAc,EACd88C,EAAc,EACdC,EAAc,EAqClB,MAAO,CACHzxB,IApCJ,SAAa0xB,EAAOn3C,GACZA,IACAA,EAAKm3C,EACLA,EAAQ,GAGTA,EAAQF,EACPA,EAAWE,EACLA,EAAQD,IACdA,EAAcC,GAGdH,EAAMG,KACNH,EAAMG,GAAS,IAGnBH,EAAMG,GAAOz0D,KAAKsd,GAClB7F,KAoBAgE,QAjBJ,WACI,IAAI,IAAIg5C,EAAQD,EAAaC,GAASF,EAAUE,IAG5C,IAFA,IAAIC,EAAMJ,EAAMG,GAERhoE,EAAI,EAAGA,EAAIioE,EAAI/nE,OAAQF,IAAK,EAEhC6wB,EADSo3C,EAAIjoE,QAarBgrB,KAPJ,WACI,OAAOA,IA7HftjB,EAAOC,QAAU,SAA6B2T,GAE1C,IAAI0F,GADJ1F,EAAsBA,GAAW,IACH0F,SAC1BknD,EAAkBP,EAAMQ,UAAU7sD,EAAS,SAAS,GACpD8sD,EAAkBT,EAAMQ,UAAU7sD,EAAS,QAAQ,GAEpD8sD,IAAgBF,IACflnD,GAAYA,EAASmwB,KAAK,0FAC1B+2B,GAAe,GAGnB,IACIG,EADAR,EAAQD,IAERU,GAAe,EAYnB,SAASC,IAIL,IADAD,GAAe,EACRT,EAAM78C,QAAQ,CACjB,IAAIw9C,EAAkBX,EACtBA,EAAQD,IACRY,EAAgBx5C,UAEpBs5C,GAAe,EAwBnB,SAASG,IAiBT,IAEuB53C,EAAAA,EAlBc03C,EAAjCF,EAkBgCthE,WAAW8pB,EAAI,GAInD,MAAO,CACHylB,IAnEJ,SAAqB0xB,EAAOn3C,IACpBy3C,GAAgBF,GAAeF,GAAiC,IAAjBL,EAAM78C,QAGrDy9C,IAGJZ,EAAMvxB,IAAI0xB,EAAOn3C,IA6DjB63C,MA9CJ,SAA2BC,GACnBL,SAIqBliD,IAAtBuiD,IACCA,EAAoBT,GAGrBG,IAyBUvhE,aAxBGuhE,GACZA,EAAoB,MAGrBM,EACCF,IAEAF,yCCxDA7gE,EAAOC,QAAU,IAEvBwgE,UAEN,SAAmB7sD,EAAS3X,EAAMw6C,GAC9B,IAAIn6C,EAAQsX,EAAQ3X,GAEpB,SAAcyiB,IAAVpiB,GAAiC,OAAVA,SAAoCoiB,IAAjB+3B,EAC1C,OAAOA,EAGX,OAAOn6C,2BCbX,SAAW0D,EAAQC,GACjB,aAGA,SAAS4a,EAAQ/F,EAAK8K,GACpB,IAAK9K,EAAK,MAAM,IAAIhY,MAAM8iB,GAAO,oBAKnC,SAAShH,EAAUsoD,EAAMC,GACvBD,EAAKE,OAASD,EACd,IAAIE,EAAW,aACfA,EAAS1oE,UAAYwoE,EAAUxoE,UAC/BuoE,EAAKvoE,UAAY,IAAI0oE,EACrBH,EAAKvoE,UAAUqD,YAAcklE,EAK/B,SAASI,EAAItgE,EAAQwX,EAAM+oD,GACzB,GAAID,EAAGE,KAAKxgE,GACV,OAAOA,EAGTjI,KAAK0oE,SAAW,EAChB1oE,KAAK2oE,MAAQ,KACb3oE,KAAKP,OAAS,EAGdO,KAAK4oE,IAAM,KAEI,OAAX3gE,IACW,OAATwX,GAA0B,OAATA,IACnB+oD,EAAS/oD,EACTA,EAAO,IAGTzf,KAAKojB,MAAMnb,GAAU,EAAGwX,GAAQ,GAAI+oD,GAAU,OAYlD,IAAI/nD,EATkB,kBAAXxZ,EACTA,EAAOC,QAAUqhE,EAEjBrhE,EAAQqhE,GAAKA,EAGfA,EAAGA,GAAKA,EACRA,EAAGM,SAAW,GAGd,IAEIpoD,EADoB,qBAAX3e,QAAmD,qBAAlBA,OAAO2e,OACxC3e,OAAO2e,OAEP,gBAEX,MAAOnX,IAgIT,SAASw/D,EAAe3gE,EAAQ6e,GAC9B,IAAIxd,EAAIrB,EAAO+B,WAAW8c,GAE1B,OAAIxd,GAAK,IAAMA,GAAK,GACXA,EAAI,GAEFA,GAAK,IAAMA,GAAK,IAClBA,EAAI,GAGHA,EAAI,GAAM,GAItB,SAASu/D,EAAc5gE,EAAQ6gE,EAAYhiD,GACzC,IAAI/b,EAAI69D,EAAc3gE,EAAQ6e,GAI9B,OAHIA,EAAQ,GAAKgiD,IACf/9D,GAAK69D,EAAc3gE,EAAQ6e,EAAQ,IAAM,GAEpC/b,EA8CT,SAASg+D,EAAWviD,EAAKlC,EAAOsF,EAAKo/C,GAGnC,IAFA,IAAIj+D,EAAI,EACJ9I,EAAMgJ,KAAKkD,IAAIqY,EAAIjnB,OAAQqqB,GACtBvqB,EAAIilB,EAAOjlB,EAAI4C,EAAK5C,IAAK,CAChC,IAAIiK,EAAIkd,EAAIxc,WAAW3K,GAAK,GAE5B0L,GAAKi+D,EAIHj+D,GADEzB,GAAK,GACFA,EAAI,GAAK,GAGLA,GAAK,GACTA,EAAI,GAAK,GAITA,EAGT,OAAOyB,EAnNTs9D,EAAGE,KAAO,SAAehlD,GACvB,OAAIA,aAAe8kD,GAIJ,OAAR9kD,GAA+B,kBAARA,GAC5BA,EAAIxgB,YAAY4lE,WAAaN,EAAGM,UAAYxmE,MAAMO,QAAQ6gB,EAAIklD,QAGlEJ,EAAGr6D,IAAM,SAAck0B,EAAMF,GAC3B,OAAIE,EAAK+mC,IAAIjnC,GAAS,EAAUE,EACzBF,GAGTqmC,EAAGl6D,IAAM,SAAc+zB,EAAMF,GAC3B,OAAIE,EAAK+mC,IAAIjnC,GAAS,EAAUE,EACzBF,GAGTqmC,EAAG3oE,UAAUwjB,MAAQ,SAAenb,EAAQwX,EAAM+oD,GAChD,GAAsB,kBAAXvgE,EACT,OAAOjI,KAAKopE,YAAYnhE,EAAQwX,EAAM+oD,GAGxC,GAAsB,kBAAXvgE,EACT,OAAOjI,KAAKqpE,WAAWphE,EAAQwX,EAAM+oD,GAG1B,QAAT/oD,IACFA,EAAO,IAETqC,EAAOrC,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,IAGnD,IAAI+E,EAAQ,EACM,OAFlBvc,EAASA,EAAOlF,WAAW+R,QAAQ,OAAQ,KAEhC,KACT0P,IACAxkB,KAAK0oE,SAAW,GAGdlkD,EAAQvc,EAAOxI,SACJ,KAATggB,EACFzf,KAAKspE,UAAUrhE,EAAQuc,EAAOgkD,IAE9BxoE,KAAKupE,WAAWthE,EAAQwX,EAAM+E,GACf,OAAXgkD,GACFxoE,KAAKqpE,WAAWrpE,KAAKkrB,UAAWzL,EAAM+oD,MAM9CD,EAAG3oE,UAAUwpE,YAAc,SAAsBnhE,EAAQwX,EAAM+oD,GACzDvgE,EAAS,IACXjI,KAAK0oE,SAAW,EAChBzgE,GAAUA,GAERA,EAAS,UACXjI,KAAK2oE,MAAQ,CAAW,SAAT1gE,GACfjI,KAAKP,OAAS,GACLwI,EAAS,kBAClBjI,KAAK2oE,MAAQ,CACF,SAAT1gE,EACCA,EAAS,SAAa,UAEzBjI,KAAKP,OAAS,IAEdqiB,EAAO7Z,EAAS,kBAChBjI,KAAK2oE,MAAQ,CACF,SAAT1gE,EACCA,EAAS,SAAa,SACvB,GAEFjI,KAAKP,OAAS,GAGD,OAAX+oE,GAGJxoE,KAAKqpE,WAAWrpE,KAAKkrB,UAAWzL,EAAM+oD,IAGxCD,EAAG3oE,UAAUypE,WAAa,SAAqBphE,EAAQwX,EAAM+oD,GAG3D,GADA1mD,EAAgC,kBAAlB7Z,EAAOxI,QACjBwI,EAAOxI,QAAU,EAGnB,OAFAO,KAAK2oE,MAAQ,CAAE,GACf3oE,KAAKP,OAAS,EACPO,KAGTA,KAAKP,OAAS0L,KAAK0I,KAAK5L,EAAOxI,OAAS,GACxCO,KAAK2oE,MAAQ,IAAItmE,MAAMrC,KAAKP,QAC5B,IAAK,IAAIF,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAC/BS,KAAK2oE,MAAMppE,GAAK,EAGlB,IAAIkK,EAAG6E,EACHk7D,EAAM,EACV,GAAe,OAAXhB,EACF,IAAKjpE,EAAI0I,EAAOxI,OAAS,EAAGgK,EAAI,EAAGlK,GAAK,EAAGA,GAAK,EAC9C+O,EAAIrG,EAAO1I,GAAM0I,EAAO1I,EAAI,IAAM,EAAM0I,EAAO1I,EAAI,IAAM,GACzDS,KAAK2oE,MAAMl/D,IAAO6E,GAAKk7D,EAAO,SAC9BxpE,KAAK2oE,MAAMl/D,EAAI,GAAM6E,IAAO,GAAKk7D,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACP//D,UAGC,GAAe,OAAX++D,EACT,IAAKjpE,EAAI,EAAGkK,EAAI,EAAGlK,EAAI0I,EAAOxI,OAAQF,GAAK,EACzC+O,EAAIrG,EAAO1I,GAAM0I,EAAO1I,EAAI,IAAM,EAAM0I,EAAO1I,EAAI,IAAM,GACzDS,KAAK2oE,MAAMl/D,IAAO6E,GAAKk7D,EAAO,SAC9BxpE,KAAK2oE,MAAMl/D,EAAI,GAAM6E,IAAO,GAAKk7D,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACP//D,KAIN,OAAOzJ,KAAKypE,SAyBdlB,EAAG3oE,UAAU0pE,UAAY,SAAoBrhE,EAAQuc,EAAOgkD,GAE1DxoE,KAAKP,OAAS0L,KAAK0I,MAAM5L,EAAOxI,OAAS+kB,GAAS,GAClDxkB,KAAK2oE,MAAQ,IAAItmE,MAAMrC,KAAKP,QAC5B,IAAK,IAAIF,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAC/BS,KAAK2oE,MAAMppE,GAAK,EAIlB,IAGI+O,EAHAk7D,EAAM,EACN//D,EAAI,EAGR,GAAe,OAAX++D,EACF,IAAKjpE,EAAI0I,EAAOxI,OAAS,EAAGF,GAAKilB,EAAOjlB,GAAK,EAC3C+O,EAAIy6D,EAAa9gE,EAAQuc,EAAOjlB,IAAMiqE,EACtCxpE,KAAK2oE,MAAMl/D,IAAU,SAAJ6E,EACbk7D,GAAO,IACTA,GAAO,GACP//D,GAAK,EACLzJ,KAAK2oE,MAAMl/D,IAAM6E,IAAM,IAEvBk7D,GAAO,OAKX,IAAKjqE,GADa0I,EAAOxI,OAAS+kB,GACX,IAAM,EAAIA,EAAQ,EAAIA,EAAOjlB,EAAI0I,EAAOxI,OAAQF,GAAK,EAC1E+O,EAAIy6D,EAAa9gE,EAAQuc,EAAOjlB,IAAMiqE,EACtCxpE,KAAK2oE,MAAMl/D,IAAU,SAAJ6E,EACbk7D,GAAO,IACTA,GAAO,GACP//D,GAAK,EACLzJ,KAAK2oE,MAAMl/D,IAAM6E,IAAM,IAEvBk7D,GAAO,EAKbxpE,KAAKypE,SA2BPlB,EAAG3oE,UAAU2pE,WAAa,SAAqBthE,EAAQwX,EAAM+E,GAE3DxkB,KAAK2oE,MAAQ,CAAE,GACf3oE,KAAKP,OAAS,EAGd,IAAK,IAAIiqE,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAWlqD,EAClEiqD,IAEFA,IACAC,EAAWA,EAAUlqD,EAAQ,EAO7B,IALA,IAAImqD,EAAQ3hE,EAAOxI,OAAS+kB,EACxBtX,EAAM08D,EAAQF,EACd5/C,EAAM3e,KAAKkD,IAAIu7D,EAAOA,EAAQ18D,GAAOsX,EAErCqlD,EAAO,EACFtqE,EAAIilB,EAAOjlB,EAAIuqB,EAAKvqB,GAAKmqE,EAChCG,EAAOZ,EAAUhhE,EAAQ1I,EAAGA,EAAImqE,EAASjqD,GAEzCzf,KAAK8pE,MAAMH,GACP3pE,KAAK2oE,MAAM,GAAKkB,EAAO,SACzB7pE,KAAK2oE,MAAM,IAAMkB,EAEjB7pE,KAAK+pE,OAAOF,GAIhB,GAAY,IAAR38D,EAAW,CACb,IAAIzB,EAAM,EAGV,IAFAo+D,EAAOZ,EAAUhhE,EAAQ1I,EAAG0I,EAAOxI,OAAQggB,GAEtClgB,EAAI,EAAGA,EAAI2N,EAAK3N,IACnBkM,GAAOgU,EAGTzf,KAAK8pE,MAAMr+D,GACPzL,KAAK2oE,MAAM,GAAKkB,EAAO,SACzB7pE,KAAK2oE,MAAM,IAAMkB,EAEjB7pE,KAAK+pE,OAAOF,GAIhB7pE,KAAKypE,SAGPlB,EAAG3oE,UAAUgiB,KAAO,SAAeooD,GACjCA,EAAKrB,MAAQ,IAAItmE,MAAMrC,KAAKP,QAC5B,IAAK,IAAIF,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAC/ByqE,EAAKrB,MAAMppE,GAAKS,KAAK2oE,MAAMppE,GAE7ByqE,EAAKvqE,OAASO,KAAKP,OACnBuqE,EAAKtB,SAAW1oE,KAAK0oE,SACrBsB,EAAKpB,IAAM5oE,KAAK4oE,KAGlBL,EAAG3oE,UAAUojB,MAAQ,WACnB,IAAI/X,EAAI,IAAIs9D,EAAG,MAEf,OADAvoE,KAAK4hB,KAAK3W,GACHA,GAGTs9D,EAAG3oE,UAAUqqE,QAAU,SAAkB1/C,GACvC,KAAOvqB,KAAKP,OAAS8qB,GACnBvqB,KAAK2oE,MAAM3oE,KAAKP,UAAY,EAE9B,OAAOO,MAITuoE,EAAG3oE,UAAU6pE,MAAQ,WACnB,KAAOzpE,KAAKP,OAAS,GAAqC,IAAhCO,KAAK2oE,MAAM3oE,KAAKP,OAAS,IACjDO,KAAKP,SAEP,OAAOO,KAAKkqE,aAGd3B,EAAG3oE,UAAUsqE,UAAY,WAKvB,OAHoB,IAAhBlqE,KAAKP,QAAkC,IAAlBO,KAAK2oE,MAAM,KAClC3oE,KAAK0oE,SAAW,GAEX1oE,MAGTuoE,EAAG3oE,UAAUuqE,QAAU,WACrB,OAAQnqE,KAAK4oE,IAAM,UAAY,SAAW5oE,KAAK+C,SAAS,IAAM,KAiChE,IAAIqnE,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,6BAGEC,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGhBC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UAsjB9D,SAASC,EAAYh7C,EAAM9L,EAAKhC,GAC9BA,EAAIinD,SAAWjlD,EAAIilD,SAAWn5C,EAAKm5C,SACnC,IAAIvmE,EAAOotB,EAAK9vB,OAASgkB,EAAIhkB,OAAU,EACvCgiB,EAAIhiB,OAAS0C,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAIoH,EAAoB,EAAhBgmB,EAAKo5C,MAAM,GACfr+D,EAAmB,EAAfmZ,EAAIklD,MAAM,GACd19D,EAAI1B,EAAIe,EAERkgE,EAAS,SAAJv/D,EACLw/D,EAASx/D,EAAI,SAAa,EAC9BwW,EAAIknD,MAAM,GAAK6B,EAEf,IAAK,IAAIrgE,EAAI,EAAGA,EAAIhI,EAAKgI,IAAK,CAM5B,IAHA,IAAIugE,EAASD,IAAU,GACnBE,EAAgB,SAARF,EACRG,EAAOz/D,KAAKkD,IAAIlE,EAAGsZ,EAAIhkB,OAAS,GAC3BgK,EAAI0B,KAAK+C,IAAI,EAAG/D,EAAIolB,EAAK9vB,OAAS,GAAIgK,GAAKmhE,EAAMnhE,IAAK,CAC7D,IAAIlK,EAAK4K,EAAIV,EAAK,EAIlBihE,IADAz/D,GAFA1B,EAAoB,EAAhBgmB,EAAKo5C,MAAMppE,KACf+K,EAAmB,EAAfmZ,EAAIklD,MAAMl/D,IACFkhE,GACG,SAAa,EAC5BA,EAAY,SAAJ1/D,EAEVwW,EAAIknD,MAAMx+D,GAAa,EAARwgE,EACfF,EAAiB,EAATC,EAQV,OANc,IAAVD,EACFhpD,EAAIknD,MAAMx+D,GAAa,EAARsgE,EAEfhpD,EAAIhiB,SAGCgiB,EAAIgoD,QAzlBblB,EAAG3oE,UAAUmD,SAAW,SAAmB0c,EAAMle,GAI/C,IAAIkgB,EACJ,GAHAlgB,EAAoB,EAAVA,GAAe,EAGZ,MAJbke,EAAOA,GAAQ,KAIa,QAATA,EAAgB,CACjCgC,EAAM,GAGN,IAFA,IAAI+nD,EAAM,EACNiB,EAAQ,EACHlrE,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAAK,CACpC,IAAI+O,EAAItO,KAAK2oE,MAAMppE,GACfsqE,GAA+B,UAArBv7D,GAAKk7D,EAAOiB,IAAmB1nE,SAAS,IAGpD0e,EADY,KADdgpD,EAASn8D,IAAO,GAAKk7D,EAAQ,WACVjqE,IAAMS,KAAKP,OAAS,EAC/B2qE,EAAM,EAAIP,EAAKpqE,QAAUoqE,EAAOpoD,EAEhCooD,EAAOpoD,GAEf+nD,GAAO,IACI,KACTA,GAAO,GACPjqE,KAMJ,IAHc,IAAVkrE,IACFhpD,EAAMgpD,EAAM1nE,SAAS,IAAM0e,GAEtBA,EAAIhiB,OAAS8B,IAAY,GAC9BkgB,EAAM,IAAMA,EAKd,OAHsB,IAAlBzhB,KAAK0oE,WACPjnD,EAAM,IAAMA,GAEPA,EAGT,GAAIhC,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAIorD,EAAYR,EAAW5qD,GAEvBqrD,EAAYR,EAAW7qD,GAC3BgC,EAAM,GACN,IAAIjY,EAAIxJ,KAAKgjB,QAEb,IADAxZ,EAAEk/D,SAAW,GACLl/D,EAAEuhE,UAAU,CAClB,IAAI9/D,EAAIzB,EAAEwhE,KAAKF,GAAW/nE,SAAS0c,GAMjCgC,GALFjY,EAAIA,EAAEyhE,MAAMH,IAELC,SAGC9/D,EAAIwW,EAFJ2oD,EAAMS,EAAY5/D,EAAExL,QAAUwL,EAAIwW,EAQ5C,IAHIzhB,KAAK+qE,WACPtpD,EAAM,IAAMA,GAEPA,EAAIhiB,OAAS8B,IAAY,GAC9BkgB,EAAM,IAAMA,EAKd,OAHsB,IAAlBzhB,KAAK0oE,WACPjnD,EAAM,IAAMA,GAEPA,EAGTK,GAAO,EAAO,oCAGhBymD,EAAG3oE,UAAUsrE,SAAW,WACtB,IAAIx4C,EAAM1yB,KAAK2oE,MAAM,GASrB,OARoB,IAAhB3oE,KAAKP,OACPizB,GAAuB,SAAhB1yB,KAAK2oE,MAAM,GACO,IAAhB3oE,KAAKP,QAAkC,IAAlBO,KAAK2oE,MAAM,GAEzCj2C,GAAO,iBAAoC,SAAhB1yB,KAAK2oE,MAAM,GAC7B3oE,KAAKP,OAAS,GACvBqiB,GAAO,EAAO,8CAEU,IAAlB9hB,KAAK0oE,UAAmBh2C,EAAMA,GAGxC61C,EAAG3oE,UAAUurE,OAAS,WACpB,OAAOnrE,KAAK+C,SAAS,KAGvBwlE,EAAG3oE,UAAUwrE,SAAW,SAAmB5C,EAAQ/oE,GAEjD,OADAqiB,EAAyB,qBAAXrB,GACPzgB,KAAKqrE,YAAY5qD,EAAQ+nD,EAAQ/oE,IAG1C8oE,EAAG3oE,UAAUsrB,QAAU,SAAkBs9C,EAAQ/oE,GAC/C,OAAOO,KAAKqrE,YAAYhpE,MAAOmmE,EAAQ/oE,IAGzC8oE,EAAG3oE,UAAUyrE,YAAc,SAAsBC,EAAW9C,EAAQ/oE,GAClE,IAAIqK,EAAa9J,KAAK8J,aAClByhE,EAAY9rE,GAAU0L,KAAK+C,IAAI,EAAGpE,GACtCgY,EAAOhY,GAAcyhE,EAAW,yCAChCzpD,EAAOypD,EAAY,EAAG,+BAEtBvrE,KAAKypE,QACL,IAGIn/D,EAAG/K,EAHHisE,EAA0B,OAAXhD,EACflnD,EAAM,IAAIgqD,EAAUC,GAGpBvgE,EAAIhL,KAAKgjB,QACb,GAAKwoD,EAYE,CACL,IAAKjsE,EAAI,GAAIyL,EAAE+/D,SAAUxrE,IACvB+K,EAAIU,EAAEygE,MAAM,KACZzgE,EAAE0gE,OAAO,GAETpqD,EAAI/hB,GAAK+K,EAGX,KAAO/K,EAAIgsE,EAAWhsE,IACpB+hB,EAAI/hB,GAAK,MArBM,CAEjB,IAAKA,EAAI,EAAGA,EAAIgsE,EAAYzhE,EAAYvK,IACtC+hB,EAAI/hB,GAAK,EAGX,IAAKA,EAAI,GAAIyL,EAAE+/D,SAAUxrE,IACvB+K,EAAIU,EAAEygE,MAAM,KACZzgE,EAAE0gE,OAAO,GAETpqD,EAAIiqD,EAAYhsE,EAAI,GAAK+K,EAe7B,OAAOgX,GAGLnW,KAAKwgE,MACPpD,EAAG3oE,UAAUgsE,WAAa,SAAqBt9D,GAC7C,OAAO,GAAKnD,KAAKwgE,MAAMr9D,IAGzBi6D,EAAG3oE,UAAUgsE,WAAa,SAAqBt9D,GAC7C,IAAI1B,EAAI0B,EACJrD,EAAI,EAiBR,OAhBI2B,GAAK,OACP3B,GAAK,GACL2B,KAAO,IAELA,GAAK,KACP3B,GAAK,EACL2B,KAAO,GAELA,GAAK,IACP3B,GAAK,EACL2B,KAAO,GAELA,GAAK,IACP3B,GAAK,EACL2B,KAAO,GAEF3B,EAAI2B,GAIf27D,EAAG3oE,UAAUisE,UAAY,SAAoBv9D,GAE3C,GAAU,IAANA,EAAS,OAAO,GAEpB,IAAI1B,EAAI0B,EACJrD,EAAI,EAoBR,OAnBqB,KAAZ,KAAJ2B,KACH3B,GAAK,GACL2B,KAAO,IAEU,KAAV,IAAJA,KACH3B,GAAK,EACL2B,KAAO,GAES,KAAT,GAAJA,KACH3B,GAAK,EACL2B,KAAO,GAES,KAAT,EAAJA,KACH3B,GAAK,EACL2B,KAAO,GAES,KAAT,EAAJA,IACH3B,IAEKA,GAITs9D,EAAG3oE,UAAUqP,UAAY,WACvB,IAAIX,EAAItO,KAAK2oE,MAAM3oE,KAAKP,OAAS,GAC7BqsE,EAAK9rE,KAAK4rE,WAAWt9D,GACzB,OAA2B,IAAnBtO,KAAKP,OAAS,GAAUqsE,GAiBlCvD,EAAG3oE,UAAUmsE,SAAW,WACtB,GAAI/rE,KAAK+qE,SAAU,OAAO,EAG1B,IADA,IAAI9/D,EAAI,EACC1L,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAAK,CACpC,IAAI+K,EAAItK,KAAK6rE,UAAU7rE,KAAK2oE,MAAMppE,IAElC,GADA0L,GAAKX,EACK,KAANA,EAAU,MAEhB,OAAOW,GAGTs9D,EAAG3oE,UAAUkK,WAAa,WACxB,OAAOqB,KAAK0I,KAAK7T,KAAKiP,YAAc,IAGtCs5D,EAAG3oE,UAAUosE,OAAS,SAAiBvqE,GACrC,OAAsB,IAAlBzB,KAAK0oE,SACA1oE,KAAK0N,MAAMu+D,MAAMxqE,GAAOyqE,MAAM,GAEhClsE,KAAKgjB,SAGdulD,EAAG3oE,UAAUusE,SAAW,SAAmB1qE,GACzC,OAAIzB,KAAKosE,MAAM3qE,EAAQ,GACdzB,KAAKqsE,KAAK5qE,GAAOyqE,MAAM,GAAGI,OAE5BtsE,KAAKgjB,SAGdulD,EAAG3oE,UAAU2sE,MAAQ,WACnB,OAAyB,IAAlBvsE,KAAK0oE,UAIdH,EAAG3oE,UAAU4sE,IAAM,WACjB,OAAOxsE,KAAKgjB,QAAQspD,QAGtB/D,EAAG3oE,UAAU0sE,KAAO,WAKlB,OAJKtsE,KAAK+qE,WACR/qE,KAAK0oE,UAAY,GAGZ1oE,MAITuoE,EAAG3oE,UAAU6sE,KAAO,SAAehpD,GACjC,KAAOzjB,KAAKP,OAASgkB,EAAIhkB,QACvBO,KAAK2oE,MAAM3oE,KAAKP,UAAY,EAG9B,IAAK,IAAIF,EAAI,EAAGA,EAAIkkB,EAAIhkB,OAAQF,IAC9BS,KAAK2oE,MAAMppE,GAAKS,KAAK2oE,MAAMppE,GAAKkkB,EAAIklD,MAAMppE,GAG5C,OAAOS,KAAKypE,SAGdlB,EAAG3oE,UAAU8sE,IAAM,SAAcjpD,GAE/B,OADA3B,EAA0C,KAAlC9hB,KAAK0oE,SAAWjlD,EAAIilD,WACrB1oE,KAAKysE,KAAKhpD,IAInB8kD,EAAG3oE,UAAU+sE,GAAK,SAAalpD,GAC7B,OAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQ0pD,IAAIjpD,GAC/CA,EAAIT,QAAQ0pD,IAAI1sE,OAGzBuoE,EAAG3oE,UAAUgtE,IAAM,SAAcnpD,GAC/B,OAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQypD,KAAKhpD,GAChDA,EAAIT,QAAQypD,KAAKzsE,OAI1BuoE,EAAG3oE,UAAUitE,MAAQ,SAAgBppD,GAEnC,IAAInZ,EAEFA,EADEtK,KAAKP,OAASgkB,EAAIhkB,OAChBgkB,EAEAzjB,KAGN,IAAK,IAAIT,EAAI,EAAGA,EAAI+K,EAAE7K,OAAQF,IAC5BS,KAAK2oE,MAAMppE,GAAKS,KAAK2oE,MAAMppE,GAAKkkB,EAAIklD,MAAMppE,GAK5C,OAFAS,KAAKP,OAAS6K,EAAE7K,OAETO,KAAKypE,SAGdlB,EAAG3oE,UAAUktE,KAAO,SAAerpD,GAEjC,OADA3B,EAA0C,KAAlC9hB,KAAK0oE,SAAWjlD,EAAIilD,WACrB1oE,KAAK6sE,MAAMppD,IAIpB8kD,EAAG3oE,UAAUmtE,IAAM,SAActpD,GAC/B,OAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQ8pD,KAAKrpD,GAChDA,EAAIT,QAAQ8pD,KAAK9sE,OAG1BuoE,EAAG3oE,UAAUotE,KAAO,SAAevpD,GACjC,OAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQ6pD,MAAMppD,GACjDA,EAAIT,QAAQ6pD,MAAM7sE,OAI3BuoE,EAAG3oE,UAAUqtE,MAAQ,SAAgBxpD,GAEnC,IAAIla,EACAe,EACAtK,KAAKP,OAASgkB,EAAIhkB,QACpB8J,EAAIvJ,KACJsK,EAAImZ,IAEJla,EAAIka,EACJnZ,EAAItK,MAGN,IAAK,IAAIT,EAAI,EAAGA,EAAI+K,EAAE7K,OAAQF,IAC5BS,KAAK2oE,MAAMppE,GAAKgK,EAAEo/D,MAAMppE,GAAK+K,EAAEq+D,MAAMppE,GAGvC,GAAIS,OAASuJ,EACX,KAAOhK,EAAIgK,EAAE9J,OAAQF,IACnBS,KAAK2oE,MAAMppE,GAAKgK,EAAEo/D,MAAMppE,GAM5B,OAFAS,KAAKP,OAAS8J,EAAE9J,OAETO,KAAKypE,SAGdlB,EAAG3oE,UAAUstE,KAAO,SAAezpD,GAEjC,OADA3B,EAA0C,KAAlC9hB,KAAK0oE,SAAWjlD,EAAIilD,WACrB1oE,KAAKitE,MAAMxpD,IAIpB8kD,EAAG3oE,UAAUutE,IAAM,SAAc1pD,GAC/B,OAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQkqD,KAAKzpD,GAChDA,EAAIT,QAAQkqD,KAAKltE,OAG1BuoE,EAAG3oE,UAAUwtE,KAAO,SAAe3pD,GACjC,OAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQiqD,MAAMxpD,GACjDA,EAAIT,QAAQiqD,MAAMjtE,OAI3BuoE,EAAG3oE,UAAUqsE,MAAQ,SAAgBxqE,GACnCqgB,EAAwB,kBAAVrgB,GAAsBA,GAAS,GAE7C,IAAI4rE,EAAsC,EAAxBliE,KAAK0I,KAAKpS,EAAQ,IAChC6rE,EAAW7rE,EAAQ,GAGvBzB,KAAKiqE,QAAQoD,GAETC,EAAW,GACbD,IAIF,IAAK,IAAI9tE,EAAI,EAAGA,EAAI8tE,EAAa9tE,IAC/BS,KAAK2oE,MAAMppE,GAAsB,UAAhBS,KAAK2oE,MAAMppE,GAS9B,OALI+tE,EAAW,IACbttE,KAAK2oE,MAAMppE,IAAMS,KAAK2oE,MAAMppE,GAAM,UAAc,GAAK+tE,GAIhDttE,KAAKypE,SAGdlB,EAAG3oE,UAAUysE,KAAO,SAAe5qE,GACjC,OAAOzB,KAAKgjB,QAAQipD,MAAMxqE,IAI5B8mE,EAAG3oE,UAAU2tE,KAAO,SAAeC,EAAKzxD,GACtC+F,EAAsB,kBAAR0rD,GAAoBA,GAAO,GAEzC,IAAIhE,EAAOgE,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAUjB,OARAxtE,KAAKiqE,QAAQT,EAAM,GAGjBxpE,KAAK2oE,MAAMa,GADTztD,EACgB/b,KAAK2oE,MAAMa,GAAQ,GAAKiE,EAExBztE,KAAK2oE,MAAMa,KAAS,GAAKiE,GAGtCztE,KAAKypE,SAIdlB,EAAG3oE,UAAU8tE,KAAO,SAAejqD,GACjC,IAAIxY,EAkBA1B,EAAGe,EAfP,GAAsB,IAAlBtK,KAAK0oE,UAAmC,IAAjBjlD,EAAIilD,SAI7B,OAHA1oE,KAAK0oE,SAAW,EAChBz9D,EAAIjL,KAAK2tE,KAAKlqD,GACdzjB,KAAK0oE,UAAY,EACV1oE,KAAKkqE,YAGP,GAAsB,IAAlBlqE,KAAK0oE,UAAmC,IAAjBjlD,EAAIilD,SAIpC,OAHAjlD,EAAIilD,SAAW,EACfz9D,EAAIjL,KAAK2tE,KAAKlqD,GACdA,EAAIilD,SAAW,EACRz9D,EAAEi/D,YAKPlqE,KAAKP,OAASgkB,EAAIhkB,QACpB8J,EAAIvJ,KACJsK,EAAImZ,IAEJla,EAAIka,EACJnZ,EAAItK,MAIN,IADA,IAAIyqE,EAAQ,EACHlrE,EAAI,EAAGA,EAAI+K,EAAE7K,OAAQF,IAC5B0L,GAAkB,EAAb1B,EAAEo/D,MAAMppE,KAAwB,EAAb+K,EAAEq+D,MAAMppE,IAAUkrE,EAC1CzqE,KAAK2oE,MAAMppE,GAAS,SAAJ0L,EAChBw/D,EAAQx/D,IAAM,GAEhB,KAAiB,IAAVw/D,GAAelrE,EAAIgK,EAAE9J,OAAQF,IAClC0L,GAAkB,EAAb1B,EAAEo/D,MAAMppE,IAAUkrE,EACvBzqE,KAAK2oE,MAAMppE,GAAS,SAAJ0L,EAChBw/D,EAAQx/D,IAAM,GAIhB,GADAjL,KAAKP,OAAS8J,EAAE9J,OACF,IAAVgrE,EACFzqE,KAAK2oE,MAAM3oE,KAAKP,QAAUgrE,EAC1BzqE,KAAKP,cAEA,GAAI8J,IAAMvJ,KACf,KAAOT,EAAIgK,EAAE9J,OAAQF,IACnBS,KAAK2oE,MAAMppE,GAAKgK,EAAEo/D,MAAMppE,GAI5B,OAAOS,MAITuoE,EAAG3oE,UAAUi2C,IAAM,SAAcpyB,GAC/B,IAAInC,EACJ,OAAqB,IAAjBmC,EAAIilD,UAAoC,IAAlB1oE,KAAK0oE,UAC7BjlD,EAAIilD,SAAW,EACfpnD,EAAMthB,KAAK4tE,IAAInqD,GACfA,EAAIilD,UAAY,EACTpnD,GACmB,IAAjBmC,EAAIilD,UAAoC,IAAlB1oE,KAAK0oE,UACpC1oE,KAAK0oE,SAAW,EAChBpnD,EAAMmC,EAAImqD,IAAI5tE,MACdA,KAAK0oE,SAAW,EACTpnD,GAGLthB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQ0qD,KAAKjqD,GAEhDA,EAAIT,QAAQ0qD,KAAK1tE,OAI1BuoE,EAAG3oE,UAAU+tE,KAAO,SAAelqD,GAEjC,GAAqB,IAAjBA,EAAIilD,SAAgB,CACtBjlD,EAAIilD,SAAW,EACf,IAAIz9D,EAAIjL,KAAK0tE,KAAKjqD,GAElB,OADAA,EAAIilD,SAAW,EACRz9D,EAAEi/D,YAGJ,GAAsB,IAAlBlqE,KAAK0oE,SAId,OAHA1oE,KAAK0oE,SAAW,EAChB1oE,KAAK0tE,KAAKjqD,GACVzjB,KAAK0oE,SAAW,EACT1oE,KAAKkqE,YAId,IAWI3gE,EAAGe,EAXH6+D,EAAMnpE,KAAKmpE,IAAI1lD,GAGnB,GAAY,IAAR0lD,EAIF,OAHAnpE,KAAK0oE,SAAW,EAChB1oE,KAAKP,OAAS,EACdO,KAAK2oE,MAAM,GAAK,EACT3oE,KAKLmpE,EAAM,GACR5/D,EAAIvJ,KACJsK,EAAImZ,IAEJla,EAAIka,EACJnZ,EAAItK,MAIN,IADA,IAAIyqE,EAAQ,EACHlrE,EAAI,EAAGA,EAAI+K,EAAE7K,OAAQF,IAE5BkrE,GADAx/D,GAAkB,EAAb1B,EAAEo/D,MAAMppE,KAAwB,EAAb+K,EAAEq+D,MAAMppE,IAAUkrE,IAC7B,GACbzqE,KAAK2oE,MAAMppE,GAAS,SAAJ0L,EAElB,KAAiB,IAAVw/D,GAAelrE,EAAIgK,EAAE9J,OAAQF,IAElCkrE,GADAx/D,GAAkB,EAAb1B,EAAEo/D,MAAMppE,IAAUkrE,IACV,GACbzqE,KAAK2oE,MAAMppE,GAAS,SAAJ0L,EAIlB,GAAc,IAAVw/D,GAAelrE,EAAIgK,EAAE9J,QAAU8J,IAAMvJ,KACvC,KAAOT,EAAIgK,EAAE9J,OAAQF,IACnBS,KAAK2oE,MAAMppE,GAAKgK,EAAEo/D,MAAMppE,GAU5B,OANAS,KAAKP,OAAS0L,KAAK+C,IAAIlO,KAAKP,OAAQF,GAEhCgK,IAAMvJ,OACRA,KAAK0oE,SAAW,GAGX1oE,KAAKypE,SAIdlB,EAAG3oE,UAAUguE,IAAM,SAAcnqD,GAC/B,OAAOzjB,KAAKgjB,QAAQ2qD,KAAKlqD,IA+C3B,IAAIoqD,EAAc,SAAsBt+C,EAAM9L,EAAKhC,GACjD,IAII+oD,EACAsD,EACAhC,EANAviE,EAAIgmB,EAAKo5C,MACTr+D,EAAImZ,EAAIklD,MACRpmE,EAAIkf,EAAIknD,MACRn/D,EAAI,EAIJukE,EAAY,EAAPxkE,EAAE,GACPykE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP3kE,EAAE,GACP4kE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP9kE,EAAE,GACP+kE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPjlE,EAAE,GACPklE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPplE,EAAE,GACPqlE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPvlE,EAAE,GACPwlE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP1lE,EAAE,GACP2lE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP7lE,EAAE,GACP8lE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPhmE,EAAE,GACPimE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPnmE,EAAE,GACPomE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPvlE,EAAE,GACPwlE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP1lE,EAAE,GACP2lE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP7lE,EAAE,GACP8lE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPhmE,EAAE,GACPimE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPnmE,EAAE,GACPomE,EAAW,KAALD,EACNE,GAAMF,IAAO,GACbG,GAAY,EAAPtmE,EAAE,GACPumE,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPzmE,EAAE,GACP0mE,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP5mE,EAAE,GACP6mE,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP/mE,EAAE,GACPgnE,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPlnE,EAAE,GACPmnE,GAAW,KAALD,GACNE,GAAMF,KAAO,GAEjB/vD,EAAIinD,SAAWn5C,EAAKm5C,SAAWjlD,EAAIilD,SACnCjnD,EAAIhiB,OAAS,GAMb,IAAIkyE,IAAQnoE,GAJZghE,EAAKr/D,KAAKymE,KAAK5D,EAAK8B,IAIE,KAAa,MAFnChC,GADAA,EAAM3iE,KAAKymE,KAAK5D,EAAK+B,IACR5kE,KAAKymE,KAAK3D,EAAK6B,GAAQ,KAEU,IAAO,EACrDtmE,IAFAsiE,EAAK3gE,KAAKymE,KAAK3D,EAAK8B,KAEPjC,IAAQ,IAAO,IAAM6D,KAAO,IAAO,EAChDA,IAAM,SAENnH,EAAKr/D,KAAKymE,KAAKzD,EAAK2B,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKzD,EAAK4B,IACR5kE,KAAKymE,KAAKxD,EAAK0B,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKxD,EAAK2B,GAKpB,IAAI8B,IAAQroE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKiC,GAAQ,GAIZ,KAAa,MAFnCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAKkC,GAAQ,GACvB/kE,KAAKymE,KAAK3D,EAAKgC,GAAQ,KAEU,IAAO,EACrDzmE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKiC,GAAQ,IAErBpC,IAAQ,IAAO,IAAM+D,KAAO,IAAO,EAChDA,IAAM,SAENrH,EAAKr/D,KAAKymE,KAAKtD,EAAKwB,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKtD,EAAKyB,IACR5kE,KAAKymE,KAAKrD,EAAKuB,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKrD,EAAKwB,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAK8B,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAK+B,GAAQ,GACvB/kE,KAAKymE,KAAKxD,EAAK6B,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAK8B,GAAQ,EAKlC,IAAI4B,IAAQtoE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKoC,GAAQ,GAIZ,KAAa,MAFnCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAKqC,GAAQ,GACvBllE,KAAKymE,KAAK3D,EAAKmC,GAAQ,KAEU,IAAO,EACrD5mE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKoC,GAAQ,IAErBvC,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAENtH,EAAKr/D,KAAKymE,KAAKnD,EAAKqB,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKnD,EAAKsB,IACR5kE,KAAKymE,KAAKlD,EAAKoB,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKlD,EAAKqB,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAK2B,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAK4B,GAAQ,GACvB/kE,KAAKymE,KAAKrD,EAAK0B,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAK2B,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAKiC,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAKkC,GAAQ,GACvBllE,KAAKymE,KAAKxD,EAAKgC,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAKiC,GAAQ,EAKlC,IAAI0B,IAAQvoE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKuC,GAAQ,GAIZ,KAAa,MAFnCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAKwC,GAAQ,GACvBrlE,KAAKymE,KAAK3D,EAAKsC,GAAQ,KAEU,IAAO,EACrD/mE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKuC,GAAQ,IAErB1C,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAENvH,EAAKr/D,KAAKymE,KAAKhD,EAAKkB,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKhD,EAAKmB,IACR5kE,KAAKymE,KAAK/C,EAAKiB,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAK/C,EAAKkB,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAKwB,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAKyB,GAAQ,GACvB/kE,KAAKymE,KAAKlD,EAAKuB,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAKwB,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAK8B,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAK+B,GAAQ,GACvBllE,KAAKymE,KAAKrD,EAAK6B,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAK8B,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAKoC,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAKqC,GAAQ,GACvBrlE,KAAKymE,KAAKxD,EAAKmC,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAKoC,GAAQ,EAKlC,IAAIwB,IAAQxoE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAK0C,GAAQ,GAIZ,KAAa,MAFnC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAK2C,IAAQ,GACvBxlE,KAAKymE,KAAK3D,EAAKyC,GAAQ,KAEU,IAAO,EACrDlnE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAK0C,IAAQ,IAErB7C,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAENxH,EAAKr/D,KAAKymE,KAAK7C,EAAKe,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAK7C,EAAKgB,IACR5kE,KAAKymE,KAAK5C,EAAKc,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAK5C,EAAKe,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAKqB,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAKsB,GAAQ,GACvB/kE,KAAKymE,KAAK/C,EAAKoB,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAKqB,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAK2B,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAK4B,GAAQ,GACvBllE,KAAKymE,KAAKlD,EAAK0B,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAK2B,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAKiC,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAKkC,GAAQ,GACvBrlE,KAAKymE,KAAKrD,EAAKgC,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAKiC,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAKuC,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAKwC,IAAQ,GACvBxlE,KAAKymE,KAAKxD,EAAKsC,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAKuC,IAAQ,EAKlC,IAAIsB,IAAQzoE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAK6C,IAAQ,GAIZ,KAAa,MAFnC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAK8C,IAAQ,GACvB3lE,KAAKymE,KAAK3D,EAAK4C,IAAQ,KAEU,IAAO,EACrDrnE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAK6C,IAAQ,IAErBhD,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAENzH,EAAKr/D,KAAKymE,KAAK1C,EAAKY,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAK1C,EAAKa,IACR5kE,KAAKymE,KAAKzC,EAAKW,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKzC,EAAKY,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAKkB,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAKmB,GAAQ,GACvB/kE,KAAKymE,KAAK5C,EAAKiB,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAKkB,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAKwB,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAKyB,GAAQ,GACvBllE,KAAKymE,KAAK/C,EAAKuB,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAKwB,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAK8B,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAK+B,GAAQ,GACvBrlE,KAAKymE,KAAKlD,EAAK6B,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAK8B,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAKoC,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAKqC,IAAQ,GACvBxlE,KAAKymE,KAAKrD,EAAKmC,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAKoC,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAK0C,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAK2C,IAAQ,GACvB3lE,KAAKymE,KAAKxD,EAAKyC,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAK0C,IAAQ,EAKlC,IAAIoB,IAAQ1oE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKgD,IAAQ,GAIZ,KAAa,MAFnClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAKiD,IAAQ,GACvB9lE,KAAKymE,KAAK3D,EAAK+C,IAAQ,KAEU,IAAO,EACrDxnE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKgD,IAAQ,IAErBnD,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAEN1H,EAAKr/D,KAAKymE,KAAKvC,EAAKS,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKvC,EAAKU,IACR5kE,KAAKymE,KAAKtC,EAAKQ,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKtC,EAAKS,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKe,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKgB,GAAQ,GACvB/kE,KAAKymE,KAAKzC,EAAKc,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKe,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAKqB,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAKsB,GAAQ,GACvBllE,KAAKymE,KAAK5C,EAAKoB,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAKqB,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAK2B,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAK4B,GAAQ,GACvBrlE,KAAKymE,KAAK/C,EAAK0B,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAK2B,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAKiC,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAKkC,IAAQ,GACvBxlE,KAAKymE,KAAKlD,EAAKgC,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAKiC,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAKuC,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAKwC,IAAQ,GACvB3lE,KAAKymE,KAAKrD,EAAKsC,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAKuC,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAK6C,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAK8C,IAAQ,GACvB9lE,KAAKymE,KAAKxD,EAAK4C,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAK6C,IAAQ,EAKlC,IAAIkB,IAAQ3oE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKmD,IAAQ,GAIZ,KAAa,MAFnCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAKoD,IAAQ,GACvBjmE,KAAKymE,KAAK3D,EAAKkD,IAAQ,KAEU,IAAO,EACrD3nE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKmD,IAAQ,IAErBtD,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAEN3H,EAAKr/D,KAAKymE,KAAKpC,EAAKM,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKpC,EAAKO,IACR5kE,KAAKymE,KAAKnC,EAAKK,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKnC,EAAKM,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKY,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKa,GAAQ,GACvB/kE,KAAKymE,KAAKtC,EAAKW,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKY,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKkB,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKmB,GAAQ,GACvBllE,KAAKymE,KAAKzC,EAAKiB,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKkB,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAKwB,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAKyB,GAAQ,GACvBrlE,KAAKymE,KAAK5C,EAAKuB,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAKwB,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAK8B,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAK+B,IAAQ,GACvBxlE,KAAKymE,KAAK/C,EAAK6B,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAK8B,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAKoC,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAKqC,IAAQ,GACvB3lE,KAAKymE,KAAKlD,EAAKmC,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAKoC,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAK0C,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAK2C,IAAQ,GACvB9lE,KAAKymE,KAAKrD,EAAKyC,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAK0C,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAKgD,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAKiD,IAAQ,GACvBjmE,KAAKymE,KAAKxD,EAAK+C,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAKgD,IAAQ,EAKlC,IAAIgB,IAAQ5oE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKsD,IAAQ,GAIZ,KAAa,MAFnCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAKuD,IAAQ,GACvBpmE,KAAKymE,KAAK3D,EAAKqD,IAAQ,KAEU,IAAO,EACrD9nE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKsD,IAAQ,IAErBzD,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAEN5H,EAAKr/D,KAAKymE,KAAKjC,EAAKG,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKI,IACR5kE,KAAKymE,KAAKhC,EAAKE,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKhC,EAAKG,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKS,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKU,GAAQ,GACvB/kE,KAAKymE,KAAKnC,EAAKQ,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKS,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKe,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKgB,GAAQ,GACvBllE,KAAKymE,KAAKtC,EAAKc,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKe,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKqB,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKsB,GAAQ,GACvBrlE,KAAKymE,KAAKzC,EAAKoB,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKqB,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAK2B,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAK4B,IAAQ,GACvBxlE,KAAKymE,KAAK5C,EAAK0B,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAK2B,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAKiC,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAKkC,IAAQ,GACvB3lE,KAAKymE,KAAK/C,EAAKgC,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAKiC,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAKuC,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAKwC,IAAQ,GACvB9lE,KAAKymE,KAAKlD,EAAKsC,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAKuC,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAK6C,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAK8C,IAAQ,GACvBjmE,KAAKymE,KAAKrD,EAAK4C,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAK6C,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAKmD,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAKoD,IAAQ,GACvBpmE,KAAKymE,KAAKxD,EAAKkD,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAKmD,IAAQ,EAKlC,IAAIc,IAAQ7oE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKyD,IAAQ,GAIZ,KAAa,MAFnC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAK0D,IAAQ,GACvBvmE,KAAKymE,KAAK3D,EAAKwD,IAAQ,KAEU,IAAO,EACrDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKyD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMuE,KAAO,IAAO,EAChDA,IAAM,SAEN7H,EAAKr/D,KAAKymE,KAAKjC,EAAKM,GAEpBnC,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKO,IACR/kE,KAAKymE,KAAKhC,EAAKK,GAAQ,EACpCnE,EAAK3gE,KAAKymE,KAAKhC,EAAKM,GACpB1F,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKY,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKa,GAAQ,GACvBllE,KAAKymE,KAAKnC,EAAKW,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKY,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKkB,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKmB,GAAQ,GACvBrlE,KAAKymE,KAAKtC,EAAKiB,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKkB,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKwB,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKyB,IAAQ,GACvBxlE,KAAKymE,KAAKzC,EAAKuB,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKwB,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAK8B,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAK+B,IAAQ,GACvB3lE,KAAKymE,KAAK5C,EAAK6B,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAK8B,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAKoC,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAKqC,IAAQ,GACvB9lE,KAAKymE,KAAK/C,EAAKmC,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAKoC,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAK0C,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAK2C,IAAQ,GACvBjmE,KAAKymE,KAAKlD,EAAKyC,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAK0C,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAKgD,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAKiD,IAAQ,GACvBpmE,KAAKymE,KAAKrD,EAAK+C,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAKgD,IAAQ,EAKlC,IAAIe,IAAS9oE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAKsD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAKuD,IAAQ,GACvBvmE,KAAKymE,KAAKxD,EAAKqD,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAKsD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMwE,KAAQ,IAAO,EACjDA,IAAO,SAEP9H,EAAKr/D,KAAKymE,KAAKjC,EAAKS,GAEpBtC,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKU,IACRllE,KAAKymE,KAAKhC,EAAKQ,GAAQ,EACpCtE,EAAK3gE,KAAKymE,KAAKhC,EAAKS,GACpB7F,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKe,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKgB,GAAQ,GACvBrlE,KAAKymE,KAAKnC,EAAKc,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKe,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKqB,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKsB,IAAQ,GACvBxlE,KAAKymE,KAAKtC,EAAKoB,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKqB,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAK2B,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAK4B,IAAQ,GACvB3lE,KAAKymE,KAAKzC,EAAK0B,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAK2B,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAKiC,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAKkC,IAAQ,GACvB9lE,KAAKymE,KAAK5C,EAAKgC,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAKiC,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAKuC,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAKwC,IAAQ,GACvBjmE,KAAKymE,KAAK/C,EAAKsC,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAKuC,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAK6C,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAK8C,IAAQ,GACvBpmE,KAAKymE,KAAKlD,EAAK4C,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAK6C,IAAQ,EAKlC,IAAIgB,IAAS/oE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAKmD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAKoD,IAAQ,GACvBvmE,KAAKymE,KAAKrD,EAAKkD,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAKmD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEP/H,EAAKr/D,KAAKymE,KAAKjC,EAAKY,GAEpBzC,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKa,IACRrlE,KAAKymE,KAAKhC,EAAKW,GAAQ,EACpCzE,EAAK3gE,KAAKymE,KAAKhC,EAAKY,GACpBhG,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKkB,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKmB,IAAQ,GACvBxlE,KAAKymE,KAAKnC,EAAKiB,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKkB,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKwB,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKyB,IAAQ,GACvB3lE,KAAKymE,KAAKtC,EAAKuB,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKwB,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAK8B,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAK+B,IAAQ,GACvB9lE,KAAKymE,KAAKzC,EAAK6B,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAK8B,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAKoC,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAKqC,IAAQ,GACvBjmE,KAAKymE,KAAK5C,EAAKmC,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAKoC,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAK0C,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAK2C,IAAQ,GACvBpmE,KAAKymE,KAAK/C,EAAKyC,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAK0C,IAAQ,EAKlC,IAAIiB,IAAShpE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAKgD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAKiD,IAAQ,GACvBvmE,KAAKymE,KAAKlD,EAAK+C,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAKgD,IAAQ,IAErB5D,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEPhI,EAAKr/D,KAAKymE,KAAKjC,EAAKe,GAEpB5C,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKgB,KACRxlE,KAAKymE,KAAKhC,EAAKc,GAAQ,EACpC5E,EAAK3gE,KAAKymE,KAAKhC,EAAKe,IACpBnG,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKqB,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKsB,IAAQ,GACvB3lE,KAAKymE,KAAKnC,EAAKoB,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKqB,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAK2B,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAK4B,IAAQ,GACvB9lE,KAAKymE,KAAKtC,EAAK0B,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAK2B,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKiC,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKkC,IAAQ,GACvBjmE,KAAKymE,KAAKzC,EAAKgC,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKiC,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAKuC,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAKwC,IAAQ,GACvBpmE,KAAKymE,KAAK5C,EAAKsC,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAKuC,IAAQ,EAKlC,IAAIkB,IAASjpE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAK6C,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAK8C,IAAQ,GACvBvmE,KAAKymE,KAAK/C,EAAK4C,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAK6C,IAAQ,IAErB5D,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEPjI,EAAKr/D,KAAKymE,KAAKjC,EAAKkB,IAEpB/C,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKmB,KACR3lE,KAAKymE,KAAKhC,EAAKiB,IAAQ,EACpC/E,EAAK3gE,KAAKymE,KAAKhC,EAAKkB,IACpBtG,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKwB,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKyB,IAAQ,GACvB9lE,KAAKymE,KAAKnC,EAAKuB,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKwB,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAK8B,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAK+B,IAAQ,GACvBjmE,KAAKymE,KAAKtC,EAAK6B,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAK8B,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKoC,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKqC,IAAQ,GACvBpmE,KAAKymE,KAAKzC,EAAKmC,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKoC,IAAQ,EAKlC,IAAImB,IAASlpE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAK0C,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAK2C,IAAQ,GACvBvmE,KAAKymE,KAAK5C,EAAKyC,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAK0C,IAAQ,IAErB5D,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEPlI,EAAKr/D,KAAKymE,KAAKjC,EAAKqB,IAEpBlD,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKsB,KACR9lE,KAAKymE,KAAKhC,EAAKoB,IAAQ,EACpClF,EAAK3gE,KAAKymE,KAAKhC,EAAKqB,IACpBzG,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAK2B,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAK4B,IAAQ,GACvBjmE,KAAKymE,KAAKnC,EAAK0B,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAK2B,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKiC,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKkC,IAAQ,GACvBpmE,KAAKymE,KAAKtC,EAAKgC,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKiC,IAAQ,EAKlC,IAAIoB,IAASnpE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKuC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKwC,IAAQ,GACvBvmE,KAAKymE,KAAKzC,EAAKsC,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKuC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEPnI,EAAKr/D,KAAKymE,KAAKjC,EAAKwB,IAEpBrD,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKyB,KACRjmE,KAAKymE,KAAKhC,EAAKuB,IAAQ,EACpCrF,EAAK3gE,KAAKymE,KAAKhC,EAAKwB,IACpB5G,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAK8B,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAK+B,IAAQ,GACvBpmE,KAAKymE,KAAKnC,EAAK6B,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAK8B,IAAQ,EAKlC,IAAIqB,IAASppE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKoC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKqC,IAAQ,GACvBvmE,KAAKymE,KAAKtC,EAAKmC,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKoC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEPpI,EAAKr/D,KAAKymE,KAAKjC,EAAK2B,IAEpBxD,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAK4B,KACRpmE,KAAKymE,KAAKhC,EAAK0B,IAAQ,EACpCxF,EAAK3gE,KAAKymE,KAAKhC,EAAK2B,IAKpB,IAAIsB,IAASrpE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKiC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKkC,IAAQ,GACvBvmE,KAAKymE,KAAKnC,EAAKgC,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKiC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SAMP,IAAIC,IAAStpE,GAJbghE,EAAKr/D,KAAKymE,KAAKjC,EAAK8B,KAIG,KAAa,MAFpC3D,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAK+B,KACRvmE,KAAKymE,KAAKhC,EAAK6B,IAAQ,KAEW,IAAO,EA0BtD,OAzBAjoE,IAFAsiE,EAAK3gE,KAAKymE,KAAKhC,EAAK8B,MAEP5D,IAAQ,IAAO,IAAMgF,KAAQ,IAAO,EACjDA,IAAO,SACPvwE,EAAE,GAAKovE,GACPpvE,EAAE,GAAKsvE,GACPtvE,EAAE,GAAKuvE,GACPvvE,EAAE,GAAKwvE,GACPxvE,EAAE,GAAKyvE,GACPzvE,EAAE,GAAK0vE,GACP1vE,EAAE,GAAK2vE,GACP3vE,EAAE,GAAK4vE,GACP5vE,EAAE,GAAK6vE,GACP7vE,EAAE,GAAK8vE,GACP9vE,EAAE,IAAM+vE,GACR/vE,EAAE,IAAMgwE,GACRhwE,EAAE,IAAMiwE,GACRjwE,EAAE,IAAMkwE,GACRlwE,EAAE,IAAMmwE,GACRnwE,EAAE,IAAMowE,GACRpwE,EAAE,IAAMqwE,GACRrwE,EAAE,IAAMswE,GACRtwE,EAAE,IAAMuwE,GACE,IAANtpE,IACFjH,EAAE,IAAMiH,EACRiY,EAAIhiB,UAECgiB,GAiDT,SAASsxD,EAAYxjD,EAAM9L,EAAKhC,GAE9B,OADW,IAAIuxD,GACHC,KAAK1jD,EAAM9L,EAAKhC,GAsB9B,SAASuxD,EAAMtkE,EAAGoD,GAChB9R,KAAK0O,EAAIA,EACT1O,KAAK8R,EAAIA,EAvEN3G,KAAKymE,OACR/D,EAActD,GAiDhBhC,EAAG3oE,UAAU0N,MAAQ,SAAgBmW,EAAKhC,GACxC,IAAIH,EACAnf,EAAMnC,KAAKP,OAASgkB,EAAIhkB,OAW5B,OATE6hB,EADkB,KAAhBthB,KAAKP,QAAgC,KAAfgkB,EAAIhkB,OACtBouE,EAAY7tE,KAAMyjB,EAAKhC,GACpBtf,EAAM,GACTooE,EAAWvqE,KAAMyjB,EAAKhC,GACnBtf,EAAM,KArDnB,SAAmBotB,EAAM9L,EAAKhC,GAC5BA,EAAIinD,SAAWjlD,EAAIilD,SAAWn5C,EAAKm5C,SACnCjnD,EAAIhiB,OAAS8vB,EAAK9vB,OAASgkB,EAAIhkB,OAI/B,IAFA,IAAIgrE,EAAQ,EACRyI,EAAU,EACL/oE,EAAI,EAAGA,EAAIsX,EAAIhiB,OAAS,EAAG0K,IAAK,CAGvC,IAAIugE,EAASwI,EACbA,EAAU,EAGV,IAFA,IAAIvI,EAAgB,SAARF,EACRG,EAAOz/D,KAAKkD,IAAIlE,EAAGsZ,EAAIhkB,OAAS,GAC3BgK,EAAI0B,KAAK+C,IAAI,EAAG/D,EAAIolB,EAAK9vB,OAAS,GAAIgK,GAAKmhE,EAAMnhE,IAAK,CAC7D,IAAIlK,EAAI4K,EAAIV,EAGRwB,GAFoB,EAAhBskB,EAAKo5C,MAAMppE,KACI,EAAfkkB,EAAIklD,MAAMl/D,IAGd+gE,EAAS,SAAJv/D,EAGT0/D,EAAa,UADbH,EAAMA,EAAKG,EAAS,GAIpBuI,IAFAxI,GAHAA,EAAUA,GAAWz/D,EAAI,SAAa,GAAM,IAGxBu/D,IAAO,IAAO,KAEZ,GACtBE,GAAU,SAEZjpD,EAAIknD,MAAMx+D,GAAKwgE,EACfF,EAAQC,EACRA,EAASwI,EAQX,OANc,IAAVzI,EACFhpD,EAAIknD,MAAMx+D,GAAKsgE,EAEfhpD,EAAIhiB,SAGCgiB,EAAIgoD,QAgBH0J,CAASnzE,KAAMyjB,EAAKhC,GAEpBsxD,EAAW/yE,KAAMyjB,EAAKhC,GAGvBH,GAWT0xD,EAAKpzE,UAAUwzE,QAAU,SAAkBzgE,GAGzC,IAFA,IAAI/F,EAAI,IAAIvK,MAAMsQ,GACd1I,EAAIs+D,EAAG3oE,UAAUgsE,WAAWj5D,GAAK,EAC5BpT,EAAI,EAAGA,EAAIoT,EAAGpT,IACrBqN,EAAErN,GAAKS,KAAKqzE,OAAO9zE,EAAG0K,EAAG0I,GAG3B,OAAO/F,GAITomE,EAAKpzE,UAAUyzE,OAAS,SAAiB3kE,EAAGzE,EAAG0I,GAC7C,GAAU,IAANjE,GAAWA,IAAMiE,EAAI,EAAG,OAAOjE,EAGnC,IADA,IAAI4kE,EAAK,EACA/zE,EAAI,EAAGA,EAAI0K,EAAG1K,IACrB+zE,IAAW,EAAJ5kE,IAAWzE,EAAI1K,EAAI,EAC1BmP,IAAM,EAGR,OAAO4kE,GAKTN,EAAKpzE,UAAU2zE,QAAU,SAAkBC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMjhE,GACpE,IAAK,IAAIpT,EAAI,EAAGA,EAAIoT,EAAGpT,IACrBo0E,EAAKp0E,GAAKk0E,EAAID,EAAIj0E,IAClBq0E,EAAKr0E,GAAKm0E,EAAIF,EAAIj0E,KAItByzE,EAAKpzE,UAAUyuC,UAAY,SAAoBolC,EAAKC,EAAKC,EAAMC,EAAMjhE,EAAG6gE,GACtExzE,KAAKuzE,QAAQC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMjhE,GAExC,IAAK,IAAI3F,EAAI,EAAGA,EAAI2F,EAAG3F,IAAM,EAM3B,IALA,IAAI/C,EAAI+C,GAAK,EAET6mE,EAAQ1oE,KAAK2oE,IAAI,EAAI3oE,KAAK4oE,GAAK9pE,GAC/B+pE,EAAQ7oE,KAAK8oE,IAAI,EAAI9oE,KAAK4oE,GAAK9pE,GAE1BiB,EAAI,EAAGA,EAAIyH,EAAGzH,GAAKjB,EAI1B,IAHA,IAAIiqE,EAASL,EACTM,EAASH,EAEJvqE,EAAI,EAAGA,EAAIuD,EAAGvD,IAAK,CAC1B,IAAIogB,EAAK8pD,EAAKzoE,EAAIzB,GACd2qE,EAAKR,EAAK1oE,EAAIzB,GAEd4qE,EAAKV,EAAKzoE,EAAIzB,EAAIuD,GAClBsnE,EAAKV,EAAK1oE,EAAIzB,EAAIuD,GAElBunE,EAAKL,EAASG,EAAKF,EAASG,EAEhCA,EAAKJ,EAASI,EAAKH,EAASE,EAC5BA,EAAKE,EAELZ,EAAKzoE,EAAIzB,GAAKogB,EAAKwqD,EACnBT,EAAK1oE,EAAIzB,GAAK2qE,EAAKE,EAEnBX,EAAKzoE,EAAIzB,EAAIuD,GAAK6c,EAAKwqD,EACvBT,EAAK1oE,EAAIzB,EAAIuD,GAAKonE,EAAKE,EAGnB7qE,IAAMQ,IACRsqE,EAAKV,EAAQK,EAASF,EAAQG,EAE9BA,EAASN,EAAQM,EAASH,EAAQE,EAClCA,EAASK,KAOnBvB,EAAKpzE,UAAU40E,YAAc,SAAsB1xE,EAAGsH,GACpD,IAAIuI,EAAqB,EAAjBxH,KAAK+C,IAAI9D,EAAGtH,GAChB2xE,EAAU,EAAJ9hE,EACNpT,EAAI,EACR,IAAKoT,EAAIA,EAAI,EAAI,EAAGA,EAAGA,KAAU,EAC/BpT,IAGF,OAAO,GAAKA,EAAI,EAAIk1E,GAGtBzB,EAAKpzE,UAAU80E,UAAY,SAAoBjB,EAAKC,EAAK/gE,GACvD,KAAIA,GAAK,GAET,IAAK,IAAIpT,EAAI,EAAGA,EAAIoT,EAAI,EAAGpT,IAAK,CAC9B,IAAIqN,EAAI6mE,EAAIl0E,GAEZk0E,EAAIl0E,GAAKk0E,EAAI9gE,EAAIpT,EAAI,GACrBk0E,EAAI9gE,EAAIpT,EAAI,GAAKqN,EAEjBA,EAAI8mE,EAAIn0E,GAERm0E,EAAIn0E,IAAMm0E,EAAI/gE,EAAIpT,EAAI,GACtBm0E,EAAI/gE,EAAIpT,EAAI,IAAMqN,IAItBomE,EAAKpzE,UAAU+0E,aAAe,SAAuBC,EAAIjiE,GAEvD,IADA,IAAI83D,EAAQ,EACHlrE,EAAI,EAAGA,EAAIoT,EAAI,EAAGpT,IAAK,CAC9B,IAAI+O,EAAoC,KAAhCnD,KAAK4I,MAAM6gE,EAAG,EAAIr1E,EAAI,GAAKoT,GACjCxH,KAAK4I,MAAM6gE,EAAG,EAAIr1E,GAAKoT,GACvB83D,EAEFmK,EAAGr1E,GAAS,SAAJ+O,EAGNm8D,EADEn8D,EAAI,SACE,EAEAA,EAAI,SAAY,EAI5B,OAAOsmE,GAGT5B,EAAKpzE,UAAUi1E,WAAa,SAAqBD,EAAIzyE,EAAKsxE,EAAK9gE,GAE7D,IADA,IAAI83D,EAAQ,EACHlrE,EAAI,EAAGA,EAAI4C,EAAK5C,IACvBkrE,GAAyB,EAARmK,EAAGr1E,GAEpBk0E,EAAI,EAAIl0E,GAAa,KAARkrE,EAAgBA,KAAkB,GAC/CgJ,EAAI,EAAIl0E,EAAI,GAAa,KAARkrE,EAAgBA,KAAkB,GAIrD,IAAKlrE,EAAI,EAAI4C,EAAK5C,EAAIoT,IAAKpT,EACzBk0E,EAAIl0E,GAAK,EAGXuiB,EAAiB,IAAV2oD,GACP3oD,EAA6B,MAAb,KAAR2oD,KAGVuI,EAAKpzE,UAAUk1E,KAAO,SAAeniE,GAEnC,IADA,IAAIoiE,EAAK,IAAI1yE,MAAMsQ,GACVpT,EAAI,EAAGA,EAAIoT,EAAGpT,IACrBw1E,EAAGx1E,GAAK,EAGV,OAAOw1E,GAGT/B,EAAKpzE,UAAUqzE,KAAO,SAAevkE,EAAGoD,EAAG2P,GACzC,IAAI9O,EAAI,EAAI3S,KAAKw0E,YAAY9lE,EAAEjP,OAAQqS,EAAErS,QAErC+zE,EAAMxzE,KAAKozE,QAAQzgE,GAEnByZ,EAAIpsB,KAAK80E,KAAKniE,GAEd8gE,EAAM,IAAIpxE,MAAMsQ,GAChBqiE,EAAO,IAAI3yE,MAAMsQ,GACjBsiE,EAAO,IAAI5yE,MAAMsQ,GAEjBuiE,EAAO,IAAI7yE,MAAMsQ,GACjBwiE,EAAQ,IAAI9yE,MAAMsQ,GAClByiE,EAAQ,IAAI/yE,MAAMsQ,GAElB0iE,EAAO5zD,EAAIknD,MACf0M,EAAK51E,OAASkT,EAEd3S,KAAK60E,WAAWnmE,EAAEi6D,MAAOj6D,EAAEjP,OAAQg0E,EAAK9gE,GACxC3S,KAAK60E,WAAW/iE,EAAE62D,MAAO72D,EAAErS,OAAQy1E,EAAMviE,GAEzC3S,KAAKquC,UAAUolC,EAAKrnD,EAAG4oD,EAAMC,EAAMtiE,EAAG6gE,GACtCxzE,KAAKquC,UAAU6mC,EAAM9oD,EAAG+oD,EAAOC,EAAOziE,EAAG6gE,GAEzC,IAAK,IAAIj0E,EAAI,EAAGA,EAAIoT,EAAGpT,IAAK,CAC1B,IAAIg1E,EAAKS,EAAKz1E,GAAK41E,EAAM51E,GAAK01E,EAAK11E,GAAK61E,EAAM71E,GAC9C01E,EAAK11E,GAAKy1E,EAAKz1E,GAAK61E,EAAM71E,GAAK01E,EAAK11E,GAAK41E,EAAM51E,GAC/Cy1E,EAAKz1E,GAAKg1E,EAUZ,OAPAv0E,KAAK00E,UAAUM,EAAMC,EAAMtiE,GAC3B3S,KAAKquC,UAAU2mC,EAAMC,EAAMI,EAAMjpD,EAAGzZ,EAAG6gE,GACvCxzE,KAAK00E,UAAUW,EAAMjpD,EAAGzZ,GACxB3S,KAAK20E,aAAaU,EAAM1iE,GAExB8O,EAAIinD,SAAWh6D,EAAEg6D,SAAW52D,EAAE42D,SAC9BjnD,EAAIhiB,OAASiP,EAAEjP,OAASqS,EAAErS,OACnBgiB,EAAIgoD,SAIblB,EAAG3oE,UAAUspE,IAAM,SAAczlD,GAC/B,IAAIhC,EAAM,IAAI8mD,EAAG,MAEjB,OADA9mD,EAAIknD,MAAQ,IAAItmE,MAAMrC,KAAKP,OAASgkB,EAAIhkB,QACjCO,KAAKsN,MAAMmW,EAAKhC,IAIzB8mD,EAAG3oE,UAAU01E,KAAO,SAAe7xD,GACjC,IAAIhC,EAAM,IAAI8mD,EAAG,MAEjB,OADA9mD,EAAIknD,MAAQ,IAAItmE,MAAMrC,KAAKP,OAASgkB,EAAIhkB,QACjCszE,EAAW/yE,KAAMyjB,EAAKhC,IAI/B8mD,EAAG3oE,UAAUgyE,KAAO,SAAenuD,GACjC,OAAOzjB,KAAKgjB,QAAQ1V,MAAMmW,EAAKzjB,OAGjCuoE,EAAG3oE,UAAUkqE,MAAQ,SAAgBrmD,GACnC3B,EAAsB,kBAAR2B,GACd3B,EAAO2B,EAAM,UAIb,IADA,IAAIgnD,EAAQ,EACHlrE,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAAK,CACpC,IAAI+O,GAAqB,EAAhBtO,KAAK2oE,MAAMppE,IAAUkkB,EAC1B+mD,GAAU,SAAJl8D,IAA0B,SAARm8D,GAC5BA,IAAU,GACVA,GAAUn8D,EAAI,SAAa,EAE3Bm8D,GAASD,IAAO,GAChBxqE,KAAK2oE,MAAMppE,GAAU,SAALirE,EAQlB,OALc,IAAVC,IACFzqE,KAAK2oE,MAAMppE,GAAKkrE,EAChBzqE,KAAKP,UAGAO,MAGTuoE,EAAG3oE,UAAU21E,KAAO,SAAe9xD,GACjC,OAAOzjB,KAAKgjB,QAAQ8mD,MAAMrmD,IAI5B8kD,EAAG3oE,UAAU41E,IAAM,WACjB,OAAOx1E,KAAKkpE,IAAIlpE,OAIlBuoE,EAAG3oE,UAAU61E,KAAO,WAClB,OAAOz1E,KAAK4xE,KAAK5xE,KAAKgjB,UAIxBulD,EAAG3oE,UAAU6L,IAAM,SAAcgY,GAC/B,IAAInV,EAxxCN,SAAqBmV,GAGnB,IAFA,IAAInV,EAAI,IAAIjM,MAAMohB,EAAIxU,aAEbu+D,EAAM,EAAGA,EAAMl/D,EAAE7O,OAAQ+tE,IAAO,CACvC,IAAIhE,EAAOgE,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjBl/D,EAAEk/D,IAAQ/pD,EAAIklD,MAAMa,GAAQ,GAAKiE,KAAWA,EAG9C,OAAOn/D,EA8wCConE,CAAWjyD,GACnB,GAAiB,IAAbnV,EAAE7O,OAAc,OAAO,IAAI8oE,EAAG,GAIlC,IADA,IAAIjnD,EAAMthB,KACDT,EAAI,EAAGA,EAAI+O,EAAE7O,QACP,IAAT6O,EAAE/O,GADsBA,IAAK+hB,EAAMA,EAAIk0D,OAI7C,KAAMj2E,EAAI+O,EAAE7O,OACV,IAAK,IAAIuL,EAAIsW,EAAIk0D,MAAOj2E,EAAI+O,EAAE7O,OAAQF,IAAKyL,EAAIA,EAAEwqE,MAClC,IAATlnE,EAAE/O,KAEN+hB,EAAMA,EAAI4nD,IAAIl+D,IAIlB,OAAOsW,GAITinD,EAAG3oE,UAAU+1E,OAAS,SAAiBv2D,GACrC0C,EAAuB,kBAAT1C,GAAqBA,GAAQ,GAC3C,IAGI7f,EAHA0L,EAAImU,EAAO,GACXpS,GAAKoS,EAAOnU,GAAK,GACjB2qE,EAAa,WAAe,GAAK3qE,GAAQ,GAAKA,EAGlD,GAAU,IAANA,EAAS,CACX,IAAIw/D,EAAQ,EAEZ,IAAKlrE,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAAK,CAChC,IAAIs2E,EAAW71E,KAAK2oE,MAAMppE,GAAKq2E,EAC3BpsE,GAAsB,EAAhBxJ,KAAK2oE,MAAMppE,IAAUs2E,GAAa5qE,EAC5CjL,KAAK2oE,MAAMppE,GAAKiK,EAAIihE,EACpBA,EAAQoL,IAAc,GAAK5qE,EAGzBw/D,IACFzqE,KAAK2oE,MAAMppE,GAAKkrE,EAChBzqE,KAAKP,UAIT,GAAU,IAANuN,EAAS,CACX,IAAKzN,EAAIS,KAAKP,OAAS,EAAGF,GAAK,EAAGA,IAChCS,KAAK2oE,MAAMppE,EAAIyN,GAAKhN,KAAK2oE,MAAMppE,GAGjC,IAAKA,EAAI,EAAGA,EAAIyN,EAAGzN,IACjBS,KAAK2oE,MAAMppE,GAAK,EAGlBS,KAAKP,QAAUuN,EAGjB,OAAOhN,KAAKypE,SAGdlB,EAAG3oE,UAAUk2E,MAAQ,SAAgB12D,GAGnC,OADA0C,EAAyB,IAAlB9hB,KAAK0oE,UACL1oE,KAAK21E,OAAOv2D,IAMrBmpD,EAAG3oE,UAAU8rE,OAAS,SAAiBtsD,EAAM22D,EAAMC,GAEjD,IAAItsE,EADJoY,EAAuB,kBAAT1C,GAAqBA,GAAQ,GAGzC1V,EADEqsE,GACGA,EAAQA,EAAO,IAAO,GAEvB,EAGN,IAAI9qE,EAAImU,EAAO,GACXpS,EAAI7B,KAAKkD,KAAK+Q,EAAOnU,GAAK,GAAIjL,KAAKP,QACnCw2E,EAAO,SAAc,WAAchrE,GAAMA,EACzCirE,EAAcF,EAMlB,GAJAtsE,GAAKsD,EACLtD,EAAIyB,KAAK+C,IAAI,EAAGxE,GAGZwsE,EAAa,CACf,IAAK,IAAI32E,EAAI,EAAGA,EAAIyN,EAAGzN,IACrB22E,EAAYvN,MAAMppE,GAAKS,KAAK2oE,MAAMppE,GAEpC22E,EAAYz2E,OAASuN,EAGvB,GAAU,IAANA,QAEG,GAAIhN,KAAKP,OAASuN,EAEvB,IADAhN,KAAKP,QAAUuN,EACVzN,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAC3BS,KAAK2oE,MAAMppE,GAAKS,KAAK2oE,MAAMppE,EAAIyN,QAGjChN,KAAK2oE,MAAM,GAAK,EAChB3oE,KAAKP,OAAS,EAGhB,IAAIgrE,EAAQ,EACZ,IAAKlrE,EAAIS,KAAKP,OAAS,EAAGF,GAAK,IAAgB,IAAVkrE,GAAelrE,GAAKmK,GAAInK,IAAK,CAChE,IAAIsqE,EAAuB,EAAhB7pE,KAAK2oE,MAAMppE,GACtBS,KAAK2oE,MAAMppE,GAAMkrE,GAAU,GAAKx/D,EAAO4+D,IAAS5+D,EAChDw/D,EAAQZ,EAAOoM,EAajB,OATIC,GAAyB,IAAVzL,IACjByL,EAAYvN,MAAMuN,EAAYz2E,UAAYgrE,GAGxB,IAAhBzqE,KAAKP,SACPO,KAAK2oE,MAAM,GAAK,EAChB3oE,KAAKP,OAAS,GAGTO,KAAKypE,SAGdlB,EAAG3oE,UAAUu2E,MAAQ,SAAgB/2D,EAAM22D,EAAMC,GAG/C,OADAl0D,EAAyB,IAAlB9hB,KAAK0oE,UACL1oE,KAAK0rE,OAAOtsD,EAAM22D,EAAMC,IAIjCzN,EAAG3oE,UAAUw2E,KAAO,SAAeh3D,GACjC,OAAOpf,KAAKgjB,QAAQ8yD,MAAM12D,IAG5BmpD,EAAG3oE,UAAUy2E,MAAQ,SAAgBj3D,GACnC,OAAOpf,KAAKgjB,QAAQ2yD,OAAOv2D,IAI7BmpD,EAAG3oE,UAAU02E,KAAO,SAAel3D,GACjC,OAAOpf,KAAKgjB,QAAQmzD,MAAM/2D,IAG5BmpD,EAAG3oE,UAAU22E,MAAQ,SAAgBn3D,GACnC,OAAOpf,KAAKgjB,QAAQ0oD,OAAOtsD,IAI7BmpD,EAAG3oE,UAAUwsE,MAAQ,SAAgBoB,GACnC1rD,EAAsB,kBAAR0rD,GAAoBA,GAAO,GACzC,IAAIviE,EAAIuiE,EAAM,GACVxgE,GAAKwgE,EAAMviE,GAAK,GAChBD,EAAI,GAAKC,EAGb,QAAIjL,KAAKP,QAAUuN,OAGXhN,KAAK2oE,MAAM37D,GAELhC,IAIhBu9D,EAAG3oE,UAAU42E,OAAS,SAAiBp3D,GACrC0C,EAAuB,kBAAT1C,GAAqBA,GAAQ,GAC3C,IAAInU,EAAImU,EAAO,GACXpS,GAAKoS,EAAOnU,GAAK,GAIrB,GAFA6W,EAAyB,IAAlB9hB,KAAK0oE,SAAgB,2CAExB1oE,KAAKP,QAAUuN,EACjB,OAAOhN,KAQT,GALU,IAANiL,GACF+B,IAEFhN,KAAKP,OAAS0L,KAAKkD,IAAIrB,EAAGhN,KAAKP,QAErB,IAANwL,EAAS,CACX,IAAIgrE,EAAO,SAAc,WAAchrE,GAAMA,EAC7CjL,KAAK2oE,MAAM3oE,KAAKP,OAAS,IAAMw2E,EAGjC,OAAOj2E,KAAKypE,SAIdlB,EAAG3oE,UAAU62E,MAAQ,SAAgBr3D,GACnC,OAAOpf,KAAKgjB,QAAQwzD,OAAOp3D,IAI7BmpD,EAAG3oE,UAAUssE,MAAQ,SAAgBzoD,GAGnC,OAFA3B,EAAsB,kBAAR2B,GACd3B,EAAO2B,EAAM,UACTA,EAAM,EAAUzjB,KAAK02E,OAAOjzD,GAGV,IAAlBzjB,KAAK0oE,SACa,IAAhB1oE,KAAKP,SAAiC,EAAhBO,KAAK2oE,MAAM,IAAUllD,GAC7CzjB,KAAK2oE,MAAM,GAAKllD,GAAuB,EAAhBzjB,KAAK2oE,MAAM,IAClC3oE,KAAK0oE,SAAW,EACT1oE,OAGTA,KAAK0oE,SAAW,EAChB1oE,KAAK02E,MAAMjzD,GACXzjB,KAAK0oE,SAAW,EACT1oE,MAIFA,KAAK+pE,OAAOtmD,IAGrB8kD,EAAG3oE,UAAUmqE,OAAS,SAAiBtmD,GACrCzjB,KAAK2oE,MAAM,IAAMllD,EAGjB,IAAK,IAAIlkB,EAAI,EAAGA,EAAIS,KAAKP,QAAUO,KAAK2oE,MAAMppE,IAAM,SAAWA,IAC7DS,KAAK2oE,MAAMppE,IAAM,SACbA,IAAMS,KAAKP,OAAS,EACtBO,KAAK2oE,MAAMppE,EAAI,GAAK,EAEpBS,KAAK2oE,MAAMppE,EAAI,KAKnB,OAFAS,KAAKP,OAAS0L,KAAK+C,IAAIlO,KAAKP,OAAQF,EAAI,GAEjCS,MAITuoE,EAAG3oE,UAAU82E,MAAQ,SAAgBjzD,GAGnC,GAFA3B,EAAsB,kBAAR2B,GACd3B,EAAO2B,EAAM,UACTA,EAAM,EAAG,OAAOzjB,KAAKksE,OAAOzoD,GAEhC,GAAsB,IAAlBzjB,KAAK0oE,SAIP,OAHA1oE,KAAK0oE,SAAW,EAChB1oE,KAAKksE,MAAMzoD,GACXzjB,KAAK0oE,SAAW,EACT1oE,KAKT,GAFAA,KAAK2oE,MAAM,IAAMllD,EAEG,IAAhBzjB,KAAKP,QAAgBO,KAAK2oE,MAAM,GAAK,EACvC3oE,KAAK2oE,MAAM,IAAM3oE,KAAK2oE,MAAM,GAC5B3oE,KAAK0oE,SAAW,OAGhB,IAAK,IAAInpE,EAAI,EAAGA,EAAIS,KAAKP,QAAUO,KAAK2oE,MAAMppE,GAAK,EAAGA,IACpDS,KAAK2oE,MAAMppE,IAAM,SACjBS,KAAK2oE,MAAMppE,EAAI,IAAM,EAIzB,OAAOS,KAAKypE,SAGdlB,EAAG3oE,UAAU+2E,KAAO,SAAelzD,GACjC,OAAOzjB,KAAKgjB,QAAQkpD,MAAMzoD,IAG5B8kD,EAAG3oE,UAAUg3E,KAAO,SAAenzD,GACjC,OAAOzjB,KAAKgjB,QAAQ0zD,MAAMjzD,IAG5B8kD,EAAG3oE,UAAUi3E,KAAO,WAGlB,OAFA72E,KAAK0oE,SAAW,EAET1oE,MAGTuoE,EAAG3oE,UAAU8N,IAAM,WACjB,OAAO1N,KAAKgjB,QAAQ6zD,QAGtBtO,EAAG3oE,UAAUk3E,aAAe,SAAuBrzD,EAAKylD,EAAKj3C,GAC3D,IACI1yB,EAIA+O,EALAnM,EAAMshB,EAAIhkB,OAASwyB,EAGvBjyB,KAAKiqE,QAAQ9nE,GAGb,IAAIsoE,EAAQ,EACZ,IAAKlrE,EAAI,EAAGA,EAAIkkB,EAAIhkB,OAAQF,IAAK,CAC/B+O,GAA6B,EAAxBtO,KAAK2oE,MAAMppE,EAAI0yB,IAAcw4C,EAClC,IAAIvoC,GAAwB,EAAfze,EAAIklD,MAAMppE,IAAU2pE,EAEjCuB,IADAn8D,GAAa,SAAR4zB,IACS,KAAQA,EAAQ,SAAa,GAC3CliC,KAAK2oE,MAAMppE,EAAI0yB,GAAa,SAAJ3jB,EAE1B,KAAO/O,EAAIS,KAAKP,OAASwyB,EAAO1yB,IAE9BkrE,GADAn8D,GAA6B,EAAxBtO,KAAK2oE,MAAMppE,EAAI0yB,IAAcw4C,IACrB,GACbzqE,KAAK2oE,MAAMppE,EAAI0yB,GAAa,SAAJ3jB,EAG1B,GAAc,IAAVm8D,EAAa,OAAOzqE,KAAKypE,QAK7B,IAFA3nD,GAAkB,IAAX2oD,GACPA,EAAQ,EACHlrE,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAE3BkrE,GADAn8D,IAAsB,EAAhBtO,KAAK2oE,MAAMppE,IAAUkrE,IACd,GACbzqE,KAAK2oE,MAAMppE,GAAS,SAAJ+O,EAIlB,OAFAtO,KAAK0oE,SAAW,EAET1oE,KAAKypE,SAGdlB,EAAG3oE,UAAUm3E,SAAW,SAAmBtzD,EAAKpS,GAC9C,IAAI4gB,GAAQjyB,KAAKP,OAASgkB,EAAIhkB,QAE1B8J,EAAIvJ,KAAKgjB,QACT1Y,EAAImZ,EAGJuzD,EAA8B,EAAxB1sE,EAAEq+D,MAAMr+D,EAAE7K,OAAS,GAGf,KADdwyB,EAAQ,GADMjyB,KAAK4rE,WAAWoL,MAG5B1sE,EAAIA,EAAE+rE,MAAMpkD,GACZ1oB,EAAEosE,OAAO1jD,GACT+kD,EAA8B,EAAxB1sE,EAAEq+D,MAAMr+D,EAAE7K,OAAS,IAI3B,IACIuL,EADAZ,EAAIb,EAAE9J,OAAS6K,EAAE7K,OAGrB,GAAa,QAAT4R,EAAgB,EAClBrG,EAAI,IAAIu9D,EAAG,OACT9oE,OAAS2K,EAAI,EACfY,EAAE29D,MAAQ,IAAItmE,MAAM2I,EAAEvL,QACtB,IAAK,IAAIF,EAAI,EAAGA,EAAIyL,EAAEvL,OAAQF,IAC5ByL,EAAE29D,MAAMppE,GAAK,EAIjB,IAAIqwB,EAAOrmB,EAAEyZ,QAAQ8zD,aAAaxsE,EAAG,EAAGF,GAClB,IAAlBwlB,EAAK84C,WACPn/D,EAAIqmB,EACA5kB,IACFA,EAAE29D,MAAMv+D,GAAK,IAIjB,IAAK,IAAIX,EAAIW,EAAI,EAAGX,GAAK,EAAGA,IAAK,CAC/B,IAAIwtE,EAAmC,UAAL,EAAxB1tE,EAAEo/D,MAAMr+D,EAAE7K,OAASgK,KACE,EAA5BF,EAAEo/D,MAAMr+D,EAAE7K,OAASgK,EAAI,IAO1B,IAHAwtE,EAAK9rE,KAAKkD,IAAK4oE,EAAKD,EAAO,EAAG,UAE9BztE,EAAEutE,aAAaxsE,EAAG2sE,EAAIxtE,GACA,IAAfF,EAAEm/D,UACPuO,IACA1tE,EAAEm/D,SAAW,EACbn/D,EAAEutE,aAAaxsE,EAAG,EAAGb,GAChBF,EAAEwhE,WACLxhE,EAAEm/D,UAAY,GAGd19D,IACFA,EAAE29D,MAAMl/D,GAAKwtE,GAajB,OAVIjsE,GACFA,EAAEy+D,QAEJlgE,EAAEkgE,QAGW,QAATp4D,GAA4B,IAAV4gB,GACpB1oB,EAAEmiE,OAAOz5C,GAGJ,CACLilD,IAAKlsE,GAAK,KACVkC,IAAK3D,IAQTg/D,EAAG3oE,UAAUu3E,OAAS,SAAiB1zD,EAAKpS,EAAM+lE,GAGhD,OAFAt1D,GAAQ2B,EAAIsnD,UAER/qE,KAAK+qE,SACA,CACLmM,IAAK,IAAI3O,EAAG,GACZr7D,IAAK,IAAIq7D,EAAG,IAKM,IAAlBvoE,KAAK0oE,UAAmC,IAAjBjlD,EAAIilD,UAC7BpnD,EAAMthB,KAAKwsE,MAAM2K,OAAO1zD,EAAKpS,GAEhB,QAATA,IACF6lE,EAAM51D,EAAI41D,IAAI1K,OAGH,QAATn7D,IACFnE,EAAMoU,EAAIpU,IAAIs/D,MACV4K,GAA6B,IAAjBlqE,EAAIw7D,UAClBx7D,EAAIwgE,KAAKjqD,IAIN,CACLyzD,IAAKA,EACLhqE,IAAKA,IAIa,IAAlBlN,KAAK0oE,UAAmC,IAAjBjlD,EAAIilD,UAC7BpnD,EAAMthB,KAAKm3E,OAAO1zD,EAAI+oD,MAAOn7D,GAEhB,QAATA,IACF6lE,EAAM51D,EAAI41D,IAAI1K,OAGT,CACL0K,IAAKA,EACLhqE,IAAKoU,EAAIpU,MAI0B,KAAlClN,KAAK0oE,SAAWjlD,EAAIilD,WACvBpnD,EAAMthB,KAAKwsE,MAAM2K,OAAO1zD,EAAI+oD,MAAOn7D,GAEtB,QAATA,IACFnE,EAAMoU,EAAIpU,IAAIs/D,MACV4K,GAA6B,IAAjBlqE,EAAIw7D,UAClBx7D,EAAIygE,KAAKlqD,IAIN,CACLyzD,IAAK51D,EAAI41D,IACThqE,IAAKA,IAOLuW,EAAIhkB,OAASO,KAAKP,QAAUO,KAAKmpE,IAAI1lD,GAAO,EACvC,CACLyzD,IAAK,IAAI3O,EAAG,GACZr7D,IAAKlN,MAKU,IAAfyjB,EAAIhkB,OACO,QAAT4R,EACK,CACL6lE,IAAKl3E,KAAKq3E,KAAK5zD,EAAIklD,MAAM,IACzBz7D,IAAK,MAII,QAATmE,EACK,CACL6lE,IAAK,KACLhqE,IAAK,IAAIq7D,EAAGvoE,KAAKgrE,KAAKvnD,EAAIklD,MAAM,MAI7B,CACLuO,IAAKl3E,KAAKq3E,KAAK5zD,EAAIklD,MAAM,IACzBz7D,IAAK,IAAIq7D,EAAGvoE,KAAKgrE,KAAKvnD,EAAIklD,MAAM,MAI7B3oE,KAAK+2E,SAAStzD,EAAKpS,GAlF1B,IAAI6lE,EAAKhqE,EAAKoU,GAsFhBinD,EAAG3oE,UAAUs3E,IAAM,SAAczzD,GAC/B,OAAOzjB,KAAKm3E,OAAO1zD,EAAK,OAAO,GAAOyzD,KAIxC3O,EAAG3oE,UAAUsN,IAAM,SAAcuW,GAC/B,OAAOzjB,KAAKm3E,OAAO1zD,EAAK,OAAO,GAAOvW,KAGxCq7D,EAAG3oE,UAAU03E,KAAO,SAAe7zD,GACjC,OAAOzjB,KAAKm3E,OAAO1zD,EAAK,OAAO,GAAMvW,KAIvCq7D,EAAG3oE,UAAU23E,SAAW,SAAmB9zD,GACzC,IAAI+zD,EAAKx3E,KAAKm3E,OAAO1zD,GAGrB,GAAI+zD,EAAGtqE,IAAI69D,SAAU,OAAOyM,EAAGN,IAE/B,IAAIhqE,EAA0B,IAApBsqE,EAAGN,IAAIxO,SAAiB8O,EAAGtqE,IAAIygE,KAAKlqD,GAAO+zD,EAAGtqE,IAEpDuqE,EAAOh0D,EAAI8yD,MAAM,GACjBmB,EAAKj0D,EAAIgoD,MAAM,GACftC,EAAMj8D,EAAIi8D,IAAIsO,GAGlB,OAAItO,EAAM,GAAY,IAAPuO,GAAoB,IAARvO,EAAkBqO,EAAGN,IAGrB,IAApBM,EAAGN,IAAIxO,SAAiB8O,EAAGN,IAAIR,MAAM,GAAKc,EAAGN,IAAIhL,MAAM,IAGhE3D,EAAG3oE,UAAUorE,KAAO,SAAevnD,GACjC3B,EAAO2B,GAAO,UAId,IAHA,IAAIvY,GAAK,GAAK,IAAMuY,EAEhB6O,EAAM,EACD/yB,EAAIS,KAAKP,OAAS,EAAGF,GAAK,EAAGA,IACpC+yB,GAAOpnB,EAAIonB,GAAuB,EAAhBtyB,KAAK2oE,MAAMppE,KAAWkkB,EAG1C,OAAO6O,GAITi2C,EAAG3oE,UAAUqrE,MAAQ,SAAgBxnD,GACnC3B,EAAO2B,GAAO,UAGd,IADA,IAAIgnD,EAAQ,EACHlrE,EAAIS,KAAKP,OAAS,EAAGF,GAAK,EAAGA,IAAK,CACzC,IAAI+O,GAAqB,EAAhBtO,KAAK2oE,MAAMppE,IAAkB,SAARkrE,EAC9BzqE,KAAK2oE,MAAMppE,GAAM+O,EAAImV,EAAO,EAC5BgnD,EAAQn8D,EAAImV,EAGd,OAAOzjB,KAAKypE,SAGdlB,EAAG3oE,UAAUy3E,KAAO,SAAe5zD,GACjC,OAAOzjB,KAAKgjB,QAAQioD,MAAMxnD,IAG5B8kD,EAAG3oE,UAAU+3E,KAAO,SAAezsE,GACjC4W,EAAsB,IAAf5W,EAAEw9D,UACT5mD,GAAQ5W,EAAE6/D,UAEV,IAAIr8D,EAAI1O,KACJ8R,EAAI5G,EAAE8X,QAGRtU,EADiB,IAAfA,EAAEg6D,SACAh6D,EAAE4oE,KAAKpsE,GAEPwD,EAAEsU,QAaR,IATA,IAAIxU,EAAI,IAAI+5D,EAAG,GACXn1D,EAAI,IAAIm1D,EAAG,GAGX11D,EAAI,IAAI01D,EAAG,GACXh1D,EAAI,IAAIg1D,EAAG,GAEXn/D,EAAI,EAEDsF,EAAEG,UAAYiD,EAAEjD,UACrBH,EAAEg9D,OAAO,GACT55D,EAAE45D,OAAO,KACPtiE,EAMJ,IAHA,IAAIwuE,EAAK9lE,EAAEkR,QACP60D,EAAKnpE,EAAEsU,SAEHtU,EAAEq8D,UAAU,CAClB,IAAK,IAAIxrE,EAAI,EAAGu4E,EAAK,EAAyB,KAArBppE,EAAEi6D,MAAM,GAAKmP,IAAav4E,EAAI,KAAMA,EAAGu4E,IAAO,GACvE,GAAIv4E,EAAI,EAEN,IADAmP,EAAEg9D,OAAOnsE,GACFA,KAAM,IACPiP,EAAEupE,SAAW3kE,EAAE2kE,WACjBvpE,EAAEk/D,KAAKkK,GACPxkE,EAAEu6D,KAAKkK,IAGTrpE,EAAEk9D,OAAO,GACTt4D,EAAEs4D,OAAO,GAIb,IAAK,IAAIjiE,EAAI,EAAGuuE,EAAK,EAAyB,KAArBlmE,EAAE62D,MAAM,GAAKqP,IAAavuE,EAAI,KAAMA,EAAGuuE,IAAO,GACvE,GAAIvuE,EAAI,EAEN,IADAqI,EAAE45D,OAAOjiE,GACFA,KAAM,IACPoJ,EAAEklE,SAAWxkE,EAAEwkE,WACjBllE,EAAE66D,KAAKkK,GACPrkE,EAAEo6D,KAAKkK,IAGThlE,EAAE64D,OAAO,GACTn4D,EAAEm4D,OAAO,GAITh9D,EAAEy6D,IAAIr3D,IAAM,GACdpD,EAAEi/D,KAAK77D,GACPtD,EAAEm/D,KAAK96D,GACPO,EAAEu6D,KAAKp6D,KAEPzB,EAAE67D,KAAKj/D,GACPmE,EAAE86D,KAAKn/D,GACP+E,EAAEo6D,KAAKv6D,IAIX,MAAO,CACL7J,EAAGsJ,EACHvI,EAAGiJ,EACH0kE,IAAKnmE,EAAE6jE,OAAOvsE,KAOlBm/D,EAAG3oE,UAAUs4E,OAAS,SAAiBhtE,GACrC4W,EAAsB,IAAf5W,EAAEw9D,UACT5mD,GAAQ5W,EAAE6/D,UAEV,IAAIxhE,EAAIvJ,KACJsK,EAAIY,EAAE8X,QAGRzZ,EADiB,IAAfA,EAAEm/D,SACAn/D,EAAE+tE,KAAKpsE,GAEP3B,EAAEyZ,QAQR,IALA,IAuCI1B,EAvCA62D,EAAK,IAAI5P,EAAG,GACZ6P,EAAK,IAAI7P,EAAG,GAEZrV,EAAQ5oD,EAAE0Y,QAEPzZ,EAAE8uE,KAAK,GAAK,GAAK/tE,EAAE+tE,KAAK,GAAK,GAAG,CACrC,IAAK,IAAI94E,EAAI,EAAGu4E,EAAK,EAAyB,KAArBvuE,EAAEo/D,MAAM,GAAKmP,IAAav4E,EAAI,KAAMA,EAAGu4E,IAAO,GACvE,GAAIv4E,EAAI,EAEN,IADAgK,EAAEmiE,OAAOnsE,GACFA,KAAM,GACP44E,EAAGJ,SACLI,EAAGzK,KAAKxa,GAGVilB,EAAGzM,OAAO,GAId,IAAK,IAAIjiE,EAAI,EAAGuuE,EAAK,EAAyB,KAArB1tE,EAAEq+D,MAAM,GAAKqP,IAAavuE,EAAI,KAAMA,EAAGuuE,IAAO,GACvE,GAAIvuE,EAAI,EAEN,IADAa,EAAEohE,OAAOjiE,GACFA,KAAM,GACP2uE,EAAGL,SACLK,EAAG1K,KAAKxa,GAGVklB,EAAG1M,OAAO,GAIVniE,EAAE4/D,IAAI7+D,IAAM,GACdf,EAAEokE,KAAKrjE,GACP6tE,EAAGxK,KAAKyK,KAER9tE,EAAEqjE,KAAKpkE,GACP6uE,EAAGzK,KAAKwK,IAeZ,OATE72D,EADgB,IAAd/X,EAAE8uE,KAAK,GACHF,EAEAC,GAGAC,KAAK,GAAK,GAChB/2D,EAAIosD,KAAKxiE,GAGJoW,GAGTinD,EAAG3oE,UAAUq4E,IAAM,SAAcx0D,GAC/B,GAAIzjB,KAAK+qE,SAAU,OAAOtnD,EAAI/V,MAC9B,GAAI+V,EAAIsnD,SAAU,OAAO/qE,KAAK0N,MAE9B,IAAInE,EAAIvJ,KAAKgjB,QACT1Y,EAAImZ,EAAIT,QACZzZ,EAAEm/D,SAAW,EACbp+D,EAAEo+D,SAAW,EAGb,IAAK,IAAIz2C,EAAQ,EAAG1oB,EAAEsF,UAAYvE,EAAEuE,SAAUojB,IAC5C1oB,EAAEmiE,OAAO,GACTphE,EAAEohE,OAAO,GAGX,OAAG,CACD,KAAOniE,EAAEsF,UACPtF,EAAEmiE,OAAO,GAEX,KAAOphE,EAAEuE,UACPvE,EAAEohE,OAAO,GAGX,IAAIzgE,EAAI1B,EAAE4/D,IAAI7+D,GACd,GAAIW,EAAI,EAAG,CAET,IAAI2B,EAAIrD,EACRA,EAAIe,EACJA,EAAIsC,OACC,GAAU,IAAN3B,GAAyB,IAAdX,EAAE+tE,KAAK,GAC3B,MAGF9uE,EAAEokE,KAAKrjE,GAGT,OAAOA,EAAEqrE,OAAO1jD,IAIlBs2C,EAAG3oE,UAAU04E,KAAO,SAAe70D,GACjC,OAAOzjB,KAAK23E,KAAKl0D,GAAKla,EAAE+tE,KAAK7zD,IAG/B8kD,EAAG3oE,UAAUiP,OAAS,WACpB,OAA+B,KAAP,EAAhB7O,KAAK2oE,MAAM,KAGrBJ,EAAG3oE,UAAUm4E,MAAQ,WACnB,OAA+B,KAAP,EAAhB/3E,KAAK2oE,MAAM,KAIrBJ,EAAG3oE,UAAU6rE,MAAQ,SAAgBhoD,GACnC,OAAOzjB,KAAK2oE,MAAM,GAAKllD,GAIzB8kD,EAAG3oE,UAAU24E,MAAQ,SAAgB/K,GACnC1rD,EAAsB,kBAAR0rD,GACd,IAAIviE,EAAIuiE,EAAM,GACVxgE,GAAKwgE,EAAMviE,GAAK,GAChBD,EAAI,GAAKC,EAGb,GAAIjL,KAAKP,QAAUuN,EAGjB,OAFAhN,KAAKiqE,QAAQj9D,EAAI,GACjBhN,KAAK2oE,MAAM37D,IAAMhC,EACVhL,KAKT,IADA,IAAIyqE,EAAQz/D,EACHzL,EAAIyN,EAAa,IAAVy9D,GAAelrE,EAAIS,KAAKP,OAAQF,IAAK,CACnD,IAAI+O,EAAoB,EAAhBtO,KAAK2oE,MAAMppE,GAEnBkrE,GADAn8D,GAAKm8D,KACS,GACdn8D,GAAK,SACLtO,KAAK2oE,MAAMppE,GAAK+O,EAMlB,OAJc,IAAVm8D,IACFzqE,KAAK2oE,MAAMppE,GAAKkrE,EAChBzqE,KAAKP,UAEAO,MAGTuoE,EAAG3oE,UAAUmrE,OAAS,WACpB,OAAuB,IAAhB/qE,KAAKP,QAAkC,IAAlBO,KAAK2oE,MAAM,IAGzCJ,EAAG3oE,UAAUy4E,KAAO,SAAe50D,GACjC,IAOInC,EAPAonD,EAAWjlD,EAAM,EAErB,GAAsB,IAAlBzjB,KAAK0oE,WAAmBA,EAAU,OAAQ,EAC9C,GAAsB,IAAlB1oE,KAAK0oE,UAAkBA,EAAU,OAAO,EAK5C,GAHA1oE,KAAKypE,QAGDzpE,KAAKP,OAAS,EAChB6hB,EAAM,MACD,CACDonD,IACFjlD,GAAOA,GAGT3B,EAAO2B,GAAO,SAAW,qBAEzB,IAAInV,EAAoB,EAAhBtO,KAAK2oE,MAAM,GACnBrnD,EAAMhT,IAAMmV,EAAM,EAAInV,EAAImV,GAAO,EAAI,EAEvC,OAAsB,IAAlBzjB,KAAK0oE,SAA8B,GAANpnD,EAC1BA,GAOTinD,EAAG3oE,UAAUupE,IAAM,SAAc1lD,GAC/B,GAAsB,IAAlBzjB,KAAK0oE,UAAmC,IAAjBjlD,EAAIilD,SAAgB,OAAQ,EACvD,GAAsB,IAAlB1oE,KAAK0oE,UAAmC,IAAjBjlD,EAAIilD,SAAgB,OAAO,EAEtD,IAAIpnD,EAAMthB,KAAKw4E,KAAK/0D,GACpB,OAAsB,IAAlBzjB,KAAK0oE,SAA8B,GAANpnD,EAC1BA,GAITinD,EAAG3oE,UAAU44E,KAAO,SAAe/0D,GAEjC,GAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAQ,OAAO,EACrC,GAAIO,KAAKP,OAASgkB,EAAIhkB,OAAQ,OAAQ,EAGtC,IADA,IAAI6hB,EAAM,EACD/hB,EAAIS,KAAKP,OAAS,EAAGF,GAAK,EAAGA,IAAK,CACzC,IAAIgK,EAAoB,EAAhBvJ,KAAK2oE,MAAMppE,GACf+K,EAAmB,EAAfmZ,EAAIklD,MAAMppE,GAElB,GAAIgK,IAAMe,EAAV,CACIf,EAAIe,EACNgX,GAAO,EACE/X,EAAIe,IACbgX,EAAM,GAER,OAEF,OAAOA,GAGTinD,EAAG3oE,UAAU64E,IAAM,SAAch1D,GAC/B,OAA0B,IAAnBzjB,KAAKq4E,KAAK50D,IAGnB8kD,EAAG3oE,UAAU84E,GAAK,SAAaj1D,GAC7B,OAAyB,IAAlBzjB,KAAKmpE,IAAI1lD,IAGlB8kD,EAAG3oE,UAAU+4E,KAAO,SAAel1D,GACjC,OAAOzjB,KAAKq4E,KAAK50D,IAAQ,GAG3B8kD,EAAG3oE,UAAUg5E,IAAM,SAAcn1D,GAC/B,OAAOzjB,KAAKmpE,IAAI1lD,IAAQ,GAG1B8kD,EAAG3oE,UAAUi5E,IAAM,SAAcp1D,GAC/B,OAA2B,IAApBzjB,KAAKq4E,KAAK50D,IAGnB8kD,EAAG3oE,UAAUk5E,GAAK,SAAar1D,GAC7B,OAA0B,IAAnBzjB,KAAKmpE,IAAI1lD,IAGlB8kD,EAAG3oE,UAAUm5E,KAAO,SAAet1D,GACjC,OAAOzjB,KAAKq4E,KAAK50D,IAAQ,GAG3B8kD,EAAG3oE,UAAUo5E,IAAM,SAAcv1D,GAC/B,OAAOzjB,KAAKmpE,IAAI1lD,IAAQ,GAG1B8kD,EAAG3oE,UAAUq5E,IAAM,SAAcx1D,GAC/B,OAA0B,IAAnBzjB,KAAKq4E,KAAK50D,IAGnB8kD,EAAG3oE,UAAUs5E,GAAK,SAAaz1D,GAC7B,OAAyB,IAAlBzjB,KAAKmpE,IAAI1lD,IAOlB8kD,EAAGK,IAAM,SAAcnlD,GACrB,OAAO,IAAI01D,EAAI11D,IAGjB8kD,EAAG3oE,UAAUw5E,MAAQ,SAAgBC,GAGnC,OAFAv3D,GAAQ9hB,KAAK4oE,IAAK,yCAClB9mD,EAAyB,IAAlB9hB,KAAK0oE,SAAgB,iCACrB2Q,EAAIC,UAAUt5E,MAAMu5E,UAAUF,IAGvC9Q,EAAG3oE,UAAU45E,QAAU,WAErB,OADA13D,EAAO9hB,KAAK4oE,IAAK,wDACV5oE,KAAK4oE,IAAI6Q,YAAYz5E,OAG9BuoE,EAAG3oE,UAAU25E,UAAY,SAAoBF,GAE3C,OADAr5E,KAAK4oE,IAAMyQ,EACJr5E,MAGTuoE,EAAG3oE,UAAU85E,SAAW,SAAmBL,GAEzC,OADAv3D,GAAQ9hB,KAAK4oE,IAAK,yCACX5oE,KAAKu5E,UAAUF,IAGxB9Q,EAAG3oE,UAAU+5E,OAAS,SAAiBl2D,GAErC,OADA3B,EAAO9hB,KAAK4oE,IAAK,sCACV5oE,KAAK4oE,IAAI/yB,IAAI71C,KAAMyjB,IAG5B8kD,EAAG3oE,UAAUg6E,QAAU,SAAkBn2D,GAEvC,OADA3B,EAAO9hB,KAAK4oE,IAAK,uCACV5oE,KAAK4oE,IAAI8E,KAAK1tE,KAAMyjB,IAG7B8kD,EAAG3oE,UAAUi6E,OAAS,SAAiBp2D,GAErC,OADA3B,EAAO9hB,KAAK4oE,IAAK,sCACV5oE,KAAK4oE,IAAIgF,IAAI5tE,KAAMyjB,IAG5B8kD,EAAG3oE,UAAUk6E,QAAU,SAAkBr2D,GAEvC,OADA3B,EAAO9hB,KAAK4oE,IAAK,uCACV5oE,KAAK4oE,IAAI+E,KAAK3tE,KAAMyjB,IAG7B8kD,EAAG3oE,UAAUm6E,OAAS,SAAiBt2D,GAErC,OADA3B,EAAO9hB,KAAK4oE,IAAK,sCACV5oE,KAAK4oE,IAAIoR,IAAIh6E,KAAMyjB,IAG5B8kD,EAAG3oE,UAAUq6E,OAAS,SAAiBx2D,GAGrC,OAFA3B,EAAO9hB,KAAK4oE,IAAK,sCACjB5oE,KAAK4oE,IAAIsR,SAASl6E,KAAMyjB,GACjBzjB,KAAK4oE,IAAIM,IAAIlpE,KAAMyjB,IAG5B8kD,EAAG3oE,UAAUu6E,QAAU,SAAkB12D,GAGvC,OAFA3B,EAAO9hB,KAAK4oE,IAAK,sCACjB5oE,KAAK4oE,IAAIsR,SAASl6E,KAAMyjB,GACjBzjB,KAAK4oE,IAAIgJ,KAAK5xE,KAAMyjB,IAG7B8kD,EAAG3oE,UAAUw6E,OAAS,WAGpB,OAFAt4D,EAAO9hB,KAAK4oE,IAAK,sCACjB5oE,KAAK4oE,IAAIyR,SAASr6E,MACXA,KAAK4oE,IAAI4M,IAAIx1E,OAGtBuoE,EAAG3oE,UAAU06E,QAAU,WAGrB,OAFAx4D,EAAO9hB,KAAK4oE,IAAK,uCACjB5oE,KAAK4oE,IAAIyR,SAASr6E,MACXA,KAAK4oE,IAAI6M,KAAKz1E,OAIvBuoE,EAAG3oE,UAAU26E,QAAU,WAGrB,OAFAz4D,EAAO9hB,KAAK4oE,IAAK,uCACjB5oE,KAAK4oE,IAAIyR,SAASr6E,MACXA,KAAK4oE,IAAIthC,KAAKtnC,OAGvBuoE,EAAG3oE,UAAU46E,QAAU,WAGrB,OAFA14D,EAAO9hB,KAAK4oE,IAAK,uCACjB5oE,KAAK4oE,IAAIyR,SAASr6E,MACXA,KAAK4oE,IAAI0P,KAAKt4E,OAIvBuoE,EAAG3oE,UAAU66E,OAAS,WAGpB,OAFA34D,EAAO9hB,KAAK4oE,IAAK,sCACjB5oE,KAAK4oE,IAAIyR,SAASr6E,MACXA,KAAK4oE,IAAI4D,IAAIxsE,OAGtBuoE,EAAG3oE,UAAU86E,OAAS,SAAiBj3D,GAGrC,OAFA3B,EAAO9hB,KAAK4oE,MAAQnlD,EAAImlD,IAAK,qBAC7B5oE,KAAK4oE,IAAIyR,SAASr6E,MACXA,KAAK4oE,IAAIn9D,IAAIzL,KAAMyjB,IAI5B,IAAIk3D,EAAS,CACXC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,MAIV,SAASC,EAAQ93E,EAAMgI,GAErBlL,KAAKkD,KAAOA,EACZlD,KAAKkL,EAAI,IAAIq9D,EAAGr9D,EAAG,IACnBlL,KAAK8C,EAAI9C,KAAKkL,EAAE+D,YAChBjP,KAAKmK,EAAI,IAAIo+D,EAAG,GAAGoN,OAAO31E,KAAK8C,GAAG6qE,KAAK3tE,KAAKkL,GAE5ClL,KAAKmpB,IAAMnpB,KAAKi7E,OAiDlB,SAASC,IACPF,EAAOl7E,KACLE,KACA,OACA,2EA+DJ,SAASm7E,IACPH,EAAOl7E,KACLE,KACA,OACA,kEAIJ,SAASo7E,IACPJ,EAAOl7E,KACLE,KACA,OACA,yDAIJ,SAASq7E,IAEPL,EAAOl7E,KACLE,KACA,QACA,uEA8CJ,SAASm5E,EAAK/uE,GACZ,GAAiB,kBAANA,EAAgB,CACzB,IAAIkxE,EAAQ/S,EAAGgT,OAAOnxE,GACtBpK,KAAKoK,EAAIkxE,EAAMpwE,EACflL,KAAKs7E,MAAQA,OAEbx5D,EAAO1X,EAAEquE,IAAI,GAAI,kCACjBz4E,KAAKoK,EAAIA,EACTpK,KAAKs7E,MAAQ,KAkOjB,SAASE,EAAMpxE,GACb+uE,EAAIr5E,KAAKE,KAAMoK,GAEfpK,KAAKiyB,MAAQjyB,KAAKoK,EAAE6E,YAChBjP,KAAKiyB,MAAQ,KAAO,IACtBjyB,KAAKiyB,OAAS,GAAMjyB,KAAKiyB,MAAQ,IAGnCjyB,KAAKiL,EAAI,IAAIs9D,EAAG,GAAGoN,OAAO31E,KAAKiyB,OAC/BjyB,KAAK03E,GAAK13E,KAAKy7E,KAAKz7E,KAAKiL,EAAEuqE,OAC3Bx1E,KAAK07E,KAAO17E,KAAKiL,EAAEitE,OAAOl4E,KAAKoK,GAE/BpK,KAAK27E,KAAO37E,KAAK07E,KAAKxS,IAAIlpE,KAAKiL,GAAGyrE,MAAM,GAAGQ,IAAIl3E,KAAKoK,GACpDpK,KAAK27E,KAAO37E,KAAK27E,KAAKrE,KAAKt3E,KAAKiL,GAChCjL,KAAK27E,KAAO37E,KAAKiL,EAAE2iE,IAAI5tE,KAAK27E,MA5a9BX,EAAOp7E,UAAUq7E,KAAO,WACtB,IAAI9xD,EAAM,IAAIo/C,EAAG,MAEjB,OADAp/C,EAAIw/C,MAAQ,IAAItmE,MAAM8I,KAAK0I,KAAK7T,KAAK8C,EAAI,KAClCqmB,GAGT6xD,EAAOp7E,UAAUg8E,QAAU,SAAkBn4D,GAG3C,IACIo4D,EADA5wE,EAAIwY,EAGR,GACEzjB,KAAKyZ,MAAMxO,EAAGjL,KAAKmpB,KAGnB0yD,GADA5wE,GADAA,EAAIjL,KAAK87E,MAAM7wE,IACTyiE,KAAK1tE,KAAKmpB,MACPla,kBACF4sE,EAAO77E,KAAK8C,GAErB,IAAIqmE,EAAM0S,EAAO77E,KAAK8C,GAAK,EAAImI,EAAEutE,KAAKx4E,KAAKkL,GAgB3C,OAfY,IAARi+D,GACFl+D,EAAE09D,MAAM,GAAK,EACb19D,EAAExL,OAAS,GACF0pE,EAAM,EACfl+D,EAAE0iE,KAAK3tE,KAAKkL,QAEIya,IAAZ1a,EAAEw+D,MAEJx+D,EAAEw+D,QAGFx+D,EAAE8wE,SAIC9wE,GAGT+vE,EAAOp7E,UAAU6Z,MAAQ,SAAgBmK,EAAOnC,GAC9CmC,EAAM8nD,OAAO1rE,KAAK8C,EAAG,EAAG2e,IAG1Bu5D,EAAOp7E,UAAUk8E,MAAQ,SAAgBr4D,GACvC,OAAOA,EAAImuD,KAAK5xE,KAAKmK,IASvB0V,EAASq7D,EAAMF,GAEfE,EAAKt7E,UAAU6Z,MAAQ,SAAgBmK,EAAOqjD,GAK5C,IAHA,IAAIgP,EAAO,QAEP+F,EAAS7wE,KAAKkD,IAAIuV,EAAMnkB,OAAQ,GAC3BF,EAAI,EAAGA,EAAIy8E,EAAQz8E,IAC1B0nE,EAAO0B,MAAMppE,GAAKqkB,EAAM+kD,MAAMppE,GAIhC,GAFA0nE,EAAOxnE,OAASu8E,EAEZp4D,EAAMnkB,QAAU,EAGlB,OAFAmkB,EAAM+kD,MAAM,GAAK,OACjB/kD,EAAMnkB,OAAS,GAKjB,IAAIwnB,EAAOrD,EAAM+kD,MAAM,GAGvB,IAFA1B,EAAO0B,MAAM1B,EAAOxnE,UAAYwnB,EAAOgvD,EAElC12E,EAAI,GAAIA,EAAIqkB,EAAMnkB,OAAQF,IAAK,CAClC,IAAIkE,EAAwB,EAAjBmgB,EAAM+kD,MAAMppE,GACvBqkB,EAAM+kD,MAAMppE,EAAI,KAAQkE,EAAOwyE,IAAS,EAAMhvD,IAAS,GACvDA,EAAOxjB,EAETwjB,KAAU,GACVrD,EAAM+kD,MAAMppE,EAAI,IAAM0nB,EACT,IAATA,GAAcrD,EAAMnkB,OAAS,GAC/BmkB,EAAMnkB,QAAU,GAEhBmkB,EAAMnkB,QAAU,GAIpBy7E,EAAKt7E,UAAUk8E,MAAQ,SAAgBr4D,GAErCA,EAAIklD,MAAMllD,EAAIhkB,QAAU,EACxBgkB,EAAIklD,MAAMllD,EAAIhkB,OAAS,GAAK,EAC5BgkB,EAAIhkB,QAAU,EAId,IADA,IAAI+qE,EAAK,EACAjrE,EAAI,EAAGA,EAAIkkB,EAAIhkB,OAAQF,IAAK,CACnC,IAAI+O,EAAmB,EAAfmV,EAAIklD,MAAMppE,GAClBirE,GAAU,IAAJl8D,EACNmV,EAAIklD,MAAMppE,GAAU,SAALirE,EACfA,EAAS,GAAJl8D,GAAak8D,EAAK,SAAa,GAUtC,OANkC,IAA9B/mD,EAAIklD,MAAMllD,EAAIhkB,OAAS,KACzBgkB,EAAIhkB,SAC8B,IAA9BgkB,EAAIklD,MAAMllD,EAAIhkB,OAAS,IACzBgkB,EAAIhkB,UAGDgkB,GAST5D,EAASs7D,EAAMH,GAQfn7D,EAASu7D,EAAMJ,GASfn7D,EAASw7D,EAAQL,GAEjBK,EAAOz7E,UAAUk8E,MAAQ,SAAgBr4D,GAGvC,IADA,IAAIgnD,EAAQ,EACHlrE,EAAI,EAAGA,EAAIkkB,EAAIhkB,OAAQF,IAAK,CACnC,IAAIusE,EAA0B,IAAL,EAAfroD,EAAIklD,MAAMppE,IAAiBkrE,EACjCD,EAAU,SAALsB,EACTA,KAAQ,GAERroD,EAAIklD,MAAMppE,GAAKirE,EACfC,EAAQqB,EAKV,OAHc,IAAVrB,IACFhnD,EAAIklD,MAAMllD,EAAIhkB,UAAYgrE,GAErBhnD,GAIT8kD,EAAGgT,OAAS,SAAgBr4E,GAE1B,GAAIy3E,EAAOz3E,GAAO,OAAOy3E,EAAOz3E,GAEhC,IAAIo4E,EACJ,GAAa,SAATp4E,EACFo4E,EAAQ,IAAIJ,OACP,GAAa,SAATh4E,EACTo4E,EAAQ,IAAIH,OACP,GAAa,SAATj4E,EACTo4E,EAAQ,IAAIF,MACP,IAAa,WAATl4E,EAGT,MAAM,IAAIa,MAAM,iBAAmBb,GAFnCo4E,EAAQ,IAAID,EAMd,OAFAV,EAAOz3E,GAAQo4E,EAERA,GAkBTnC,EAAIv5E,UAAUy6E,SAAW,SAAmB9wE,GAC1CuY,EAAsB,IAAfvY,EAAEm/D,SAAgB,iCACzB5mD,EAAOvY,EAAEq/D,IAAK,oCAGhBuQ,EAAIv5E,UAAUs6E,SAAW,SAAmB3wE,EAAGe,GAC7CwX,EAAqC,KAA7BvY,EAAEm/D,SAAWp+D,EAAEo+D,UAAiB,iCACxC5mD,EAAOvY,EAAEq/D,KAAOr/D,EAAEq/D,MAAQt+D,EAAEs+D,IAC1B,oCAGJuQ,EAAIv5E,UAAU67E,KAAO,SAAelyE,GAClC,OAAIvJ,KAAKs7E,MAAct7E,KAAKs7E,MAAMM,QAAQryE,GAAGgwE,UAAUv5E,MAChDuJ,EAAE+tE,KAAKt3E,KAAKoK,GAAGmvE,UAAUv5E,OAGlCm5E,EAAIv5E,UAAU4sE,IAAM,SAAcjjE,GAChC,OAAIA,EAAEwhE,SACGxhE,EAAEyZ,QAGJhjB,KAAKoK,EAAEwjE,IAAIrkE,GAAGgwE,UAAUv5E,OAGjCm5E,EAAIv5E,UAAUi2C,IAAM,SAActsC,EAAGe,GACnCtK,KAAKk6E,SAAS3wE,EAAGe,GAEjB,IAAIgX,EAAM/X,EAAEssC,IAAIvrC,GAIhB,OAHIgX,EAAI6nD,IAAInpE,KAAKoK,IAAM,GACrBkX,EAAIqsD,KAAK3tE,KAAKoK,GAETkX,EAAIi4D,UAAUv5E,OAGvBm5E,EAAIv5E,UAAU8tE,KAAO,SAAenkE,EAAGe,GACrCtK,KAAKk6E,SAAS3wE,EAAGe,GAEjB,IAAIgX,EAAM/X,EAAEmkE,KAAKpjE,GAIjB,OAHIgX,EAAI6nD,IAAInpE,KAAKoK,IAAM,GACrBkX,EAAIqsD,KAAK3tE,KAAKoK,GAETkX,GAGT63D,EAAIv5E,UAAUguE,IAAM,SAAcrkE,EAAGe,GACnCtK,KAAKk6E,SAAS3wE,EAAGe,GAEjB,IAAIgX,EAAM/X,EAAEqkE,IAAItjE,GAIhB,OAHIgX,EAAI+2D,KAAK,GAAK,GAChB/2D,EAAIosD,KAAK1tE,KAAKoK,GAETkX,EAAIi4D,UAAUv5E,OAGvBm5E,EAAIv5E,UAAU+tE,KAAO,SAAepkE,EAAGe,GACrCtK,KAAKk6E,SAAS3wE,EAAGe,GAEjB,IAAIgX,EAAM/X,EAAEokE,KAAKrjE,GAIjB,OAHIgX,EAAI+2D,KAAK,GAAK,GAChB/2D,EAAIosD,KAAK1tE,KAAKoK,GAETkX,GAGT63D,EAAIv5E,UAAUo6E,IAAM,SAAczwE,EAAGka,GAEnC,OADAzjB,KAAKq6E,SAAS9wE,GACPvJ,KAAKy7E,KAAKlyE,EAAE8sE,MAAM5yD,KAG3B01D,EAAIv5E,UAAUgyE,KAAO,SAAeroE,EAAGe,GAErC,OADAtK,KAAKk6E,SAAS3wE,EAAGe,GACVtK,KAAKy7E,KAAKlyE,EAAEqoE,KAAKtnE,KAG1B6uE,EAAIv5E,UAAUspE,IAAM,SAAc3/D,EAAGe,GAEnC,OADAtK,KAAKk6E,SAAS3wE,EAAGe,GACVtK,KAAKy7E,KAAKlyE,EAAE2/D,IAAI5+D,KAGzB6uE,EAAIv5E,UAAU61E,KAAO,SAAelsE,GAClC,OAAOvJ,KAAK4xE,KAAKroE,EAAGA,EAAEyZ,UAGxBm2D,EAAIv5E,UAAU41E,IAAM,SAAcjsE,GAChC,OAAOvJ,KAAKkpE,IAAI3/D,EAAGA,IAGrB4vE,EAAIv5E,UAAU0nC,KAAO,SAAe/9B,GAClC,GAAIA,EAAEwhE,SAAU,OAAOxhE,EAAEyZ,QAEzB,IAAIi5D,EAAOj8E,KAAKoK,EAAEqhE,MAAM,GAIxB,GAHA3pD,EAAOm6D,EAAO,IAAM,GAGP,IAATA,EAAY,CACd,IAAIxwE,EAAMzL,KAAKoK,EAAEyrC,IAAI,IAAI0yB,EAAG,IAAImD,OAAO,GACvC,OAAO1rE,KAAKyL,IAAIlC,EAAGkC,GAQrB,IAFA,IAAIT,EAAIhL,KAAKoK,EAAEwsE,KAAK,GAChB5pE,EAAI,GACAhC,EAAE+/D,UAA2B,IAAf//D,EAAEygE,MAAM,IAC5Bz+D,IACAhC,EAAE0gE,OAAO,GAEX5pD,GAAQ9W,EAAE+/D,UAEV,IAAImR,EAAM,IAAI3T,EAAG,GAAG6Q,MAAMp5E,MACtBm8E,EAAOD,EAAIzB,SAIX2B,EAAOp8E,KAAKoK,EAAEwsE,KAAK,GAAGlL,OAAO,GAC7Bj9D,EAAIzO,KAAKoK,EAAE6E,YAGf,IAFAR,EAAI,IAAI85D,EAAG,EAAI95D,EAAIA,GAAG2qE,MAAMp5E,MAEW,IAAhCA,KAAKyL,IAAIgD,EAAG2tE,GAAMjT,IAAIgT,IAC3B1tE,EAAEmrE,QAAQuC,GAOZ,IAJA,IAAI3yE,EAAIxJ,KAAKyL,IAAIgD,EAAGzD,GAChBC,EAAIjL,KAAKyL,IAAIlC,EAAGyB,EAAE2rE,KAAK,GAAGjL,OAAO,IACjC9+D,EAAI5M,KAAKyL,IAAIlC,EAAGyB,GAChBZ,EAAI4C,EACc,IAAfJ,EAAEu8D,IAAI+S,IAAY,CAEvB,IADA,IAAI/yD,EAAMvc,EACDrN,EAAI,EAAoB,IAAjB4pB,EAAIggD,IAAI+S,GAAY38E,IAClC4pB,EAAMA,EAAIixD,SAEZt4D,EAAOviB,EAAI6K,GACX,IAAIE,EAAItK,KAAKyL,IAAIjC,EAAG,IAAI++D,EAAG,GAAGoN,OAAOvrE,EAAI7K,EAAI,IAE7C0L,EAAIA,EAAEgvE,OAAO3vE,GACbd,EAAIc,EAAE8vE,SACNxtE,EAAIA,EAAEqtE,OAAOzwE,GACbY,EAAI7K,EAGN,OAAO0L,GAGTkuE,EAAIv5E,UAAU04E,KAAO,SAAe/uE,GAClC,IAAI8yE,EAAM9yE,EAAE2uE,OAAOl4E,KAAKoK,GACxB,OAAqB,IAAjBiyE,EAAI3T,UACN2T,EAAI3T,SAAW,EACR1oE,KAAKy7E,KAAKY,GAAK5B,UAEfz6E,KAAKy7E,KAAKY,IAIrBlD,EAAIv5E,UAAU6L,IAAM,SAAclC,EAAGka,GACnC,GAAIA,EAAIsnD,SAAU,OAAO,IAAIxC,EAAG,GAAG6Q,MAAMp5E,MACzC,GAAoB,IAAhByjB,EAAI40D,KAAK,GAAU,OAAO9uE,EAAEyZ,QAEhC,IACIs5D,EAAM,IAAIj6E,MAAM,IACpBi6E,EAAI,GAAK,IAAI/T,EAAG,GAAG6Q,MAAMp5E,MACzBs8E,EAAI,GAAK/yE,EACT,IAAK,IAAIhK,EAAI,EAAGA,EAAI+8E,EAAI78E,OAAQF,IAC9B+8E,EAAI/8E,GAAKS,KAAKkpE,IAAIoT,EAAI/8E,EAAI,GAAIgK,GAGhC,IAAI+X,EAAMg7D,EAAI,GACVz4E,EAAU,EACV04E,EAAa,EACb/3D,EAAQf,EAAIxU,YAAc,GAK9B,IAJc,IAAVuV,IACFA,EAAQ,IAGLjlB,EAAIkkB,EAAIhkB,OAAS,EAAGF,GAAK,EAAGA,IAAK,CAEpC,IADA,IAAIsqE,EAAOpmD,EAAIklD,MAAMppE,GACZkK,EAAI+a,EAAQ,EAAG/a,GAAK,EAAGA,IAAK,CACnC,IAAI+jE,EAAO3D,GAAQpgE,EAAK,EACpB6X,IAAQg7D,EAAI,KACdh7D,EAAMthB,KAAKw1E,IAAIl0D,IAGL,IAARksD,GAAyB,IAAZ3pE,GAKjBA,IAAY,EACZA,GAAW2pE,GA9BE,MA+Bb+O,GACwC,IAANh9E,GAAiB,IAANkK,KAE7C6X,EAAMthB,KAAKkpE,IAAI5nD,EAAKg7D,EAAIz4E,IACxB04E,EAAa,EACb14E,EAAU,IAXR04E,EAAa,EAajB/3D,EAAQ,GAGV,OAAOlD,GAGT63D,EAAIv5E,UAAU05E,UAAY,SAAoB71D,GAC5C,IAAIxY,EAAIwY,EAAI6zD,KAAKt3E,KAAKoK,GAEtB,OAAOa,IAAMwY,EAAMxY,EAAE+X,QAAU/X,GAGjCkuE,EAAIv5E,UAAU65E,YAAc,SAAsBh2D,GAChD,IAAInC,EAAMmC,EAAIT,QAEd,OADA1B,EAAIsnD,IAAM,KACHtnD,GAOTinD,EAAGiU,KAAO,SAAe/4D,GACvB,OAAO,IAAI+3D,EAAK/3D,IAmBlB5D,EAAS27D,EAAMrC,GAEfqC,EAAK57E,UAAU05E,UAAY,SAAoB71D,GAC7C,OAAOzjB,KAAKy7E,KAAKh4D,EAAI4yD,MAAMr2E,KAAKiyB,SAGlCupD,EAAK57E,UAAU65E,YAAc,SAAsBh2D,GACjD,IAAIxY,EAAIjL,KAAKy7E,KAAKh4D,EAAIylD,IAAIlpE,KAAK07E,OAE/B,OADAzwE,EAAE29D,IAAM,KACD39D,GAGTuwE,EAAK57E,UAAUgyE,KAAO,SAAeroE,EAAGe,GACtC,GAAIf,EAAEwhE,UAAYzgE,EAAEygE,SAGlB,OAFAxhE,EAAEo/D,MAAM,GAAK,EACbp/D,EAAE9J,OAAS,EACJ8J,EAGT,IAAIqD,EAAIrD,EAAEqoE,KAAKtnE,GACXd,EAAIoD,EAAE6pE,MAAMz2E,KAAKiyB,OAAOi3C,IAAIlpE,KAAK27E,MAAMnF,OAAOx2E,KAAKiyB,OAAOi3C,IAAIlpE,KAAKoK,GACnEuE,EAAI/B,EAAE+gE,KAAKnkE,GAAGkiE,OAAO1rE,KAAKiyB,OAC1B3Q,EAAM3S,EAQV,OANIA,EAAEw6D,IAAInpE,KAAKoK,IAAM,EACnBkX,EAAM3S,EAAEg/D,KAAK3tE,KAAKoK,GACTuE,EAAE0pE,KAAK,GAAK,IACrB/2D,EAAM3S,EAAE++D,KAAK1tE,KAAKoK,IAGbkX,EAAIi4D,UAAUv5E,OAGvBw7E,EAAK57E,UAAUspE,IAAM,SAAc3/D,EAAGe,GACpC,GAAIf,EAAEwhE,UAAYzgE,EAAEygE,SAAU,OAAO,IAAIxC,EAAG,GAAGgR,UAAUv5E,MAEzD,IAAI4M,EAAIrD,EAAE2/D,IAAI5+D,GACVd,EAAIoD,EAAE6pE,MAAMz2E,KAAKiyB,OAAOi3C,IAAIlpE,KAAK27E,MAAMnF,OAAOx2E,KAAKiyB,OAAOi3C,IAAIlpE,KAAKoK,GACnEuE,EAAI/B,EAAE+gE,KAAKnkE,GAAGkiE,OAAO1rE,KAAKiyB,OAC1B3Q,EAAM3S,EAOV,OANIA,EAAEw6D,IAAInpE,KAAKoK,IAAM,EACnBkX,EAAM3S,EAAEg/D,KAAK3tE,KAAKoK,GACTuE,EAAE0pE,KAAK,GAAK,IACrB/2D,EAAM3S,EAAE++D,KAAK1tE,KAAKoK,IAGbkX,EAAIi4D,UAAUv5E,OAGvBw7E,EAAK57E,UAAU04E,KAAO,SAAe/uE,GAGnC,OADUvJ,KAAKy7E,KAAKlyE,EAAE2uE,OAAOl4E,KAAKoK,GAAG8+D,IAAIlpE,KAAK03E,KACnC6B,UAAUv5E,OAn3GzB,YAq3G4CA,6BCr3G5C,IAAIiL,EASJ,SAASwxE,EAAKC,GACZ18E,KAAK08E,KAAOA,EAmBd,GA3BAz1E,EAAOC,QAAU,SAAc/E,GAI7B,OAHK8I,IACHA,EAAI,IAAIwxE,EAAK,OAERxxE,EAAE0xE,SAASx6E,IAMpB8E,EAAOC,QAAQu1E,KAAOA,EAEtBA,EAAK78E,UAAU+8E,SAAW,SAAkBx6E,GAC1C,OAAOnC,KAAK48E,MAAMz6E,IAIpBs6E,EAAK78E,UAAUg9E,MAAQ,SAAe95E,GACpC,GAAI9C,KAAK08E,KAAKG,SACZ,OAAO78E,KAAK08E,KAAKG,SAAS/5E,GAG5B,IADA,IAAIwe,EAAM,IAAIrY,WAAWnG,GAChBvD,EAAI,EAAGA,EAAI+hB,EAAI7hB,OAAQF,IAC9B+hB,EAAI/hB,GAAKS,KAAK08E,KAAKI,UACrB,OAAOx7D,GAGW,kBAATiO,KACLA,KAAK7f,QAAU6f,KAAK7f,OAAOC,gBAE7B8sE,EAAK78E,UAAUg9E,MAAQ,SAAe95E,GACpC,IAAIZ,EAAM,IAAI+G,WAAWnG,GAEzB,OADAysB,KAAK7f,OAAOC,gBAAgBzN,GACrBA,GAEAqtB,KAAK1f,UAAY0f,KAAK1f,SAASF,gBAExC8sE,EAAK78E,UAAUg9E,MAAQ,SAAe95E,GACpC,IAAIZ,EAAM,IAAI+G,WAAWnG,GAEzB,OADAysB,KAAK1f,SAASF,gBAAgBzN,GACvBA,GAIkB,kBAAXJ,SAEhB26E,EAAK78E,UAAUg9E,MAAQ,WACrB,MAAM,IAAI74E,MAAM,8BAKpB,IACE,IAAI2L,EAAS,EAAQ,OACrB,GAAkC,oBAAvBA,EAAOuI,YAChB,MAAM,IAAIlU,MAAM,iBAElB04E,EAAK78E,UAAUg9E,MAAQ,SAAe95E,GACpC,OAAO4M,EAAOuI,YAAYnV,IAE5B,MAAOwG,4BCzDX,IAAImX,EAAS,gBAEb,SAASs8D,EAAe/0D,GACjBvH,EAAOE,SAASqH,KAAMA,EAAMvH,EAAOtd,KAAK6kB,IAK7C,IAHA,IAAI7lB,EAAO6lB,EAAIvoB,OAAS,EAAK,EACzBgiB,EAAM,IAAIpf,MAAMF,GAEX5C,EAAI,EAAGA,EAAI4C,EAAK5C,IACvBkiB,EAAIliB,GAAKyoB,EAAIg1D,aAAiB,EAAJz9E,GAG5B,OAAOkiB,EAGT,SAASw7D,EAAU1uE,GACjB,KAAa,EAAOA,EAAE9O,OAAQ8O,IAC5BA,EADW,GACJ,EAIX,SAAS2uE,EAAYlnE,EAAGmnE,EAAaC,EAASC,EAAMC,GAalD,IAZA,IASIC,EAAIC,EAAIC,EAAIC,EATZC,EAAWP,EAAQ,GACnBQ,EAAWR,EAAQ,GACnBS,EAAWT,EAAQ,GACnBU,EAAWV,EAAQ,GAEnBW,EAAK/nE,EAAE,GAAKmnE,EAAY,GACxBa,EAAKhoE,EAAE,GAAKmnE,EAAY,GACxBc,EAAKjoE,EAAE,GAAKmnE,EAAY,GACxBe,EAAKloE,EAAE,GAAKmnE,EAAY,GAExBgB,EAAQ,EAEHpqE,EAAQ,EAAGA,EAAQupE,EAASvpE,IACnCwpE,EAAKI,EAASI,IAAO,IAAMH,EAAUI,IAAO,GAAM,KAAQH,EAAUI,IAAO,EAAK,KAAQH,EAAc,IAALI,GAAaf,EAAYgB,KAC1HX,EAAKG,EAASK,IAAO,IAAMJ,EAAUK,IAAO,GAAM,KAAQJ,EAAUK,IAAO,EAAK,KAAQJ,EAAc,IAALC,GAAaZ,EAAYgB,KAC1HV,EAAKE,EAASM,IAAO,IAAML,EAAUM,IAAO,GAAM,KAAQL,EAAUE,IAAO,EAAK,KAAQD,EAAc,IAALE,GAAab,EAAYgB,KAC1HT,EAAKC,EAASO,IAAO,IAAMN,EAAUG,IAAO,GAAM,KAAQF,EAAUG,IAAO,EAAK,KAAQF,EAAc,IAALG,GAAad,EAAYgB,KAC1HJ,EAAKR,EACLS,EAAKR,EACLS,EAAKR,EACLS,EAAKR,EAYP,OATAH,GAAOF,EAAKU,IAAO,KAAO,GAAOV,EAAMW,IAAO,GAAM,MAAS,GAAOX,EAAMY,IAAO,EAAK,MAAS,EAAKZ,EAAU,IAALa,IAAcf,EAAYgB,KACnIX,GAAOH,EAAKW,IAAO,KAAO,GAAOX,EAAMY,IAAO,GAAM,MAAS,GAAOZ,EAAMa,IAAO,EAAK,MAAS,EAAKb,EAAU,IAALU,IAAcZ,EAAYgB,KACnIV,GAAOJ,EAAKY,IAAO,KAAO,GAAOZ,EAAMa,IAAO,GAAM,MAAS,GAAOb,EAAMU,IAAO,EAAK,MAAS,EAAKV,EAAU,IAALW,IAAcb,EAAYgB,KACnIT,GAAOL,EAAKa,IAAO,KAAO,GAAOb,EAAMU,IAAO,GAAM,MAAS,GAAOV,EAAMW,IAAO,EAAK,MAAS,EAAKX,EAAU,IAALY,IAAcd,EAAYgB,KAM5H,CALPZ,KAAY,EACZC,KAAY,EACZC,KAAY,EACZC,KAAY,GAMd,IAAIU,EAAO,CAAC,EAAM,EAAM,EAAM,EAAM,EAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IACpEnoE,EAAI,WAGN,IADA,IAAItM,EAAI,IAAItH,MAAM,KACToH,EAAI,EAAGA,EAAI,IAAKA,IAErBE,EAAEF,GADAA,EAAI,IACCA,GAAK,EAEJA,GAAK,EAAK,IAYtB,IARA,IAAI4zE,EAAO,GACPgB,EAAW,GACXjB,EAAU,CAAC,GAAI,GAAI,GAAI,IACvBkB,EAAc,CAAC,GAAI,GAAI,GAAI,IAG3B5vE,EAAI,EACJ6vE,EAAK,EACAh/E,EAAI,EAAGA,EAAI,MAAOA,EAAG,CAE5B,IAAIi/E,EAAKD,EAAMA,GAAM,EAAMA,GAAM,EAAMA,GAAM,EAAMA,GAAM,EACzDC,EAAMA,IAAO,EAAW,IAALA,EAAa,GAChCnB,EAAK3uE,GAAK8vE,EACVH,EAASG,GAAM9vE,EAGf,IAAI0pE,EAAKzuE,EAAE+E,GACP+vE,EAAK90E,EAAEyuE,GACPsG,EAAK/0E,EAAE80E,GAGP7xE,EAAa,IAARjD,EAAE60E,GAAqB,SAALA,EAC3BpB,EAAQ,GAAG1uE,GAAM9B,GAAK,GAAOA,IAAM,EACnCwwE,EAAQ,GAAG1uE,GAAM9B,GAAK,GAAOA,IAAM,GACnCwwE,EAAQ,GAAG1uE,GAAM9B,GAAK,EAAMA,IAAM,GAClCwwE,EAAQ,GAAG1uE,GAAK9B,EAGhBA,EAAU,SAAL8xE,EAAwB,MAALD,EAAsB,IAALrG,EAAmB,SAAJ1pE,EACxD4vE,EAAY,GAAGE,GAAO5xE,GAAK,GAAOA,IAAM,EACxC0xE,EAAY,GAAGE,GAAO5xE,GAAK,GAAOA,IAAM,GACxC0xE,EAAY,GAAGE,GAAO5xE,GAAK,EAAMA,IAAM,GACvC0xE,EAAY,GAAGE,GAAM5xE,EAEX,IAAN8B,EACFA,EAAI6vE,EAAK,GAET7vE,EAAI0pE,EAAKzuE,EAAEA,EAAEA,EAAE+0E,EAAKtG,KACpBmG,GAAM50E,EAAEA,EAAE40E,KAId,MAAO,CACLlB,KAAMA,EACNgB,SAAUA,EACVjB,QAASA,EACTkB,YAAaA,GAzDT,GA6DR,SAASK,EAAKh/E,GACZK,KAAK8E,KAAOi4E,EAAcp9E,GAC1BK,KAAK4+E,SAGPD,EAAItpE,UAAY,GAChBspE,EAAIE,QAAU,GACdF,EAAI/+E,UAAUyV,UAAYspE,EAAItpE,UAC9BspE,EAAI/+E,UAAUi/E,QAAUF,EAAIE,QAC5BF,EAAI/+E,UAAUg/E,OAAS,WAOrB,IANA,IAAIE,EAAW9+E,KAAK8E,KAChB+5E,EAAUC,EAASr/E,OACnB69E,EAAUuB,EAAU,EACpBE,EAAyB,GAAfzB,EAAU,GAEpBH,EAAc,GACThzE,EAAI,EAAGA,EAAI00E,EAAS10E,IAC3BgzE,EAAYhzE,GAAK20E,EAAS30E,GAG5B,IAAKA,EAAI00E,EAAS10E,EAAI40E,EAAQ50E,IAAK,CACjC,IAAIyC,EAAIuwE,EAAYhzE,EAAI,GAEpBA,EAAI00E,IAAY,GAClBjyE,EAAKA,GAAK,EAAMA,IAAM,GACtBA,EACGqJ,EAAEonE,KAAKzwE,IAAM,KAAO,GACpBqJ,EAAEonE,KAAMzwE,IAAM,GAAM,MAAS,GAC7BqJ,EAAEonE,KAAMzwE,IAAM,EAAK,MAAS,EAC5BqJ,EAAEonE,KAAS,IAAJzwE,GAEVA,GAAKwxE,EAAMj0E,EAAI00E,EAAW,IAAM,IACvBA,EAAU,GAAK10E,EAAI00E,IAAY,IACxCjyE,EACGqJ,EAAEonE,KAAKzwE,IAAM,KAAO,GACpBqJ,EAAEonE,KAAMzwE,IAAM,GAAM,MAAS,GAC7BqJ,EAAEonE,KAAMzwE,IAAM,EAAK,MAAS,EAC5BqJ,EAAEonE,KAAS,IAAJzwE,IAGZuwE,EAAYhzE,GAAKgzE,EAAYhzE,EAAI00E,GAAWjyE,EAI9C,IADA,IAAIoyE,EAAiB,GACZC,EAAK,EAAGA,EAAKF,EAAQE,IAAM,CAClC,IAAIC,EAAMH,EAASE,EACfE,EAAKhC,EAAY+B,GAAOD,EAAK,EAAI,EAAI,IAGvCD,EAAeC,GADbA,EAAK,GAAKC,GAAO,EACEC,EAGnBlpE,EAAEqoE,YAAY,GAAGroE,EAAEonE,KAAK8B,IAAO,KAC/BlpE,EAAEqoE,YAAY,GAAGroE,EAAEonE,KAAM8B,IAAO,GAAM,MACtClpE,EAAEqoE,YAAY,GAAGroE,EAAEonE,KAAM8B,IAAO,EAAK,MACrClpE,EAAEqoE,YAAY,GAAGroE,EAAEonE,KAAU,IAAL8B,IAI9Bn/E,KAAKo/E,SAAW9B,EAChBt9E,KAAKq/E,aAAelC,EACpBn9E,KAAKs/E,gBAAkBN,GAGzBL,EAAI/+E,UAAU2/E,gBAAkB,SAAUvpE,GAExC,OAAOknE,EADPlnE,EAAI+mE,EAAc/mE,GACGhW,KAAKq/E,aAAcppE,EAAEmnE,QAASnnE,EAAEonE,KAAMr9E,KAAKo/E,WAGlET,EAAI/+E,UAAU4/E,aAAe,SAAUxpE,GACrC,IAAIyL,EAAMzhB,KAAKu/E,gBAAgBvpE,GAC3BgS,EAAMvH,EAAOg/D,YAAY,IAK7B,OAJAz3D,EAAI03D,cAAcj+D,EAAI,GAAI,GAC1BuG,EAAI03D,cAAcj+D,EAAI,GAAI,GAC1BuG,EAAI03D,cAAcj+D,EAAI,GAAI,GAC1BuG,EAAI03D,cAAcj+D,EAAI,GAAI,IACnBuG,GAGT22D,EAAI/+E,UAAU+/E,aAAe,SAAU3pE,GAIrC,IAAI4pE,GAHJ5pE,EAAI+mE,EAAc/mE,IAGP,GACXA,EAAE,GAAKA,EAAE,GACTA,EAAE,GAAK4pE,EAEP,IAAIn+D,EAAMy7D,EAAWlnE,EAAGhW,KAAKs/E,gBAAiBrpE,EAAEqoE,YAAaroE,EAAEooE,SAAUr+E,KAAKo/E,UAC1Ep3D,EAAMvH,EAAOg/D,YAAY,IAK7B,OAJAz3D,EAAI03D,cAAcj+D,EAAI,GAAI,GAC1BuG,EAAI03D,cAAcj+D,EAAI,GAAI,GAC1BuG,EAAI03D,cAAcj+D,EAAI,GAAI,GAC1BuG,EAAI03D,cAAcj+D,EAAI,GAAI,IACnBuG,GAGT22D,EAAI/+E,UAAUigF,MAAQ,WACpB5C,EAASj9E,KAAKq/E,cACdpC,EAASj9E,KAAKs/E,iBACdrC,EAASj9E,KAAK8E,OAGhBmC,EAAOC,QAAQy3E,IAAMA,yBCnOrB,IAAIrrE,EAAM,EAAQ,OACdmN,EAAS,gBACTq/D,EAAY,EAAQ,OACpBjgE,EAAW,EAAQ,OACnBkgE,EAAQ,EAAQ,OAChB5S,EAAM,EAAQ,OACd6S,EAAS,EAAQ,OAqCrB,SAASC,EAAc5uE,EAAM1R,EAAK+Y,EAAIlF,GACpCssE,EAAUhgF,KAAKE,MAEf,IAAI0J,EAAI+W,EAAOiB,MAAM,EAAG,GAExB1hB,KAAKkgF,QAAU,IAAI5sE,EAAIqrE,IAAIh/E,GAC3B,IAAIwgF,EAAKngF,KAAKkgF,QAAQV,aAAa91E,GACnC1J,KAAKogF,OAAS,IAAIL,EAAMI,GACxBznE,EA/BF,SAAiB6W,EAAM7W,EAAIynE,GACzB,GAAkB,KAAdznE,EAAGjZ,OAEL,OADA8vB,EAAK8wD,OAAS5/D,EAAOpN,OAAO,CAACqF,EAAI+H,EAAOtd,KAAK,CAAC,EAAG,EAAG,EAAG,MAChDsd,EAAOpN,OAAO,CAACqF,EAAI+H,EAAOtd,KAAK,CAAC,EAAG,EAAG,EAAG,MAElD,IAAIm9E,EAAQ,IAAIP,EAAMI,GAClBh+E,EAAMuW,EAAGjZ,OACT8gF,EAAQp+E,EAAM,GAClBm+E,EAAMx6E,OAAO4S,GACT6nE,IACFA,EAAQ,GAAKA,EACbD,EAAMx6E,OAAO2a,EAAOiB,MAAM6+D,EAAO,KAEnCD,EAAMx6E,OAAO2a,EAAOiB,MAAM,EAAG,IAC7B,IAAI8+D,EAAe,EAANr+E,EACT4tB,EAAOtP,EAAOiB,MAAM,GACxBqO,EAAK0wD,YAAYD,EAAQ,EAAG,GAC5BF,EAAMx6E,OAAOiqB,GACbR,EAAK8wD,OAASC,EAAMp+D,MACpB,IAAIT,EAAMhB,EAAOtd,KAAKosB,EAAK8wD,QAE3B,OADAL,EAAOv+D,GACAA,EAUFi/D,CAAO1gF,KAAM0Y,EAAIynE,GAEtBngF,KAAK2gF,MAAQlgE,EAAOtd,KAAKuV,GACzB1Y,KAAK4gF,OAASngE,EAAOg/D,YAAY,GACjCz/E,KAAK6gF,UAAYpgE,EAAOg/D,YAAY,GACpCz/E,KAAK8gF,SAAWttE,EAChBxT,KAAK+gF,MAAQ,EACb/gF,KAAK4E,KAAO,EACZ5E,KAAKghF,MAAQ3vE,EAEbrR,KAAKihF,SAAW,KAChBjhF,KAAKkhF,SAAU,EAGjBrhE,EAASogE,EAAcH,GAEvBG,EAAargF,UAAUuhF,QAAU,SAAUC,GACzC,IAAKphF,KAAKkhF,SAAWlhF,KAAK+gF,MAAO,CAC/B,IAAIM,EAAO,GAAMrhF,KAAK+gF,MAAQ,GAC1BM,EAAO,KACTA,EAAO5gE,EAAOiB,MAAM2/D,EAAM,GAC1BrhF,KAAKogF,OAAOt6E,OAAOu7E,IAIvBrhF,KAAKkhF,SAAU,EACf,IAAIz/D,EAAMzhB,KAAKghF,MAAMrwE,QAAQ3Q,KAAMohF,GAOnC,OANIphF,KAAK8gF,SACP9gF,KAAKogF,OAAOt6E,OAAOs7E,GAEnBphF,KAAKogF,OAAOt6E,OAAO2b,GAErBzhB,KAAK4E,MAAQw8E,EAAM3hF,OACZgiB,GAGTw+D,EAAargF,UAAU0hF,OAAS,WAC9B,GAAIthF,KAAK8gF,WAAa9gF,KAAKihF,SAAU,MAAM,IAAIl9E,MAAM,oDAErD,IAAI2R,EAAMy3D,EAAIntE,KAAKogF,OAAOmB,MAAmB,EAAbvhF,KAAK+gF,MAAuB,EAAZ/gF,KAAK4E,MAAW5E,KAAKkgF,QAAQV,aAAax/E,KAAKqgF,SAC/F,GAAIrgF,KAAK8gF,UAnFX,SAAkBv3E,EAAGe,GACnB,IAAImX,EAAM,EACNlY,EAAE9J,SAAW6K,EAAE7K,QAAQgiB,IAG3B,IADA,IAAItf,EAAMgJ,KAAKkD,IAAI9E,EAAE9J,OAAQ6K,EAAE7K,QACtBF,EAAI,EAAGA,EAAI4C,IAAO5C,EACzBkiB,GAAQlY,EAAEhK,GAAK+K,EAAE/K,GAGnB,OAAOkiB,EA0Ec+/D,CAAQ9rE,EAAK1V,KAAKihF,UAAW,MAAM,IAAIl9E,MAAM,oDAElE/D,KAAKihF,SAAWvrE,EAChB1V,KAAKkgF,QAAQL,SAGfI,EAAargF,UAAU6hF,WAAa,WAClC,GAAIzhF,KAAK8gF,WAAargE,EAAOE,SAAS3gB,KAAKihF,UAAW,MAAM,IAAIl9E,MAAM,mDAEtE,OAAO/D,KAAKihF,UAGdhB,EAAargF,UAAU8hF,WAAa,SAAqBhsE,GACvD,IAAK1V,KAAK8gF,SAAU,MAAM,IAAI/8E,MAAM,mDAEpC/D,KAAKihF,SAAWvrE,GAGlBuqE,EAAargF,UAAU+hF,OAAS,SAAiB35D,GAC/C,GAAIhoB,KAAKkhF,QAAS,MAAM,IAAIn9E,MAAM,8CAElC/D,KAAKogF,OAAOt6E,OAAOkiB,GACnBhoB,KAAK+gF,OAAS/4D,EAAIvoB,QAGpBwH,EAAOC,QAAU+4E,yBCpHjB,IAAI2B,EAAU,EAAQ,OAClBC,EAAY,EAAQ,OACpBC,EAAQ,EAAQ,OAMpB56E,EAAQ66E,aAAe76E,EAAQ86E,OAASJ,EAAQG,aAChD76E,EAAQ+6E,eAAiB/6E,EAAQg7E,SAAWN,EAAQK,eACpD/6E,EAAQi7E,eAAiBj7E,EAAQk7E,SAAWP,EAAUM,eACtDj7E,EAAQm7E,iBAAmBn7E,EAAQo7E,WAAaT,EAAUQ,iBAC1Dn7E,EAAQq7E,YAAcr7E,EAAQs7E,WAR9B,WACE,OAAOpjF,OAAO0B,KAAKghF,2BCLrB,IAAIW,EAAa,EAAQ,OACrBhiE,EAAS,gBACTiiE,EAAQ,EAAQ,IAChBzC,EAAe,EAAQ,OACvBH,EAAY,EAAQ,OACpBxsE,EAAM,EAAQ,OACdqvE,EAAO,EAAQ,OAGnB,SAASP,EAAU/wE,EAAM1R,EAAK+Y,GAC5BonE,EAAUhgF,KAAKE,MAEfA,KAAK4gF,OAAS,IAAIgC,EAClB5iF,KAAK6iF,WAAQ,EACb7iF,KAAKkgF,QAAU,IAAI5sE,EAAIqrE,IAAIh/E,GAC3BK,KAAK2gF,MAAQlgE,EAAOtd,KAAKuV,GACzB1Y,KAAKghF,MAAQ3vE,EACbrR,KAAK8iF,cAAe,EA+BtB,SAASF,IACP5iF,KAAKqtB,MAAQ5M,EAAOg/D,YAAY,GA8ClC,SAAS4C,EAAkBU,EAAOC,EAAUtqE,GAC1C,IAAI0U,EAASs1D,EAAMK,EAAMtpC,eACzB,IAAKrsB,EAAQ,MAAM,IAAI5pB,UAAU,sBAGjC,GADkB,kBAAPkV,IAAiBA,EAAK+H,EAAOtd,KAAKuV,IACzB,QAAhB0U,EAAO/b,MAAkBqH,EAAGjZ,SAAW2tB,EAAO1U,GAAI,MAAM,IAAIlV,UAAU,qBAAuBkV,EAAGjZ,QAGpG,GADwB,kBAAbujF,IAAuBA,EAAWviE,EAAOtd,KAAK6/E,IACrDA,EAASvjF,SAAW2tB,EAAOztB,IAAM,EAAG,MAAM,IAAI6D,UAAU,sBAAwBw/E,EAASvjF,QAE7F,MAAoB,WAAhB2tB,EAAO5oB,KACF,IAAIy7E,EAAa7yD,EAAOnmB,OAAQ+7E,EAAUtqE,GAAI,GAC5B,SAAhB0U,EAAO5oB,KACT,IAAIi+E,EAAWr1D,EAAOnmB,OAAQ+7E,EAAUtqE,GAAI,GAG9C,IAAI0pE,EAASh1D,EAAOnmB,OAAQ+7E,EAAUtqE,GAxGhC,EAAQ,MAavBmH,CAASuiE,EAAUtC,GAEnBsC,EAASxiF,UAAUuhF,QAAU,SAAU1rE,GAErC,IAAI2rE,EACA6B,EAFJjjF,KAAK4gF,OAAO/qC,IAAIpgC,GAIhB,IADA,IAAIgM,EAAM,GACF2/D,EAAQphF,KAAK4gF,OAAOhzD,IAAI5tB,KAAK8iF,eACnCG,EAAQjjF,KAAKghF,MAAMxtE,QAAQxT,KAAMohF,GACjC3/D,EAAI3O,KAAKmwE,GAEX,OAAOxiE,EAAOpN,OAAOoO,IAGvB2gE,EAASxiF,UAAU0hF,OAAS,WAC1B,IAAIF,EAAQphF,KAAK4gF,OAAOsC,QACxB,GAAIljF,KAAK8iF,aACP,OA0CJ,SAAgB/kC,GACd,IAAIolC,EAASplC,EAAK,IAClB,GAAIolC,EAAS,GAAKA,EAAS,GACzB,MAAM,IAAIp/E,MAAM,0BAElB,IAAIxE,GAAK,EACT,OAASA,EAAI4jF,GACX,GAAIplC,EAAMx+C,GAAK,GAAK4jF,MAAcA,EAChC,MAAM,IAAIp/E,MAAM,0BAGpB,GAAe,KAAXo/E,EAAe,OAEnB,OAAOplC,EAAK/6C,MAAM,EAAG,GAAKmgF,GAvDjBC,CAAMpjF,KAAKghF,MAAMxtE,QAAQxT,KAAMohF,IACjC,GAAIA,EACT,MAAM,IAAIr9E,MAAM,sCAIpBq+E,EAASxiF,UAAUyjF,eAAiB,SAAUC,GAE5C,OADAtjF,KAAK8iF,eAAiBQ,EACftjF,MAOT4iF,EAAShjF,UAAUi2C,IAAM,SAAUpgC,GACjCzV,KAAKqtB,MAAQ5M,EAAOpN,OAAO,CAACrT,KAAKqtB,MAAO5X,KAG1CmtE,EAAShjF,UAAUguB,IAAM,SAAU21D,GACjC,IAAI9hE,EACJ,GAAI8hE,GACF,GAAIvjF,KAAKqtB,MAAM5tB,OAAS,GAGtB,OAFAgiB,EAAMzhB,KAAKqtB,MAAMrqB,MAAM,EAAG,IAC1BhD,KAAKqtB,MAAQrtB,KAAKqtB,MAAMrqB,MAAM,IACvBye,OAGT,GAAIzhB,KAAKqtB,MAAM5tB,QAAU,GAGvB,OAFAgiB,EAAMzhB,KAAKqtB,MAAMrqB,MAAM,EAAG,IAC1BhD,KAAKqtB,MAAQrtB,KAAKqtB,MAAMrqB,MAAM,IACvBye,EAIX,OAAO,MAGTmhE,EAAShjF,UAAUsjF,MAAQ,WACzB,GAAIljF,KAAKqtB,MAAM5tB,OAAQ,OAAOO,KAAKqtB,OA8CrCnmB,EAAQi7E,eARR,SAAyBY,EAAOC,GAC9B,IAAI51D,EAASs1D,EAAMK,EAAMtpC,eACzB,IAAKrsB,EAAQ,MAAM,IAAI5pB,UAAU,sBAEjC,IAAI1C,EAAO6hF,EAAKK,GAAU,EAAO51D,EAAOztB,IAAKytB,EAAO1U,IACpD,OAAO2pE,EAAiBU,EAAOjiF,EAAKnB,IAAKmB,EAAK4X,KAIhDxR,EAAQm7E,iBAAmBA,yBC3H3B,IAAIK,EAAQ,EAAQ,IAChBD,EAAa,EAAQ,OACrBhiE,EAAS,gBACTw/D,EAAe,EAAQ,OACvBH,EAAY,EAAQ,OACpBxsE,EAAM,EAAQ,OACdqvE,EAAO,EAAQ,OAGnB,SAASX,EAAQ3wE,EAAM1R,EAAK+Y,GAC1BonE,EAAUhgF,KAAKE,MAEfA,KAAK4gF,OAAS,IAAIgC,EAClB5iF,KAAKkgF,QAAU,IAAI5sE,EAAIqrE,IAAIh/E,GAC3BK,KAAK2gF,MAAQlgE,EAAOtd,KAAKuV,GACzB1Y,KAAKghF,MAAQ3vE,EACbrR,KAAK8iF,cAAe,EATP,EAAQ,MAYvBjjE,CAASmiE,EAAQlC,GAEjBkC,EAAOpiF,UAAUuhF,QAAU,SAAU1rE,GAEnC,IAAI2rE,EACA6B,EAFJjjF,KAAK4gF,OAAO/qC,IAAIpgC,GAKhB,IAFA,IAAIgM,EAAM,GAEF2/D,EAAQphF,KAAK4gF,OAAOhzD,OAC1Bq1D,EAAQjjF,KAAKghF,MAAMrwE,QAAQ3Q,KAAMohF,GACjC3/D,EAAI3O,KAAKmwE,GAGX,OAAOxiE,EAAOpN,OAAOoO,IAGvB,IAAI+hE,EAAU/iE,EAAOiB,MAAM,GAAI,IAqB/B,SAASkhE,IACP5iF,KAAKqtB,MAAQ5M,EAAOg/D,YAAY,GA4BlC,SAASwC,EAAgBc,EAAOC,EAAUtqE,GACxC,IAAI0U,EAASs1D,EAAMK,EAAMtpC,eACzB,IAAKrsB,EAAQ,MAAM,IAAI5pB,UAAU,sBAGjC,GADwB,kBAAbw/E,IAAuBA,EAAWviE,EAAOtd,KAAK6/E,IACrDA,EAASvjF,SAAW2tB,EAAOztB,IAAM,EAAG,MAAM,IAAI6D,UAAU,sBAAwBw/E,EAASvjF,QAG7F,GADkB,kBAAPiZ,IAAiBA,EAAK+H,EAAOtd,KAAKuV,IACzB,QAAhB0U,EAAO/b,MAAkBqH,EAAGjZ,SAAW2tB,EAAO1U,GAAI,MAAM,IAAIlV,UAAU,qBAAuBkV,EAAGjZ,QAEpG,MAAoB,WAAhB2tB,EAAO5oB,KACF,IAAIy7E,EAAa7yD,EAAOnmB,OAAQ+7E,EAAUtqE,GACxB,SAAhB0U,EAAO5oB,KACT,IAAIi+E,EAAWr1D,EAAOnmB,OAAQ+7E,EAAUtqE,GAG1C,IAAIspE,EAAO50D,EAAOnmB,OAAQ+7E,EAAUtqE,GAhE7CspE,EAAOpiF,UAAU0hF,OAAS,WACxB,IAAIF,EAAQphF,KAAK4gF,OAAOsC,QACxB,GAAIljF,KAAK8iF,aAGP,OAFA1B,EAAQphF,KAAKghF,MAAMrwE,QAAQ3Q,KAAMohF,GACjCphF,KAAKkgF,QAAQL,QACNuB,EAGT,IAAKA,EAAMqC,OAAOD,GAEhB,MADAxjF,KAAKkgF,QAAQL,QACP,IAAI97E,MAAM,sCAIpBi+E,EAAOpiF,UAAUyjF,eAAiB,SAAUC,GAE1C,OADAtjF,KAAK8iF,eAAiBQ,EACftjF,MAOT4iF,EAAShjF,UAAUi2C,IAAM,SAAUpgC,GACjCzV,KAAKqtB,MAAQ5M,EAAOpN,OAAO,CAACrT,KAAKqtB,MAAO5X,KAG1CmtE,EAAShjF,UAAUguB,IAAM,WACvB,GAAI5tB,KAAKqtB,MAAM5tB,OAAS,GAAI,CAC1B,IAAIgiB,EAAMzhB,KAAKqtB,MAAMrqB,MAAM,EAAG,IAE9B,OADAhD,KAAKqtB,MAAQrtB,KAAKqtB,MAAMrqB,MAAM,IACvBye,EAET,OAAO,MAGTmhE,EAAShjF,UAAUsjF,MAAQ,WAKzB,IAJA,IAAI/gF,EAAM,GAAKnC,KAAKqtB,MAAM5tB,OACtBikF,EAAUjjE,EAAOg/D,YAAYt9E,GAE7B5C,GAAK,IACAA,EAAI4C,GACXuhF,EAAQC,WAAWxhF,EAAK5C,GAG1B,OAAOkhB,EAAOpN,OAAO,CAACrT,KAAKqtB,MAAOq2D,KA8BpCx8E,EAAQ+6E,eAAiBA,EACzB/6E,EAAQ66E,aATR,SAAuBgB,EAAOC,GAC5B,IAAI51D,EAASs1D,EAAMK,EAAMtpC,eACzB,IAAKrsB,EAAQ,MAAM,IAAI5pB,UAAU,sBAEjC,IAAI1C,EAAO6hF,EAAKK,GAAU,EAAO51D,EAAOztB,IAAKytB,EAAO1U,IACpD,OAAOupE,EAAec,EAAOjiF,EAAKnB,IAAKmB,EAAK4X,4BC7G9C,IAAI+H,EAAS,gBACTmjE,EAASnjE,EAAOiB,MAAM,GAAI,GAW9B,SAASmiE,EAAWpiE,GAClB,IAAIuG,EAAMvH,EAAOg/D,YAAY,IAK7B,OAJAz3D,EAAI03D,cAAcj+D,EAAI,KAAO,EAAG,GAChCuG,EAAI03D,cAAcj+D,EAAI,KAAO,EAAG,GAChCuG,EAAI03D,cAAcj+D,EAAI,KAAO,EAAG,GAChCuG,EAAI03D,cAAcj+D,EAAI,KAAO,EAAG,IACzBuG,EAGT,SAAS+3D,EAAOpgF,GACdK,KAAK0J,EAAI/J,EACTK,KAAKkiB,MAAQzB,EAAOiB,MAAM,GAAI,GAC9B1hB,KAAKqtB,MAAQ5M,EAAOg/D,YAAY,GAKlCM,EAAMngF,UAAU0gF,MAAQ,SAAUwD,GAEhC,IADA,IAAIvkF,GAAK,IACAA,EAAIukF,EAAMrkF,QACjBO,KAAKkiB,MAAM3iB,IAAMukF,EAAMvkF,GAEzBS,KAAK+jF,aAGPhE,EAAMngF,UAAUmkF,UAAY,WAK1B,IAJA,IAnCgB/7D,EAqCZve,EAAOu6E,EAFPC,EAlCG,EADSj8D,EAmCChoB,KAAK0J,GAjChBszE,aAAa,GACjBh1D,EAAIg1D,aAAa,GACjBh1D,EAAIg1D,aAAa,GACjBh1D,EAAIg1D,aAAa,KA+BfkH,EAAK,CAAC,EAAG,EAAG,EAAG,GAEf3kF,GAAK,IACAA,EAAI,KAAK,CAchB,IAbwD,KAAlDS,KAAKkiB,SAAS3iB,EAAI,IAAO,GAAM,EAAKA,EAAI,KAG5C2kF,EAAG,IAAMD,EAAG,GACZC,EAAG,IAAMD,EAAG,GACZC,EAAG,IAAMD,EAAG,GACZC,EAAG,IAAMD,EAAG,IAIdD,EAAwB,KAAP,EAARC,EAAG,IAGPx6E,EAAI,EAAGA,EAAI,EAAGA,IACjBw6E,EAAGx6E,GAAMw6E,EAAGx6E,KAAO,GAAmB,EAAZw6E,EAAGx6E,EAAI,KAAW,GAE9Cw6E,EAAG,GAAKA,EAAG,KAAO,EAGdD,IACFC,EAAG,GAAKA,EAAG,GAAM,KAAQ,IAG7BjkF,KAAKkiB,MAAQ2hE,EAAUK,IAGzBnE,EAAMngF,UAAUkG,OAAS,SAAUkiB,GAEjC,IAAIo5D,EACJ,IAFAphF,KAAKqtB,MAAQ5M,EAAOpN,OAAO,CAACrT,KAAKqtB,MAAOrF,IAEjChoB,KAAKqtB,MAAM5tB,QAAU,IAC1B2hF,EAAQphF,KAAKqtB,MAAMrqB,MAAM,EAAG,IAC5BhD,KAAKqtB,MAAQrtB,KAAKqtB,MAAMrqB,MAAM,IAC9BhD,KAAKsgF,MAAMc,IAIfrB,EAAMngF,UAAU2hF,MAAQ,SAAU4C,EAAKC,GAMrC,OALIpkF,KAAKqtB,MAAM5tB,QACbO,KAAKsgF,MAAM7/D,EAAOpN,OAAO,CAACrT,KAAKqtB,MAAOu2D,GAAS,KAGjD5jF,KAAKsgF,MAAMuD,EAAU,CAAC,EAAGM,EAAK,EAAGC,KAC1BpkF,KAAKkiB,OAGdjb,EAAOC,QAAU64E,qBC1EjB94E,EAAOC,QAdP,SAAiBwR,GAGf,IAFA,IACIoI,EADA3e,EAAMuW,EAAGjZ,OAEN0C,KAAO,CAEZ,GAAa,OADb2e,EAAOpI,EAAG0I,UAAUjf,IAGb,CACL2e,IACApI,EAAGirE,WAAW7iE,EAAM3e,GACpB,MAJAuW,EAAGirE,WAAW,EAAGxhF,4BCNvB,IAAIgrE,EAAM,EAAQ,OAElBjmE,EAAQyJ,QAAU,SAAU4e,EAAMu0D,GAChC,IAAIruE,EAAO03D,EAAI2W,EAAOv0D,EAAKoxD,OAG3B,OADApxD,EAAKoxD,MAAQpxD,EAAK2wD,QAAQV,aAAa/pE,GAChC8Z,EAAKoxD,OAGdz5E,EAAQsM,QAAU,SAAU+b,EAAMu0D,GAChC,IAAIO,EAAM90D,EAAKoxD,MAEfpxD,EAAKoxD,MAAQmD,EACb,IAAIriE,EAAM8N,EAAK2wD,QAAQP,aAAamE,GAEpC,OAAO3W,EAAI1rD,EAAK4iE,2BCflB,IAAI5jE,EAAS,gBACT0sD,EAAM,EAAQ,OAElB,SAASmX,EAAc/0D,EAAM9Z,EAAMjC,GACjC,IAAIrR,EAAMsT,EAAKhW,OACXgiB,EAAM0rD,EAAI13D,EAAM8Z,EAAKqxD,QAGzB,OAFArxD,EAAKqxD,OAASrxD,EAAKqxD,OAAO59E,MAAMb,GAChCotB,EAAKoxD,MAAQlgE,EAAOpN,OAAO,CAACkc,EAAKoxD,MAAOntE,EAAUiC,EAAOgM,IAClDA,EAGTva,EAAQyJ,QAAU,SAAU4e,EAAM9Z,EAAMjC,GAItC,IAHA,IACIrR,EADAsf,EAAMhB,EAAOg/D,YAAY,GAGtBhqE,EAAKhW,QAAQ,CAMlB,GAL2B,IAAvB8vB,EAAKqxD,OAAOnhF,SACd8vB,EAAKqxD,OAASrxD,EAAK2wD,QAAQV,aAAajwD,EAAKoxD,OAC7CpxD,EAAKoxD,MAAQlgE,EAAOg/D,YAAY,MAG9BlwD,EAAKqxD,OAAOnhF,QAAUgW,EAAKhW,QAIxB,CACLgiB,EAAMhB,EAAOpN,OAAO,CAACoO,EAAK6iE,EAAa/0D,EAAM9Z,EAAMjC,KACnD,MALArR,EAAMotB,EAAKqxD,OAAOnhF,OAClBgiB,EAAMhB,EAAOpN,OAAO,CAACoO,EAAK6iE,EAAa/0D,EAAM9Z,EAAKzS,MAAM,EAAGb,GAAMqR,KACjEiC,EAAOA,EAAKzS,MAAMb,GAOtB,OAAOsf,0BC/BT,IAAIhB,EAAS,gBAEb,SAAS8jE,EAAah1D,EAAMi1D,EAAWhxE,GAMrC,IALA,IAIIg6D,EAAKjqE,EAHLhE,GAAK,EAELkiB,EAAM,IAEDliB,EAHC,GAKRiuE,EAAOgX,EAAa,GAAM,EAAIjlF,EAAO,IAAO,EAE5CkiB,IAAiB,KADjBle,EAFMgsB,EAAK2wD,QAAQV,aAAajwD,EAAKoxD,OAEzB,GAAKnT,KACUjuE,EAAI,EAC/BgwB,EAAKoxD,MAAQ8D,EAAQl1D,EAAKoxD,MAAOntE,EAAUg6D,EAAMjqE,GAEnD,OAAOke,EAGT,SAASgjE,EAAS56E,EAAQtG,GACxB,IAAIpB,EAAM0H,EAAOpK,OACbF,GAAK,EACLkiB,EAAMhB,EAAOg/D,YAAY51E,EAAOpK,QAGpC,IAFAoK,EAAS4W,EAAOpN,OAAO,CAACxJ,EAAQ4W,EAAOtd,KAAK,CAACI,QAEpChE,EAAI4C,GACXsf,EAAIliB,GAAKsK,EAAOtK,IAAM,EAAIsK,EAAOtK,EAAI,IAAM,EAG7C,OAAOkiB,EAGTva,EAAQyJ,QAAU,SAAU4e,EAAM6xD,EAAO5tE,GAKvC,IAJA,IAAIrR,EAAMi/E,EAAM3hF,OACZgiB,EAAMhB,EAAOg/D,YAAYt9E,GACzB5C,GAAK,IAEAA,EAAI4C,GACXsf,EAAIliB,GAAKglF,EAAYh1D,EAAM6xD,EAAM7hF,GAAIiU,GAGvC,OAAOiO,0BCxCT,IAAIhB,EAAS,gBAEb,SAAS8jE,EAAah1D,EAAMi1D,EAAWhxE,GACrC,IACIiO,EADM8N,EAAK2wD,QAAQV,aAAajwD,EAAKoxD,OAC3B,GAAK6D,EAOnB,OALAj1D,EAAKoxD,MAAQlgE,EAAOpN,OAAO,CACzBkc,EAAKoxD,MAAM39E,MAAM,GACjByd,EAAOtd,KAAK,CAACqQ,EAAUgxE,EAAY/iE,MAG9BA,EAGTva,EAAQyJ,QAAU,SAAU4e,EAAM6xD,EAAO5tE,GAKvC,IAJA,IAAIrR,EAAMi/E,EAAM3hF,OACZgiB,EAAMhB,EAAOg/D,YAAYt9E,GACzB5C,GAAK,IAEAA,EAAI4C,GACXsf,EAAIliB,GAAKglF,EAAYh1D,EAAM6xD,EAAM7hF,GAAIiU,GAGvC,OAAOiO,0BCvBT,IAAI0rD,EAAM,EAAQ,OACd1sD,EAAS,gBACTu/D,EAAS,EAAQ,OAErB,SAAS0E,EAAUn1D,GACjB,IAAI9N,EAAM8N,EAAK2wD,QAAQX,gBAAgBhwD,EAAKoxD,OAE5C,OADAX,EAAOzwD,EAAKoxD,OACLl/D,EAITva,EAAQyJ,QAAU,SAAU4e,EAAM6xD,GAChC,IAAIuD,EAAWx5E,KAAK0I,KAAKutE,EAAM3hF,OAFjB,IAGV+kB,EAAQ+K,EAAKqxD,OAAOnhF,OACxB8vB,EAAKqxD,OAASngE,EAAOpN,OAAO,CAC1Bkc,EAAKqxD,OACLngE,EAAOg/D,YANK,GAMOkF,KAErB,IAAK,IAAIplF,EAAI,EAAGA,EAAIolF,EAAUplF,IAAK,CACjC,IAAIkiB,EAAMijE,EAASn1D,GACf3O,EAAS4D,EAVD,GAUSjlB,EACrBgwB,EAAKqxD,OAAOlB,cAAcj+D,EAAI,GAAIb,EAAS,GAC3C2O,EAAKqxD,OAAOlB,cAAcj+D,EAAI,GAAIb,EAAS,GAC3C2O,EAAKqxD,OAAOlB,cAAcj+D,EAAI,GAAIb,EAAS,GAC3C2O,EAAKqxD,OAAOlB,cAAcj+D,EAAI,GAAIb,EAAS,IAE7C,IAAIyjE,EAAM90D,EAAKqxD,OAAO59E,MAAM,EAAGo+E,EAAM3hF,QAErC,OADA8vB,EAAKqxD,OAASrxD,EAAKqxD,OAAO59E,MAAMo+E,EAAM3hF,QAC/B0tE,EAAIiU,EAAOiD,yBC5BpBn9E,EAAQyJ,QAAU,SAAU4e,EAAMu0D,GAChC,OAAOv0D,EAAK2wD,QAAQV,aAAasE,IAGnC58E,EAAQsM,QAAU,SAAU+b,EAAMu0D,GAChC,OAAOv0D,EAAK2wD,QAAQP,aAAamE,wBCLnC,IAAIc,EAAc,CAChBC,IAAK,EAAQ,OACbC,IAAK,EAAQ,OACbC,IAAK,EAAQ,OACbC,KAAM,EAAQ,OACdC,KAAM,EAAQ,OACdC,IAAK,EAAQ,OACbC,IAAK,EAAQ,OACbC,IAAK,EAAQ,QAGXtD,EAAQ,EAAQ,OAEpB,IAAK,IAAIniF,KAAOmiF,EACdA,EAAMniF,GAAKsH,OAAS29E,EAAY9C,EAAMniF,GAAK0R,MAG7CpK,EAAOC,QAAU46E,yBCjBjB,IAAI3U,EAAM,EAAQ,OAElB,SAASuX,EAAUn1D,GAEjB,OADAA,EAAKoxD,MAAQpxD,EAAK2wD,QAAQV,aAAajwD,EAAKoxD,OACrCpxD,EAAKoxD,MAGdz5E,EAAQyJ,QAAU,SAAU4e,EAAM6xD,GAChC,KAAO7xD,EAAKqxD,OAAOnhF,OAAS2hF,EAAM3hF,QAChC8vB,EAAKqxD,OAASngE,OAAOpN,OAAO,CAACkc,EAAKqxD,OAAQ8D,EAASn1D,KAGrD,IAAI80D,EAAM90D,EAAKqxD,OAAO59E,MAAM,EAAGo+E,EAAM3hF,QAErC,OADA8vB,EAAKqxD,OAASrxD,EAAKqxD,OAAO59E,MAAMo+E,EAAM3hF,QAC/B0tE,EAAIiU,EAAOiD,2BCdpB,IAAI/wE,EAAM,EAAQ,OACdmN,EAAS,gBACTq/D,EAAY,EAAQ,OAGxB,SAASG,EAAc5uE,EAAM1R,EAAK+Y,EAAIlF,GACpCssE,EAAUhgF,KAAKE,MAEfA,KAAKkgF,QAAU,IAAI5sE,EAAIqrE,IAAIh/E,GAC3BK,KAAK2gF,MAAQlgE,EAAOtd,KAAKuV,GACzB1Y,KAAK4gF,OAASngE,EAAOg/D,YAAY,GACjCz/E,KAAK6gF,UAAYpgE,EAAOg/D,YAAY,GACpCz/E,KAAK8gF,SAAWttE,EAChBxT,KAAKghF,MAAQ3vE,EAVA,EAAQ,MAavBwO,CAASogE,EAAcH,GAEvBG,EAAargF,UAAUuhF,QAAU,SAAUC,GACzC,OAAOphF,KAAKghF,MAAMrwE,QAAQ3Q,KAAMohF,EAAOphF,KAAK8gF,WAG9Cb,EAAargF,UAAU0hF,OAAS,WAC9BthF,KAAKkgF,QAAQL,SAGf54E,EAAOC,QAAU+4E,yBC1BjB,IAAIoF,EAAM,EAAQ,OACd/xE,EAAM,EAAQ,OACdgyE,EAAW,EAAQ,IACnBC,EAAW,EAAQ,OACnB5C,EAAO,EAAQ,OAsCnB,SAASV,EAAgBc,EAAOpjF,EAAK+Y,GAEnC,GADAqqE,EAAQA,EAAMtpC,cACV6rC,EAASvC,GAAQ,OAAOzvE,EAAI2uE,eAAec,EAAOpjF,EAAK+Y,GAC3D,GAAI6sE,EAASxC,GAAQ,OAAO,IAAIsC,EAAI,CAAE1lF,IAAKA,EAAK+Y,GAAIA,EAAIrH,KAAM0xE,IAE9D,MAAM,IAAIv/E,UAAU,sBAGtB,SAAS6+E,EAAkBU,EAAOpjF,EAAK+Y,GAErC,GADAqqE,EAAQA,EAAMtpC,cACV6rC,EAASvC,GAAQ,OAAOzvE,EAAI+uE,iBAAiBU,EAAOpjF,EAAK+Y,GAC7D,GAAI6sE,EAASxC,GAAQ,OAAO,IAAIsC,EAAI,CAAE1lF,IAAKA,EAAK+Y,GAAIA,EAAIrH,KAAM0xE,EAAOvvE,SAAS,IAE9E,MAAM,IAAIhQ,UAAU,sBAOtB0D,EAAQ66E,aAAe76E,EAAQ86E,OAxD/B,SAAuBe,EAAOC,GAG5B,IAAIwC,EAAQC,EACZ,GAHA1C,EAAQA,EAAMtpC,cAGV6rC,EAASvC,GACXyC,EAASF,EAASvC,GAAOpjF,IACzB8lF,EAAQH,EAASvC,GAAOrqE,OACnB,KAAI6sE,EAASxC,GAIlB,MAAM,IAAIv/E,UAAU,sBAHpBgiF,EAA+B,EAAtBD,EAASxC,GAAOpjF,IACzB8lF,EAAQF,EAASxC,GAAOrqE,GAK1B,IAAI5X,EAAO6hF,EAAKK,GAAU,EAAOwC,EAAQC,GACzC,OAAOxD,EAAec,EAAOjiF,EAAKnB,IAAKmB,EAAK4X,KA0C9CxR,EAAQ+6E,eAAiB/6E,EAAQg7E,SAAWD,EAC5C/6E,EAAQi7E,eAAiBj7E,EAAQk7E,SAxCjC,SAAyBW,EAAOC,GAG9B,IAAIwC,EAAQC,EACZ,GAHA1C,EAAQA,EAAMtpC,cAGV6rC,EAASvC,GACXyC,EAASF,EAASvC,GAAOpjF,IACzB8lF,EAAQH,EAASvC,GAAOrqE,OACnB,KAAI6sE,EAASxC,GAIlB,MAAM,IAAIv/E,UAAU,sBAHpBgiF,EAA+B,EAAtBD,EAASxC,GAAOpjF,IACzB8lF,EAAQF,EAASxC,GAAOrqE,GAK1B,IAAI5X,EAAO6hF,EAAKK,GAAU,EAAOwC,EAAQC,GACzC,OAAOpD,EAAiBU,EAAOjiF,EAAKnB,IAAKmB,EAAK4X,KA0BhDxR,EAAQm7E,iBAAmBn7E,EAAQo7E,WAAaD,EAChDn7E,EAAQq7E,YAAcr7E,EAAQs7E,WAR9B,WACE,OAAOpjF,OAAO0B,KAAKykF,GAAUlyE,OAAOC,EAAIkvE,sCC3D1C,IAAIkD,EAAa,EAAQ,OACrBC,EAAM,EAAQ,OACd9lE,EAAW,EAAQ,OACnBY,EAAS,gBAETqhE,EAAQ,CACV,eAAgB6D,EAAIb,IAAIc,YAAYD,EAAIE,KACxC,WAAYF,EAAIE,IAChB,cAAeF,EAAIb,IAAIc,YAAYD,EAAIE,KACvC,UAAWF,EAAIE,IACf,UAAWF,EAAIb,IAAIc,YAAYD,EAAIN,KACnC,UAAWM,EAAIN,KAMjB,SAASA,EAAKS,GACZJ,EAAW5lF,KAAKE,MAChB,IAEIwE,EAFAuhF,EAAWD,EAAKz0E,KAAKooC,cACrBpoC,EAAOywE,EAAMiE,GAGfvhF,EADEshF,EAAKtyE,QACA,UAEA,UAET,IAAI7T,EAAMmmF,EAAKnmF,IACV8gB,EAAOE,SAAShhB,KACnBA,EAAM8gB,EAAOtd,KAAKxD,IAEH,YAAbomF,GAAuC,gBAAbA,IAC5BpmF,EAAM8gB,EAAOpN,OAAO,CAAC1T,EAAKA,EAAIqD,MAAM,EAAG,MAEzC,IAAI0V,EAAKotE,EAAKptE,GACT+H,EAAOE,SAASjI,KACnBA,EAAK+H,EAAOtd,KAAKuV,IAEnB1Y,KAAKgmF,KAAO30E,EAAK0gB,OAAO,CACtBpyB,IAAKA,EACL+Y,GAAIA,EACJlU,KAAMA,IA5BVs9E,EAAM6D,IAAM7D,EAAM,WAClBA,EAAMmE,KAAOnE,EAAM,gBACnB76E,EAAOC,QAAUm+E,EACjBxlE,EAASwlE,EAAKK,GA4BdL,EAAIzlF,UAAUuhF,QAAU,SAAU1rE,GAChC,OAAOgL,EAAOtd,KAAKnD,KAAKgmF,KAAKlgF,OAAO2P,KAEtC4vE,EAAIzlF,UAAU0hF,OAAS,WACrB,OAAO7gE,EAAOtd,KAAKnD,KAAKgmF,KAAKzE,+BChD/Br6E,EAAQ,WAAa,CACnBvH,IAAK,EACL+Y,GAAI,GAENxR,EAAQ,WAAaA,EAAQy+E,IAAM,CACjChmF,IAAK,EACL+Y,GAAI,GAENxR,EAAQ,gBAAkBA,EAAQ++E,KAAO,CACvCtmF,IAAK,GACL+Y,GAAI,GAENxR,EAAQ,YAAc,CACpBvH,IAAK,GACL+Y,GAAI,GAENxR,EAAQ,eAAiB,CACvBvH,IAAK,GACL+Y,GAAI,GAENxR,EAAQ,WAAa,CACnBvH,IAAK,GACL+Y,GAAI,0BCtBN,IAAI6vD,EAAK,EAAQ,OACbtwD,EAAc,EAAQ,OAQ1B,SAASiuE,EAAMC,GACb,IACIl7E,EADA9I,EAAMgkF,EAAKC,QAAQt8E,aAEvB,GACEmB,EAAI,IAAIs9D,EAAGtwD,EAAY9V,UAChB8I,EAAEk+D,IAAIgd,EAAKC,UAAY,IAAMn7E,EAAEqsE,KAAK6O,EAAKE,UAAYp7E,EAAEqsE,KAAK6O,EAAKG,SAC1E,OAAOr7E,EAGT,SAASs7E,EAAK1/D,EAAKs/D,GACjB,IAAIK,EAhBN,SAAgBL,GACd,IAAIl7E,EAAIi7E,EAAKC,GAEb,MAAO,CAAEM,QADKx7E,EAAEmuE,MAAM7Q,EAAGiU,KAAK2J,EAAKC,UAAU1L,OAAO,IAAInS,EAAG4d,EAAKO,iBAAiBlN,UACtDmN,UAAW17E,EAAEqtE,KAAK6N,EAAKC,UAarCQ,CAAMT,GACfhkF,EAAMgkF,EAAKC,QAAQt8E,aACnB+8E,EAAU,IAAIte,EAAG1hD,GAAKqiD,IAAIsd,EAAOC,SAASnP,KAAK6O,EAAKC,SACpDU,EAAKD,EAAQzN,MAAM7Q,EAAGiU,KAAK2J,EAAKE,SAChCU,EAAKF,EAAQzN,MAAM7Q,EAAGiU,KAAK2J,EAAKG,SAChCU,EAAOb,EAAKc,YACZ/7E,EAAIi7E,EAAKE,OACTr7E,EAAIm7E,EAAKG,OACT1G,EAAKkH,EAAGpM,OAAOyL,EAAKe,WAAW1N,UAC/B2N,EAAKJ,EAAGrM,OAAOyL,EAAKiB,WAAW5N,UAC/B9vE,EAAIk2E,EAAGjS,KAAKwZ,GAAIvV,KAAKoV,GAAM1P,KAAKpsE,GAAG0mE,KAAK5mE,GAC5C,OAAOm8E,EAAGzZ,KAAKhkE,GAAGkoE,KAAK4U,EAAOG,WAAWrP,KAAK6O,EAAKC,SAAS/a,YAAY5qD,OAAQ,KAAMte,GAExFokF,EAAIL,KAAOA,EAEXj/E,EAAOC,QAAUq/E,0BClCjB,SAAWt/E,EAAQC,GACjB,aAGA,SAAS4a,EAAQ/F,EAAK8K,GACpB,IAAK9K,EAAK,MAAM,IAAIhY,MAAM8iB,GAAO,oBAKnC,SAAShH,EAAUsoD,EAAMC,GACvBD,EAAKE,OAASD,EACd,IAAIE,EAAW,aACfA,EAAS1oE,UAAYwoE,EAAUxoE,UAC/BuoE,EAAKvoE,UAAY,IAAI0oE,EACrBH,EAAKvoE,UAAUqD,YAAcklE,EAK/B,SAASI,EAAItgE,EAAQwX,EAAM+oD,GACzB,GAAID,EAAGE,KAAKxgE,GACV,OAAOA,EAGTjI,KAAK0oE,SAAW,EAChB1oE,KAAK2oE,MAAQ,KACb3oE,KAAKP,OAAS,EAGdO,KAAK4oE,IAAM,KAEI,OAAX3gE,IACW,OAATwX,GAA0B,OAATA,IACnB+oD,EAAS/oD,EACTA,EAAO,IAGTzf,KAAKojB,MAAMnb,GAAU,EAAGwX,GAAQ,GAAI+oD,GAAU,OAYlD,IAAI/nD,EATkB,kBAAXxZ,EACTA,EAAOC,QAAUqhE,EAEjBrhE,EAAQqhE,GAAKA,EAGfA,EAAGA,GAAKA,EACRA,EAAGM,SAAW,GAGd,IAEIpoD,EADoB,qBAAX3e,QAAmD,qBAAlBA,OAAO2e,OACxC3e,OAAO2e,OAEP,gBAEX,MAAOnX,IAgIT,SAASw/D,EAAe3gE,EAAQ6e,GAC9B,IAAIxd,EAAIrB,EAAO+B,WAAW8c,GAE1B,OAAIxd,GAAK,IAAMA,GAAK,GACXA,EAAI,GAEFA,GAAK,IAAMA,GAAK,GAClBA,EAAI,GAEFA,GAAK,IAAMA,GAAK,IAClBA,EAAI,QAEXsY,GAAO,EAAO,wBAA0B3Z,GAI5C,SAAS4gE,EAAc5gE,EAAQ6gE,EAAYhiD,GACzC,IAAI/b,EAAI69D,EAAc3gE,EAAQ6e,GAI9B,OAHIA,EAAQ,GAAKgiD,IACf/9D,GAAK69D,EAAc3gE,EAAQ6e,EAAQ,IAAM,GAEpC/b,EA8CT,SAASg+D,EAAWviD,EAAKlC,EAAOsF,EAAKo/C,GAInC,IAHA,IAAIj+D,EAAI,EACJX,EAAI,EACJnI,EAAMgJ,KAAKkD,IAAIqY,EAAIjnB,OAAQqqB,GACtBvqB,EAAIilB,EAAOjlB,EAAI4C,EAAK5C,IAAK,CAChC,IAAIiK,EAAIkd,EAAIxc,WAAW3K,GAAK,GAE5B0L,GAAKi+D,EAIH5+D,EADEd,GAAK,GACHA,EAAI,GAAK,GAGJA,GAAK,GACVA,EAAI,GAAK,GAITA,EAENsY,EAAOtY,GAAK,GAAKc,EAAI4+D,EAAK,qBAC1Bj+D,GAAKX,EAEP,OAAOW,EA4DT,SAASo8E,EAAMrd,EAAMlpC,GACnBkpC,EAAKrB,MAAQ7nC,EAAI6nC,MACjBqB,EAAKvqE,OAASqhC,EAAIrhC,OAClBuqE,EAAKtB,SAAW5nC,EAAI4nC,SACpBsB,EAAKpB,IAAM9nC,EAAI8nC,IAsCjB,GA9TAL,EAAGE,KAAO,SAAehlD,GACvB,OAAIA,aAAe8kD,GAIJ,OAAR9kD,GAA+B,kBAARA,GAC5BA,EAAIxgB,YAAY4lE,WAAaN,EAAGM,UAAYxmE,MAAMO,QAAQ6gB,EAAIklD,QAGlEJ,EAAGr6D,IAAM,SAAck0B,EAAMF,GAC3B,OAAIE,EAAK+mC,IAAIjnC,GAAS,EAAUE,EACzBF,GAGTqmC,EAAGl6D,IAAM,SAAc+zB,EAAMF,GAC3B,OAAIE,EAAK+mC,IAAIjnC,GAAS,EAAUE,EACzBF,GAGTqmC,EAAG3oE,UAAUwjB,MAAQ,SAAenb,EAAQwX,EAAM+oD,GAChD,GAAsB,kBAAXvgE,EACT,OAAOjI,KAAKopE,YAAYnhE,EAAQwX,EAAM+oD,GAGxC,GAAsB,kBAAXvgE,EACT,OAAOjI,KAAKqpE,WAAWphE,EAAQwX,EAAM+oD,GAG1B,QAAT/oD,IACFA,EAAO,IAETqC,EAAOrC,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,IAGnD,IAAI+E,EAAQ,EACM,OAFlBvc,EAASA,EAAOlF,WAAW+R,QAAQ,OAAQ,KAEhC,KACT0P,IACAxkB,KAAK0oE,SAAW,GAGdlkD,EAAQvc,EAAOxI,SACJ,KAATggB,EACFzf,KAAKspE,UAAUrhE,EAAQuc,EAAOgkD,IAE9BxoE,KAAKupE,WAAWthE,EAAQwX,EAAM+E,GACf,OAAXgkD,GACFxoE,KAAKqpE,WAAWrpE,KAAKkrB,UAAWzL,EAAM+oD,MAM9CD,EAAG3oE,UAAUwpE,YAAc,SAAsBnhE,EAAQwX,EAAM+oD,GACzDvgE,EAAS,IACXjI,KAAK0oE,SAAW,EAChBzgE,GAAUA,GAERA,EAAS,UACXjI,KAAK2oE,MAAQ,CAAU,SAAT1gE,GACdjI,KAAKP,OAAS,GACLwI,EAAS,kBAClBjI,KAAK2oE,MAAQ,CACF,SAAT1gE,EACCA,EAAS,SAAa,UAEzBjI,KAAKP,OAAS,IAEdqiB,EAAO7Z,EAAS,kBAChBjI,KAAK2oE,MAAQ,CACF,SAAT1gE,EACCA,EAAS,SAAa,SACvB,GAEFjI,KAAKP,OAAS,GAGD,OAAX+oE,GAGJxoE,KAAKqpE,WAAWrpE,KAAKkrB,UAAWzL,EAAM+oD,IAGxCD,EAAG3oE,UAAUypE,WAAa,SAAqBphE,EAAQwX,EAAM+oD,GAG3D,GADA1mD,EAAgC,kBAAlB7Z,EAAOxI,QACjBwI,EAAOxI,QAAU,EAGnB,OAFAO,KAAK2oE,MAAQ,CAAC,GACd3oE,KAAKP,OAAS,EACPO,KAGTA,KAAKP,OAAS0L,KAAK0I,KAAK5L,EAAOxI,OAAS,GACxCO,KAAK2oE,MAAQ,IAAItmE,MAAMrC,KAAKP,QAC5B,IAAK,IAAIF,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAC/BS,KAAK2oE,MAAMppE,GAAK,EAGlB,IAAIkK,EAAG6E,EACHk7D,EAAM,EACV,GAAe,OAAXhB,EACF,IAAKjpE,EAAI0I,EAAOxI,OAAS,EAAGgK,EAAI,EAAGlK,GAAK,EAAGA,GAAK,EAC9C+O,EAAIrG,EAAO1I,GAAM0I,EAAO1I,EAAI,IAAM,EAAM0I,EAAO1I,EAAI,IAAM,GACzDS,KAAK2oE,MAAMl/D,IAAO6E,GAAKk7D,EAAO,SAC9BxpE,KAAK2oE,MAAMl/D,EAAI,GAAM6E,IAAO,GAAKk7D,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACP//D,UAGC,GAAe,OAAX++D,EACT,IAAKjpE,EAAI,EAAGkK,EAAI,EAAGlK,EAAI0I,EAAOxI,OAAQF,GAAK,EACzC+O,EAAIrG,EAAO1I,GAAM0I,EAAO1I,EAAI,IAAM,EAAM0I,EAAO1I,EAAI,IAAM,GACzDS,KAAK2oE,MAAMl/D,IAAO6E,GAAKk7D,EAAO,SAC9BxpE,KAAK2oE,MAAMl/D,EAAI,GAAM6E,IAAO,GAAKk7D,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACP//D,KAIN,OAAOzJ,KAAK+7E,UA2BdxT,EAAG3oE,UAAU0pE,UAAY,SAAoBrhE,EAAQuc,EAAOgkD,GAE1DxoE,KAAKP,OAAS0L,KAAK0I,MAAM5L,EAAOxI,OAAS+kB,GAAS,GAClDxkB,KAAK2oE,MAAQ,IAAItmE,MAAMrC,KAAKP,QAC5B,IAAK,IAAIF,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAC/BS,KAAK2oE,MAAMppE,GAAK,EAIlB,IAGI+O,EAHAk7D,EAAM,EACN//D,EAAI,EAGR,GAAe,OAAX++D,EACF,IAAKjpE,EAAI0I,EAAOxI,OAAS,EAAGF,GAAKilB,EAAOjlB,GAAK,EAC3C+O,EAAIy6D,EAAa9gE,EAAQuc,EAAOjlB,IAAMiqE,EACtCxpE,KAAK2oE,MAAMl/D,IAAU,SAAJ6E,EACbk7D,GAAO,IACTA,GAAO,GACP//D,GAAK,EACLzJ,KAAK2oE,MAAMl/D,IAAM6E,IAAM,IAEvBk7D,GAAO,OAKX,IAAKjqE,GADa0I,EAAOxI,OAAS+kB,GACX,IAAM,EAAIA,EAAQ,EAAIA,EAAOjlB,EAAI0I,EAAOxI,OAAQF,GAAK,EAC1E+O,EAAIy6D,EAAa9gE,EAAQuc,EAAOjlB,IAAMiqE,EACtCxpE,KAAK2oE,MAAMl/D,IAAU,SAAJ6E,EACbk7D,GAAO,IACTA,GAAO,GACP//D,GAAK,EACLzJ,KAAK2oE,MAAMl/D,IAAM6E,IAAM,IAEvBk7D,GAAO,EAKbxpE,KAAK+7E,UA8BPxT,EAAG3oE,UAAU2pE,WAAa,SAAqBthE,EAAQwX,EAAM+E,GAE3DxkB,KAAK2oE,MAAQ,CAAC,GACd3oE,KAAKP,OAAS,EAGd,IAAK,IAAIiqE,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAWlqD,EAClEiqD,IAEFA,IACAC,EAAWA,EAAUlqD,EAAQ,EAO7B,IALA,IAAImqD,EAAQ3hE,EAAOxI,OAAS+kB,EACxBtX,EAAM08D,EAAQF,EACd5/C,EAAM3e,KAAKkD,IAAIu7D,EAAOA,EAAQ18D,GAAOsX,EAErCqlD,EAAO,EACFtqE,EAAIilB,EAAOjlB,EAAIuqB,EAAKvqB,GAAKmqE,EAChCG,EAAOZ,EAAUhhE,EAAQ1I,EAAGA,EAAImqE,EAASjqD,GAEzCzf,KAAK8pE,MAAMH,GACP3pE,KAAK2oE,MAAM,GAAKkB,EAAO,SACzB7pE,KAAK2oE,MAAM,IAAMkB,EAEjB7pE,KAAK+pE,OAAOF,GAIhB,GAAY,IAAR38D,EAAW,CACb,IAAIzB,EAAM,EAGV,IAFAo+D,EAAOZ,EAAUhhE,EAAQ1I,EAAG0I,EAAOxI,OAAQggB,GAEtClgB,EAAI,EAAGA,EAAI2N,EAAK3N,IACnBkM,GAAOgU,EAGTzf,KAAK8pE,MAAMr+D,GACPzL,KAAK2oE,MAAM,GAAKkB,EAAO,SACzB7pE,KAAK2oE,MAAM,IAAMkB,EAEjB7pE,KAAK+pE,OAAOF,GAIhB7pE,KAAK+7E,UAGPxT,EAAG3oE,UAAUgiB,KAAO,SAAeooD,GACjCA,EAAKrB,MAAQ,IAAItmE,MAAMrC,KAAKP,QAC5B,IAAK,IAAIF,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAC/ByqE,EAAKrB,MAAMppE,GAAKS,KAAK2oE,MAAMppE,GAE7ByqE,EAAKvqE,OAASO,KAAKP,OACnBuqE,EAAKtB,SAAW1oE,KAAK0oE,SACrBsB,EAAKpB,IAAM5oE,KAAK4oE,KAUlBL,EAAG3oE,UAAU0nF,MAAQ,SAAgBtd,GACnCqd,EAAKrd,EAAMhqE,OAGbuoE,EAAG3oE,UAAUojB,MAAQ,WACnB,IAAI/X,EAAI,IAAIs9D,EAAG,MAEf,OADAvoE,KAAK4hB,KAAK3W,GACHA,GAGTs9D,EAAG3oE,UAAUqqE,QAAU,SAAkB1/C,GACvC,KAAOvqB,KAAKP,OAAS8qB,GACnBvqB,KAAK2oE,MAAM3oE,KAAKP,UAAY,EAE9B,OAAOO,MAITuoE,EAAG3oE,UAAUm8E,OAAS,WACpB,KAAO/7E,KAAKP,OAAS,GAAqC,IAAhCO,KAAK2oE,MAAM3oE,KAAKP,OAAS,IACjDO,KAAKP,SAEP,OAAOO,KAAKkqE,aAGd3B,EAAG3oE,UAAUsqE,UAAY,WAKvB,OAHoB,IAAhBlqE,KAAKP,QAAkC,IAAlBO,KAAK2oE,MAAM,KAClC3oE,KAAK0oE,SAAW,GAEX1oE,MAKa,qBAAX0C,QAAgD,oBAAfA,OAAO6kF,IACjD,IACEhf,EAAG3oE,UAAU8C,OAAO6kF,IAAI,+BAAiCpd,EACzD,MAAO7gE,GACPi/D,EAAG3oE,UAAUuqE,QAAUA,OAGzB5B,EAAG3oE,UAAUuqE,QAAUA,EAGzB,SAASA,IACP,OAAQnqE,KAAK4oE,IAAM,UAAY,SAAW5oE,KAAK+C,SAAS,IAAM,IAiChE,IAAIqnE,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,6BAGEC,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGhBC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UAG9D/B,EAAG3oE,UAAUmD,SAAW,SAAmB0c,EAAMle,GAI/C,IAAIkgB,EACJ,GAHAlgB,EAAoB,EAAVA,GAAe,EAGZ,MAJbke,EAAOA,GAAQ,KAIa,QAATA,EAAgB,CACjCgC,EAAM,GAGN,IAFA,IAAI+nD,EAAM,EACNiB,EAAQ,EACHlrE,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAAK,CACpC,IAAI+O,EAAItO,KAAK2oE,MAAMppE,GACfsqE,GAA+B,UAArBv7D,GAAKk7D,EAAOiB,IAAmB1nE,SAAS,IAGpD0e,EADY,KADdgpD,EAASn8D,IAAO,GAAKk7D,EAAQ,WACVjqE,IAAMS,KAAKP,OAAS,EAC/B2qE,EAAM,EAAIP,EAAKpqE,QAAUoqE,EAAOpoD,EAEhCooD,EAAOpoD,GAEf+nD,GAAO,IACI,KACTA,GAAO,GACPjqE,KAMJ,IAHc,IAAVkrE,IACFhpD,EAAMgpD,EAAM1nE,SAAS,IAAM0e,GAEtBA,EAAIhiB,OAAS8B,IAAY,GAC9BkgB,EAAM,IAAMA,EAKd,OAHsB,IAAlBzhB,KAAK0oE,WACPjnD,EAAM,IAAMA,GAEPA,EAGT,GAAIhC,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAIorD,EAAYR,EAAW5qD,GAEvBqrD,EAAYR,EAAW7qD,GAC3BgC,EAAM,GACN,IAAIjY,EAAIxJ,KAAKgjB,QAEb,IADAxZ,EAAEk/D,SAAW,GACLl/D,EAAEuhE,UAAU,CAClB,IAAI9/D,EAAIzB,EAAEg+E,MAAM1c,GAAW/nE,SAAS0c,GAMlCgC,GALFjY,EAAIA,EAAEyhE,MAAMH,IAELC,SAGC9/D,EAAIwW,EAFJ2oD,EAAMS,EAAY5/D,EAAExL,QAAUwL,EAAIwW,EAQ5C,IAHIzhB,KAAK+qE,WACPtpD,EAAM,IAAMA,GAEPA,EAAIhiB,OAAS8B,IAAY,GAC9BkgB,EAAM,IAAMA,EAKd,OAHsB,IAAlBzhB,KAAK0oE,WACPjnD,EAAM,IAAMA,GAEPA,EAGTK,GAAO,EAAO,oCAGhBymD,EAAG3oE,UAAUsrE,SAAW,WACtB,IAAIx4C,EAAM1yB,KAAK2oE,MAAM,GASrB,OARoB,IAAhB3oE,KAAKP,OACPizB,GAAuB,SAAhB1yB,KAAK2oE,MAAM,GACO,IAAhB3oE,KAAKP,QAAkC,IAAlBO,KAAK2oE,MAAM,GAEzCj2C,GAAO,iBAAoC,SAAhB1yB,KAAK2oE,MAAM,GAC7B3oE,KAAKP,OAAS,GACvBqiB,GAAO,EAAO,8CAEU,IAAlB9hB,KAAK0oE,UAAmBh2C,EAAMA,GAGxC61C,EAAG3oE,UAAUurE,OAAS,WACpB,OAAOnrE,KAAK+C,SAAS,GAAI,IAGvB0d,IACF8nD,EAAG3oE,UAAUwrE,SAAW,SAAmB5C,EAAQ/oE,GACjD,OAAOO,KAAKqrE,YAAY5qD,EAAQ+nD,EAAQ/oE,KAI5C8oE,EAAG3oE,UAAUsrB,QAAU,SAAkBs9C,EAAQ/oE,GAC/C,OAAOO,KAAKqrE,YAAYhpE,MAAOmmE,EAAQ/oE,IA4gBzC,SAAS8qE,EAAYh7C,EAAM9L,EAAKhC,GAC9BA,EAAIinD,SAAWjlD,EAAIilD,SAAWn5C,EAAKm5C,SACnC,IAAIvmE,EAAOotB,EAAK9vB,OAASgkB,EAAIhkB,OAAU,EACvCgiB,EAAIhiB,OAAS0C,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAIoH,EAAoB,EAAhBgmB,EAAKo5C,MAAM,GACfr+D,EAAmB,EAAfmZ,EAAIklD,MAAM,GACd19D,EAAI1B,EAAIe,EAERkgE,EAAS,SAAJv/D,EACLw/D,EAASx/D,EAAI,SAAa,EAC9BwW,EAAIknD,MAAM,GAAK6B,EAEf,IAAK,IAAIrgE,EAAI,EAAGA,EAAIhI,EAAKgI,IAAK,CAM5B,IAHA,IAAIugE,EAASD,IAAU,GACnBE,EAAgB,SAARF,EACRG,EAAOz/D,KAAKkD,IAAIlE,EAAGsZ,EAAIhkB,OAAS,GAC3BgK,EAAI0B,KAAK+C,IAAI,EAAG/D,EAAIolB,EAAK9vB,OAAS,GAAIgK,GAAKmhE,EAAMnhE,IAAK,CAC7D,IAAIlK,EAAK4K,EAAIV,EAAK,EAIlBihE,IADAz/D,GAFA1B,EAAoB,EAAhBgmB,EAAKo5C,MAAMppE,KACf+K,EAAmB,EAAfmZ,EAAIklD,MAAMl/D,IACFkhE,GACG,SAAa,EAC5BA,EAAY,SAAJ1/D,EAEVwW,EAAIknD,MAAMx+D,GAAa,EAARwgE,EACfF,EAAiB,EAATC,EAQV,OANc,IAAVD,EACFhpD,EAAIknD,MAAMx+D,GAAa,EAARsgE,EAEfhpD,EAAIhiB,SAGCgiB,EAAIs6D,SAxiBbxT,EAAG3oE,UAAUyrE,YAAc,SAAsBC,EAAW9C,EAAQ/oE,GAClEO,KAAK+7E,SAEL,IAAIjyE,EAAa9J,KAAK8J,aAClByhE,EAAY9rE,GAAU0L,KAAK+C,IAAI,EAAGpE,GACtCgY,EAAOhY,GAAcyhE,EAAW,yCAChCzpD,EAAOypD,EAAY,EAAG,+BAEtB,IAAIjqD,EAfS,SAAmBgqD,EAAW/gD,GAC3C,OAAI+gD,EAAUmU,YACLnU,EAAUmU,YAAYl1D,GAExB,IAAI+gD,EAAU/gD,GAWXk9D,CAASnc,EAAWC,GAG9B,OADAvrE,KAAK,gBADoB,OAAXwoE,EAAkB,KAAO,OACRlnD,EAAKxX,GAC7BwX,GAGTinD,EAAG3oE,UAAU8nF,eAAiB,SAAyBpmE,EAAKxX,GAI1D,IAHA,IAAItI,EAAW,EACXipE,EAAQ,EAEHlrE,EAAI,EAAG0yB,EAAQ,EAAG1yB,EAAIS,KAAKP,OAAQF,IAAK,CAC/C,IAAIsqE,EAAQ7pE,KAAK2oE,MAAMppE,IAAM0yB,EAASw4C,EAEtCnpD,EAAI9f,KAAqB,IAAPqoE,EACdroE,EAAW8f,EAAI7hB,SACjB6hB,EAAI9f,KAAeqoE,GAAQ,EAAK,KAE9BroE,EAAW8f,EAAI7hB,SACjB6hB,EAAI9f,KAAeqoE,GAAQ,GAAM,KAGrB,IAAV53C,GACEzwB,EAAW8f,EAAI7hB,SACjB6hB,EAAI9f,KAAeqoE,GAAQ,GAAM,KAEnCY,EAAQ,EACRx4C,EAAQ,IAERw4C,EAAQZ,IAAS,GACjB53C,GAAS,GAIb,GAAIzwB,EAAW8f,EAAI7hB,OAGjB,IAFA6hB,EAAI9f,KAAcipE,EAEXjpE,EAAW8f,EAAI7hB,QACpB6hB,EAAI9f,KAAc,GAKxB+mE,EAAG3oE,UAAU+nF,eAAiB,SAAyBrmE,EAAKxX,GAI1D,IAHA,IAAItI,EAAW8f,EAAI7hB,OAAS,EACxBgrE,EAAQ,EAEHlrE,EAAI,EAAG0yB,EAAQ,EAAG1yB,EAAIS,KAAKP,OAAQF,IAAK,CAC/C,IAAIsqE,EAAQ7pE,KAAK2oE,MAAMppE,IAAM0yB,EAASw4C,EAEtCnpD,EAAI9f,KAAqB,IAAPqoE,EACdroE,GAAY,IACd8f,EAAI9f,KAAeqoE,GAAQ,EAAK,KAE9BroE,GAAY,IACd8f,EAAI9f,KAAeqoE,GAAQ,GAAM,KAGrB,IAAV53C,GACEzwB,GAAY,IACd8f,EAAI9f,KAAeqoE,GAAQ,GAAM,KAEnCY,EAAQ,EACRx4C,EAAQ,IAERw4C,EAAQZ,IAAS,GACjB53C,GAAS,GAIb,GAAIzwB,GAAY,EAGd,IAFA8f,EAAI9f,KAAcipE,EAEXjpE,GAAY,GACjB8f,EAAI9f,KAAc,GAKpB2J,KAAKwgE,MACPpD,EAAG3oE,UAAUgsE,WAAa,SAAqBt9D,GAC7C,OAAO,GAAKnD,KAAKwgE,MAAMr9D,IAGzBi6D,EAAG3oE,UAAUgsE,WAAa,SAAqBt9D,GAC7C,IAAI1B,EAAI0B,EACJrD,EAAI,EAiBR,OAhBI2B,GAAK,OACP3B,GAAK,GACL2B,KAAO,IAELA,GAAK,KACP3B,GAAK,EACL2B,KAAO,GAELA,GAAK,IACP3B,GAAK,EACL2B,KAAO,GAELA,GAAK,IACP3B,GAAK,EACL2B,KAAO,GAEF3B,EAAI2B,GAIf27D,EAAG3oE,UAAUisE,UAAY,SAAoBv9D,GAE3C,GAAU,IAANA,EAAS,OAAO,GAEpB,IAAI1B,EAAI0B,EACJrD,EAAI,EAoBR,OAnBqB,KAAZ,KAAJ2B,KACH3B,GAAK,GACL2B,KAAO,IAEU,KAAV,IAAJA,KACH3B,GAAK,EACL2B,KAAO,GAES,KAAT,GAAJA,KACH3B,GAAK,EACL2B,KAAO,GAES,KAAT,EAAJA,KACH3B,GAAK,EACL2B,KAAO,GAES,KAAT,EAAJA,IACH3B,IAEKA,GAITs9D,EAAG3oE,UAAUqP,UAAY,WACvB,IAAIX,EAAItO,KAAK2oE,MAAM3oE,KAAKP,OAAS,GAC7BqsE,EAAK9rE,KAAK4rE,WAAWt9D,GACzB,OAA2B,IAAnBtO,KAAKP,OAAS,GAAUqsE,GAiBlCvD,EAAG3oE,UAAUmsE,SAAW,WACtB,GAAI/rE,KAAK+qE,SAAU,OAAO,EAG1B,IADA,IAAI9/D,EAAI,EACC1L,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAAK,CACpC,IAAI+K,EAAItK,KAAK6rE,UAAU7rE,KAAK2oE,MAAMppE,IAElC,GADA0L,GAAKX,EACK,KAANA,EAAU,MAEhB,OAAOW,GAGTs9D,EAAG3oE,UAAUkK,WAAa,WACxB,OAAOqB,KAAK0I,KAAK7T,KAAKiP,YAAc,IAGtCs5D,EAAG3oE,UAAUosE,OAAS,SAAiBvqE,GACrC,OAAsB,IAAlBzB,KAAK0oE,SACA1oE,KAAK0N,MAAMu+D,MAAMxqE,GAAOyqE,MAAM,GAEhClsE,KAAKgjB,SAGdulD,EAAG3oE,UAAUusE,SAAW,SAAmB1qE,GACzC,OAAIzB,KAAKosE,MAAM3qE,EAAQ,GACdzB,KAAKqsE,KAAK5qE,GAAOyqE,MAAM,GAAGI,OAE5BtsE,KAAKgjB,SAGdulD,EAAG3oE,UAAU2sE,MAAQ,WACnB,OAAyB,IAAlBvsE,KAAK0oE,UAIdH,EAAG3oE,UAAU4sE,IAAM,WACjB,OAAOxsE,KAAKgjB,QAAQspD,QAGtB/D,EAAG3oE,UAAU0sE,KAAO,WAKlB,OAJKtsE,KAAK+qE,WACR/qE,KAAK0oE,UAAY,GAGZ1oE,MAITuoE,EAAG3oE,UAAU6sE,KAAO,SAAehpD,GACjC,KAAOzjB,KAAKP,OAASgkB,EAAIhkB,QACvBO,KAAK2oE,MAAM3oE,KAAKP,UAAY,EAG9B,IAAK,IAAIF,EAAI,EAAGA,EAAIkkB,EAAIhkB,OAAQF,IAC9BS,KAAK2oE,MAAMppE,GAAKS,KAAK2oE,MAAMppE,GAAKkkB,EAAIklD,MAAMppE,GAG5C,OAAOS,KAAK+7E,UAGdxT,EAAG3oE,UAAU8sE,IAAM,SAAcjpD,GAE/B,OADA3B,EAA0C,KAAlC9hB,KAAK0oE,SAAWjlD,EAAIilD,WACrB1oE,KAAKysE,KAAKhpD,IAInB8kD,EAAG3oE,UAAU+sE,GAAK,SAAalpD,GAC7B,OAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQ0pD,IAAIjpD,GAC/CA,EAAIT,QAAQ0pD,IAAI1sE,OAGzBuoE,EAAG3oE,UAAUgtE,IAAM,SAAcnpD,GAC/B,OAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQypD,KAAKhpD,GAChDA,EAAIT,QAAQypD,KAAKzsE,OAI1BuoE,EAAG3oE,UAAUitE,MAAQ,SAAgBppD,GAEnC,IAAInZ,EAEFA,EADEtK,KAAKP,OAASgkB,EAAIhkB,OAChBgkB,EAEAzjB,KAGN,IAAK,IAAIT,EAAI,EAAGA,EAAI+K,EAAE7K,OAAQF,IAC5BS,KAAK2oE,MAAMppE,GAAKS,KAAK2oE,MAAMppE,GAAKkkB,EAAIklD,MAAMppE,GAK5C,OAFAS,KAAKP,OAAS6K,EAAE7K,OAETO,KAAK+7E,UAGdxT,EAAG3oE,UAAUktE,KAAO,SAAerpD,GAEjC,OADA3B,EAA0C,KAAlC9hB,KAAK0oE,SAAWjlD,EAAIilD,WACrB1oE,KAAK6sE,MAAMppD,IAIpB8kD,EAAG3oE,UAAUmtE,IAAM,SAActpD,GAC/B,OAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQ8pD,KAAKrpD,GAChDA,EAAIT,QAAQ8pD,KAAK9sE,OAG1BuoE,EAAG3oE,UAAUotE,KAAO,SAAevpD,GACjC,OAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQ6pD,MAAMppD,GACjDA,EAAIT,QAAQ6pD,MAAM7sE,OAI3BuoE,EAAG3oE,UAAUqtE,MAAQ,SAAgBxpD,GAEnC,IAAIla,EACAe,EACAtK,KAAKP,OAASgkB,EAAIhkB,QACpB8J,EAAIvJ,KACJsK,EAAImZ,IAEJla,EAAIka,EACJnZ,EAAItK,MAGN,IAAK,IAAIT,EAAI,EAAGA,EAAI+K,EAAE7K,OAAQF,IAC5BS,KAAK2oE,MAAMppE,GAAKgK,EAAEo/D,MAAMppE,GAAK+K,EAAEq+D,MAAMppE,GAGvC,GAAIS,OAASuJ,EACX,KAAOhK,EAAIgK,EAAE9J,OAAQF,IACnBS,KAAK2oE,MAAMppE,GAAKgK,EAAEo/D,MAAMppE,GAM5B,OAFAS,KAAKP,OAAS8J,EAAE9J,OAETO,KAAK+7E,UAGdxT,EAAG3oE,UAAUstE,KAAO,SAAezpD,GAEjC,OADA3B,EAA0C,KAAlC9hB,KAAK0oE,SAAWjlD,EAAIilD,WACrB1oE,KAAKitE,MAAMxpD,IAIpB8kD,EAAG3oE,UAAUutE,IAAM,SAAc1pD,GAC/B,OAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQkqD,KAAKzpD,GAChDA,EAAIT,QAAQkqD,KAAKltE,OAG1BuoE,EAAG3oE,UAAUwtE,KAAO,SAAe3pD,GACjC,OAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQiqD,MAAMxpD,GACjDA,EAAIT,QAAQiqD,MAAMjtE,OAI3BuoE,EAAG3oE,UAAUqsE,MAAQ,SAAgBxqE,GACnCqgB,EAAwB,kBAAVrgB,GAAsBA,GAAS,GAE7C,IAAI4rE,EAAsC,EAAxBliE,KAAK0I,KAAKpS,EAAQ,IAChC6rE,EAAW7rE,EAAQ,GAGvBzB,KAAKiqE,QAAQoD,GAETC,EAAW,GACbD,IAIF,IAAK,IAAI9tE,EAAI,EAAGA,EAAI8tE,EAAa9tE,IAC/BS,KAAK2oE,MAAMppE,GAAsB,UAAhBS,KAAK2oE,MAAMppE,GAS9B,OALI+tE,EAAW,IACbttE,KAAK2oE,MAAMppE,IAAMS,KAAK2oE,MAAMppE,GAAM,UAAc,GAAK+tE,GAIhDttE,KAAK+7E,UAGdxT,EAAG3oE,UAAUysE,KAAO,SAAe5qE,GACjC,OAAOzB,KAAKgjB,QAAQipD,MAAMxqE,IAI5B8mE,EAAG3oE,UAAU2tE,KAAO,SAAeC,EAAKzxD,GACtC+F,EAAsB,kBAAR0rD,GAAoBA,GAAO,GAEzC,IAAIhE,EAAOgE,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAUjB,OARAxtE,KAAKiqE,QAAQT,EAAM,GAGjBxpE,KAAK2oE,MAAMa,GADTztD,EACgB/b,KAAK2oE,MAAMa,GAAQ,GAAKiE,EAExBztE,KAAK2oE,MAAMa,KAAS,GAAKiE,GAGtCztE,KAAK+7E,UAIdxT,EAAG3oE,UAAU8tE,KAAO,SAAejqD,GACjC,IAAIxY,EAkBA1B,EAAGe,EAfP,GAAsB,IAAlBtK,KAAK0oE,UAAmC,IAAjBjlD,EAAIilD,SAI7B,OAHA1oE,KAAK0oE,SAAW,EAChBz9D,EAAIjL,KAAK2tE,KAAKlqD,GACdzjB,KAAK0oE,UAAY,EACV1oE,KAAKkqE,YAGP,GAAsB,IAAlBlqE,KAAK0oE,UAAmC,IAAjBjlD,EAAIilD,SAIpC,OAHAjlD,EAAIilD,SAAW,EACfz9D,EAAIjL,KAAK2tE,KAAKlqD,GACdA,EAAIilD,SAAW,EACRz9D,EAAEi/D,YAKPlqE,KAAKP,OAASgkB,EAAIhkB,QACpB8J,EAAIvJ,KACJsK,EAAImZ,IAEJla,EAAIka,EACJnZ,EAAItK,MAIN,IADA,IAAIyqE,EAAQ,EACHlrE,EAAI,EAAGA,EAAI+K,EAAE7K,OAAQF,IAC5B0L,GAAkB,EAAb1B,EAAEo/D,MAAMppE,KAAwB,EAAb+K,EAAEq+D,MAAMppE,IAAUkrE,EAC1CzqE,KAAK2oE,MAAMppE,GAAS,SAAJ0L,EAChBw/D,EAAQx/D,IAAM,GAEhB,KAAiB,IAAVw/D,GAAelrE,EAAIgK,EAAE9J,OAAQF,IAClC0L,GAAkB,EAAb1B,EAAEo/D,MAAMppE,IAAUkrE,EACvBzqE,KAAK2oE,MAAMppE,GAAS,SAAJ0L,EAChBw/D,EAAQx/D,IAAM,GAIhB,GADAjL,KAAKP,OAAS8J,EAAE9J,OACF,IAAVgrE,EACFzqE,KAAK2oE,MAAM3oE,KAAKP,QAAUgrE,EAC1BzqE,KAAKP,cAEA,GAAI8J,IAAMvJ,KACf,KAAOT,EAAIgK,EAAE9J,OAAQF,IACnBS,KAAK2oE,MAAMppE,GAAKgK,EAAEo/D,MAAMppE,GAI5B,OAAOS,MAITuoE,EAAG3oE,UAAUi2C,IAAM,SAAcpyB,GAC/B,IAAInC,EACJ,OAAqB,IAAjBmC,EAAIilD,UAAoC,IAAlB1oE,KAAK0oE,UAC7BjlD,EAAIilD,SAAW,EACfpnD,EAAMthB,KAAK4tE,IAAInqD,GACfA,EAAIilD,UAAY,EACTpnD,GACmB,IAAjBmC,EAAIilD,UAAoC,IAAlB1oE,KAAK0oE,UACpC1oE,KAAK0oE,SAAW,EAChBpnD,EAAMmC,EAAImqD,IAAI5tE,MACdA,KAAK0oE,SAAW,EACTpnD,GAGLthB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQ0qD,KAAKjqD,GAEhDA,EAAIT,QAAQ0qD,KAAK1tE,OAI1BuoE,EAAG3oE,UAAU+tE,KAAO,SAAelqD,GAEjC,GAAqB,IAAjBA,EAAIilD,SAAgB,CACtBjlD,EAAIilD,SAAW,EACf,IAAIz9D,EAAIjL,KAAK0tE,KAAKjqD,GAElB,OADAA,EAAIilD,SAAW,EACRz9D,EAAEi/D,YAGJ,GAAsB,IAAlBlqE,KAAK0oE,SAId,OAHA1oE,KAAK0oE,SAAW,EAChB1oE,KAAK0tE,KAAKjqD,GACVzjB,KAAK0oE,SAAW,EACT1oE,KAAKkqE,YAId,IAWI3gE,EAAGe,EAXH6+D,EAAMnpE,KAAKmpE,IAAI1lD,GAGnB,GAAY,IAAR0lD,EAIF,OAHAnpE,KAAK0oE,SAAW,EAChB1oE,KAAKP,OAAS,EACdO,KAAK2oE,MAAM,GAAK,EACT3oE,KAKLmpE,EAAM,GACR5/D,EAAIvJ,KACJsK,EAAImZ,IAEJla,EAAIka,EACJnZ,EAAItK,MAIN,IADA,IAAIyqE,EAAQ,EACHlrE,EAAI,EAAGA,EAAI+K,EAAE7K,OAAQF,IAE5BkrE,GADAx/D,GAAkB,EAAb1B,EAAEo/D,MAAMppE,KAAwB,EAAb+K,EAAEq+D,MAAMppE,IAAUkrE,IAC7B,GACbzqE,KAAK2oE,MAAMppE,GAAS,SAAJ0L,EAElB,KAAiB,IAAVw/D,GAAelrE,EAAIgK,EAAE9J,OAAQF,IAElCkrE,GADAx/D,GAAkB,EAAb1B,EAAEo/D,MAAMppE,IAAUkrE,IACV,GACbzqE,KAAK2oE,MAAMppE,GAAS,SAAJ0L,EAIlB,GAAc,IAAVw/D,GAAelrE,EAAIgK,EAAE9J,QAAU8J,IAAMvJ,KACvC,KAAOT,EAAIgK,EAAE9J,OAAQF,IACnBS,KAAK2oE,MAAMppE,GAAKgK,EAAEo/D,MAAMppE,GAU5B,OANAS,KAAKP,OAAS0L,KAAK+C,IAAIlO,KAAKP,OAAQF,GAEhCgK,IAAMvJ,OACRA,KAAK0oE,SAAW,GAGX1oE,KAAK+7E,UAIdxT,EAAG3oE,UAAUguE,IAAM,SAAcnqD,GAC/B,OAAOzjB,KAAKgjB,QAAQ2qD,KAAKlqD,IA+C3B,IAAIoqD,EAAc,SAAsBt+C,EAAM9L,EAAKhC,GACjD,IAII+oD,EACAsD,EACAhC,EANAviE,EAAIgmB,EAAKo5C,MACTr+D,EAAImZ,EAAIklD,MACRpmE,EAAIkf,EAAIknD,MACRn/D,EAAI,EAIJukE,EAAY,EAAPxkE,EAAE,GACPykE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP3kE,EAAE,GACP4kE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP9kE,EAAE,GACP+kE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPjlE,EAAE,GACPklE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPplE,EAAE,GACPqlE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPvlE,EAAE,GACPwlE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP1lE,EAAE,GACP2lE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP7lE,EAAE,GACP8lE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPhmE,EAAE,GACPimE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPnmE,EAAE,GACPomE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPvlE,EAAE,GACPwlE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP1lE,EAAE,GACP2lE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP7lE,EAAE,GACP8lE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPhmE,EAAE,GACPimE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPnmE,EAAE,GACPomE,EAAW,KAALD,EACNE,GAAMF,IAAO,GACbG,GAAY,EAAPtmE,EAAE,GACPumE,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPzmE,EAAE,GACP0mE,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP5mE,EAAE,GACP6mE,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP/mE,EAAE,GACPgnE,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPlnE,EAAE,GACPmnE,GAAW,KAALD,GACNE,GAAMF,KAAO,GAEjB/vD,EAAIinD,SAAWn5C,EAAKm5C,SAAWjlD,EAAIilD,SACnCjnD,EAAIhiB,OAAS,GAMb,IAAIkyE,IAAQnoE,GAJZghE,EAAKr/D,KAAKymE,KAAK5D,EAAK8B,IAIE,KAAa,MAFnChC,GADAA,EAAM3iE,KAAKymE,KAAK5D,EAAK+B,IACR5kE,KAAKymE,KAAK3D,EAAK6B,GAAQ,KAEU,IAAO,EACrDtmE,IAFAsiE,EAAK3gE,KAAKymE,KAAK3D,EAAK8B,KAEPjC,IAAQ,IAAO,IAAM6D,KAAO,IAAO,EAChDA,IAAM,SAENnH,EAAKr/D,KAAKymE,KAAKzD,EAAK2B,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKzD,EAAK4B,IACR5kE,KAAKymE,KAAKxD,EAAK0B,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKxD,EAAK2B,GAKpB,IAAI8B,IAAQroE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKiC,GAAQ,GAIZ,KAAa,MAFnCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAKkC,GAAQ,GACvB/kE,KAAKymE,KAAK3D,EAAKgC,GAAQ,KAEU,IAAO,EACrDzmE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKiC,GAAQ,IAErBpC,IAAQ,IAAO,IAAM+D,KAAO,IAAO,EAChDA,IAAM,SAENrH,EAAKr/D,KAAKymE,KAAKtD,EAAKwB,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKtD,EAAKyB,IACR5kE,KAAKymE,KAAKrD,EAAKuB,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKrD,EAAKwB,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAK8B,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAK+B,GAAQ,GACvB/kE,KAAKymE,KAAKxD,EAAK6B,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAK8B,GAAQ,EAKlC,IAAI4B,IAAQtoE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKoC,GAAQ,GAIZ,KAAa,MAFnCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAKqC,GAAQ,GACvBllE,KAAKymE,KAAK3D,EAAKmC,GAAQ,KAEU,IAAO,EACrD5mE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKoC,GAAQ,IAErBvC,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAENtH,EAAKr/D,KAAKymE,KAAKnD,EAAKqB,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKnD,EAAKsB,IACR5kE,KAAKymE,KAAKlD,EAAKoB,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKlD,EAAKqB,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAK2B,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAK4B,GAAQ,GACvB/kE,KAAKymE,KAAKrD,EAAK0B,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAK2B,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAKiC,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAKkC,GAAQ,GACvBllE,KAAKymE,KAAKxD,EAAKgC,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAKiC,GAAQ,EAKlC,IAAI0B,IAAQvoE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKuC,GAAQ,GAIZ,KAAa,MAFnCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAKwC,GAAQ,GACvBrlE,KAAKymE,KAAK3D,EAAKsC,GAAQ,KAEU,IAAO,EACrD/mE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKuC,GAAQ,IAErB1C,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAENvH,EAAKr/D,KAAKymE,KAAKhD,EAAKkB,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKhD,EAAKmB,IACR5kE,KAAKymE,KAAK/C,EAAKiB,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAK/C,EAAKkB,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAKwB,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAKyB,GAAQ,GACvB/kE,KAAKymE,KAAKlD,EAAKuB,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAKwB,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAK8B,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAK+B,GAAQ,GACvBllE,KAAKymE,KAAKrD,EAAK6B,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAK8B,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAKoC,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAKqC,GAAQ,GACvBrlE,KAAKymE,KAAKxD,EAAKmC,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAKoC,GAAQ,EAKlC,IAAIwB,IAAQxoE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAK0C,GAAQ,GAIZ,KAAa,MAFnC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAK2C,IAAQ,GACvBxlE,KAAKymE,KAAK3D,EAAKyC,GAAQ,KAEU,IAAO,EACrDlnE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAK0C,IAAQ,IAErB7C,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAENxH,EAAKr/D,KAAKymE,KAAK7C,EAAKe,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAK7C,EAAKgB,IACR5kE,KAAKymE,KAAK5C,EAAKc,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAK5C,EAAKe,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAKqB,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAKsB,GAAQ,GACvB/kE,KAAKymE,KAAK/C,EAAKoB,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAKqB,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAK2B,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAK4B,GAAQ,GACvBllE,KAAKymE,KAAKlD,EAAK0B,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAK2B,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAKiC,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAKkC,GAAQ,GACvBrlE,KAAKymE,KAAKrD,EAAKgC,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAKiC,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAKuC,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAKwC,IAAQ,GACvBxlE,KAAKymE,KAAKxD,EAAKsC,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAKuC,IAAQ,EAKlC,IAAIsB,IAAQzoE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAK6C,IAAQ,GAIZ,KAAa,MAFnC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAK8C,IAAQ,GACvB3lE,KAAKymE,KAAK3D,EAAK4C,IAAQ,KAEU,IAAO,EACrDrnE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAK6C,IAAQ,IAErBhD,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAENzH,EAAKr/D,KAAKymE,KAAK1C,EAAKY,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAK1C,EAAKa,IACR5kE,KAAKymE,KAAKzC,EAAKW,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKzC,EAAKY,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAKkB,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAKmB,GAAQ,GACvB/kE,KAAKymE,KAAK5C,EAAKiB,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAKkB,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAKwB,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAKyB,GAAQ,GACvBllE,KAAKymE,KAAK/C,EAAKuB,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAKwB,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAK8B,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAK+B,GAAQ,GACvBrlE,KAAKymE,KAAKlD,EAAK6B,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAK8B,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAKoC,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAKqC,IAAQ,GACvBxlE,KAAKymE,KAAKrD,EAAKmC,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAKoC,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAK0C,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAK2C,IAAQ,GACvB3lE,KAAKymE,KAAKxD,EAAKyC,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAK0C,IAAQ,EAKlC,IAAIoB,IAAQ1oE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKgD,IAAQ,GAIZ,KAAa,MAFnClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAKiD,IAAQ,GACvB9lE,KAAKymE,KAAK3D,EAAK+C,IAAQ,KAEU,IAAO,EACrDxnE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKgD,IAAQ,IAErBnD,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAEN1H,EAAKr/D,KAAKymE,KAAKvC,EAAKS,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKvC,EAAKU,IACR5kE,KAAKymE,KAAKtC,EAAKQ,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKtC,EAAKS,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKe,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKgB,GAAQ,GACvB/kE,KAAKymE,KAAKzC,EAAKc,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKe,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAKqB,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAKsB,GAAQ,GACvBllE,KAAKymE,KAAK5C,EAAKoB,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAKqB,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAK2B,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAK4B,GAAQ,GACvBrlE,KAAKymE,KAAK/C,EAAK0B,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAK2B,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAKiC,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAKkC,IAAQ,GACvBxlE,KAAKymE,KAAKlD,EAAKgC,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAKiC,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAKuC,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAKwC,IAAQ,GACvB3lE,KAAKymE,KAAKrD,EAAKsC,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAKuC,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAK6C,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAK8C,IAAQ,GACvB9lE,KAAKymE,KAAKxD,EAAK4C,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAK6C,IAAQ,EAKlC,IAAIkB,IAAQ3oE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKmD,IAAQ,GAIZ,KAAa,MAFnCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAKoD,IAAQ,GACvBjmE,KAAKymE,KAAK3D,EAAKkD,IAAQ,KAEU,IAAO,EACrD3nE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKmD,IAAQ,IAErBtD,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAEN3H,EAAKr/D,KAAKymE,KAAKpC,EAAKM,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKpC,EAAKO,IACR5kE,KAAKymE,KAAKnC,EAAKK,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKnC,EAAKM,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKY,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKa,GAAQ,GACvB/kE,KAAKymE,KAAKtC,EAAKW,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKY,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKkB,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKmB,GAAQ,GACvBllE,KAAKymE,KAAKzC,EAAKiB,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKkB,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAKwB,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAKyB,GAAQ,GACvBrlE,KAAKymE,KAAK5C,EAAKuB,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAKwB,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAK8B,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAK+B,IAAQ,GACvBxlE,KAAKymE,KAAK/C,EAAK6B,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAK8B,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAKoC,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAKqC,IAAQ,GACvB3lE,KAAKymE,KAAKlD,EAAKmC,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAKoC,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAK0C,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAK2C,IAAQ,GACvB9lE,KAAKymE,KAAKrD,EAAKyC,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAK0C,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAKgD,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAKiD,IAAQ,GACvBjmE,KAAKymE,KAAKxD,EAAK+C,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAKgD,IAAQ,EAKlC,IAAIgB,IAAQ5oE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKsD,IAAQ,GAIZ,KAAa,MAFnCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAKuD,IAAQ,GACvBpmE,KAAKymE,KAAK3D,EAAKqD,IAAQ,KAEU,IAAO,EACrD9nE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKsD,IAAQ,IAErBzD,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAEN5H,EAAKr/D,KAAKymE,KAAKjC,EAAKG,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKI,IACR5kE,KAAKymE,KAAKhC,EAAKE,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKhC,EAAKG,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKS,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKU,GAAQ,GACvB/kE,KAAKymE,KAAKnC,EAAKQ,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKS,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKe,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKgB,GAAQ,GACvBllE,KAAKymE,KAAKtC,EAAKc,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKe,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKqB,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKsB,GAAQ,GACvBrlE,KAAKymE,KAAKzC,EAAKoB,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKqB,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAK2B,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAK4B,IAAQ,GACvBxlE,KAAKymE,KAAK5C,EAAK0B,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAK2B,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAKiC,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAKkC,IAAQ,GACvB3lE,KAAKymE,KAAK/C,EAAKgC,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAKiC,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAKuC,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAKwC,IAAQ,GACvB9lE,KAAKymE,KAAKlD,EAAKsC,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAKuC,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAK6C,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAK8C,IAAQ,GACvBjmE,KAAKymE,KAAKrD,EAAK4C,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAK6C,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAKmD,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAKoD,IAAQ,GACvBpmE,KAAKymE,KAAKxD,EAAKkD,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAKmD,IAAQ,EAKlC,IAAIc,IAAQ7oE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKyD,IAAQ,GAIZ,KAAa,MAFnC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAK0D,IAAQ,GACvBvmE,KAAKymE,KAAK3D,EAAKwD,IAAQ,KAEU,IAAO,EACrDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKyD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMuE,KAAO,IAAO,EAChDA,IAAM,SAEN7H,EAAKr/D,KAAKymE,KAAKjC,EAAKM,GAEpBnC,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKO,IACR/kE,KAAKymE,KAAKhC,EAAKK,GAAQ,EACpCnE,EAAK3gE,KAAKymE,KAAKhC,EAAKM,GACpB1F,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKY,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKa,GAAQ,GACvBllE,KAAKymE,KAAKnC,EAAKW,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKY,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKkB,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKmB,GAAQ,GACvBrlE,KAAKymE,KAAKtC,EAAKiB,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKkB,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKwB,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKyB,IAAQ,GACvBxlE,KAAKymE,KAAKzC,EAAKuB,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKwB,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAK8B,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAK+B,IAAQ,GACvB3lE,KAAKymE,KAAK5C,EAAK6B,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAK8B,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAKoC,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAKqC,IAAQ,GACvB9lE,KAAKymE,KAAK/C,EAAKmC,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAKoC,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAK0C,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAK2C,IAAQ,GACvBjmE,KAAKymE,KAAKlD,EAAKyC,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAK0C,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAKgD,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAKiD,IAAQ,GACvBpmE,KAAKymE,KAAKrD,EAAK+C,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAKgD,IAAQ,EAKlC,IAAIe,IAAS9oE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAKsD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAKuD,IAAQ,GACvBvmE,KAAKymE,KAAKxD,EAAKqD,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAKsD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMwE,KAAQ,IAAO,EACjDA,IAAO,SAEP9H,EAAKr/D,KAAKymE,KAAKjC,EAAKS,GAEpBtC,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKU,IACRllE,KAAKymE,KAAKhC,EAAKQ,GAAQ,EACpCtE,EAAK3gE,KAAKymE,KAAKhC,EAAKS,GACpB7F,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKe,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKgB,GAAQ,GACvBrlE,KAAKymE,KAAKnC,EAAKc,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKe,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKqB,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKsB,IAAQ,GACvBxlE,KAAKymE,KAAKtC,EAAKoB,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKqB,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAK2B,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAK4B,IAAQ,GACvB3lE,KAAKymE,KAAKzC,EAAK0B,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAK2B,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAKiC,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAKkC,IAAQ,GACvB9lE,KAAKymE,KAAK5C,EAAKgC,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAKiC,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAKuC,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAKwC,IAAQ,GACvBjmE,KAAKymE,KAAK/C,EAAKsC,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAKuC,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAK6C,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAK8C,IAAQ,GACvBpmE,KAAKymE,KAAKlD,EAAK4C,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAK6C,IAAQ,EAKlC,IAAIgB,IAAS/oE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAKmD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAKoD,IAAQ,GACvBvmE,KAAKymE,KAAKrD,EAAKkD,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAKmD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEP/H,EAAKr/D,KAAKymE,KAAKjC,EAAKY,GAEpBzC,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKa,IACRrlE,KAAKymE,KAAKhC,EAAKW,GAAQ,EACpCzE,EAAK3gE,KAAKymE,KAAKhC,EAAKY,GACpBhG,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKkB,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKmB,IAAQ,GACvBxlE,KAAKymE,KAAKnC,EAAKiB,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKkB,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKwB,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKyB,IAAQ,GACvB3lE,KAAKymE,KAAKtC,EAAKuB,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKwB,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAK8B,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAK+B,IAAQ,GACvB9lE,KAAKymE,KAAKzC,EAAK6B,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAK8B,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAKoC,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAKqC,IAAQ,GACvBjmE,KAAKymE,KAAK5C,EAAKmC,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAKoC,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAK0C,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAK2C,IAAQ,GACvBpmE,KAAKymE,KAAK/C,EAAKyC,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAK0C,IAAQ,EAKlC,IAAIiB,IAAShpE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAKgD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAKiD,IAAQ,GACvBvmE,KAAKymE,KAAKlD,EAAK+C,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAKgD,IAAQ,IAErB5D,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEPhI,EAAKr/D,KAAKymE,KAAKjC,EAAKe,GAEpB5C,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKgB,KACRxlE,KAAKymE,KAAKhC,EAAKc,GAAQ,EACpC5E,EAAK3gE,KAAKymE,KAAKhC,EAAKe,IACpBnG,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKqB,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKsB,IAAQ,GACvB3lE,KAAKymE,KAAKnC,EAAKoB,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKqB,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAK2B,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAK4B,IAAQ,GACvB9lE,KAAKymE,KAAKtC,EAAK0B,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAK2B,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKiC,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKkC,IAAQ,GACvBjmE,KAAKymE,KAAKzC,EAAKgC,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKiC,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAKuC,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAKwC,IAAQ,GACvBpmE,KAAKymE,KAAK5C,EAAKsC,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAKuC,IAAQ,EAKlC,IAAIkB,IAASjpE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAK6C,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAK8C,IAAQ,GACvBvmE,KAAKymE,KAAK/C,EAAK4C,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAK6C,IAAQ,IAErB5D,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEPjI,EAAKr/D,KAAKymE,KAAKjC,EAAKkB,IAEpB/C,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKmB,KACR3lE,KAAKymE,KAAKhC,EAAKiB,IAAQ,EACpC/E,EAAK3gE,KAAKymE,KAAKhC,EAAKkB,IACpBtG,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKwB,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKyB,IAAQ,GACvB9lE,KAAKymE,KAAKnC,EAAKuB,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKwB,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAK8B,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAK+B,IAAQ,GACvBjmE,KAAKymE,KAAKtC,EAAK6B,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAK8B,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKoC,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKqC,IAAQ,GACvBpmE,KAAKymE,KAAKzC,EAAKmC,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKoC,IAAQ,EAKlC,IAAImB,IAASlpE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAK0C,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAK2C,IAAQ,GACvBvmE,KAAKymE,KAAK5C,EAAKyC,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAK0C,IAAQ,IAErB5D,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEPlI,EAAKr/D,KAAKymE,KAAKjC,EAAKqB,IAEpBlD,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKsB,KACR9lE,KAAKymE,KAAKhC,EAAKoB,IAAQ,EACpClF,EAAK3gE,KAAKymE,KAAKhC,EAAKqB,IACpBzG,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAK2B,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAK4B,IAAQ,GACvBjmE,KAAKymE,KAAKnC,EAAK0B,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAK2B,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKiC,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKkC,IAAQ,GACvBpmE,KAAKymE,KAAKtC,EAAKgC,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKiC,IAAQ,EAKlC,IAAIoB,IAASnpE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKuC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKwC,IAAQ,GACvBvmE,KAAKymE,KAAKzC,EAAKsC,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKuC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEPnI,EAAKr/D,KAAKymE,KAAKjC,EAAKwB,IAEpBrD,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKyB,KACRjmE,KAAKymE,KAAKhC,EAAKuB,IAAQ,EACpCrF,EAAK3gE,KAAKymE,KAAKhC,EAAKwB,IACpB5G,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAK8B,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAK+B,IAAQ,GACvBpmE,KAAKymE,KAAKnC,EAAK6B,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAK8B,IAAQ,EAKlC,IAAIqB,IAASppE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKoC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKqC,IAAQ,GACvBvmE,KAAKymE,KAAKtC,EAAKmC,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKoC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEPpI,EAAKr/D,KAAKymE,KAAKjC,EAAK2B,IAEpBxD,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAK4B,KACRpmE,KAAKymE,KAAKhC,EAAK0B,IAAQ,EACpCxF,EAAK3gE,KAAKymE,KAAKhC,EAAK2B,IAKpB,IAAIsB,IAASrpE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKiC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKkC,IAAQ,GACvBvmE,KAAKymE,KAAKnC,EAAKgC,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKiC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SAMP,IAAIC,IAAStpE,GAJbghE,EAAKr/D,KAAKymE,KAAKjC,EAAK8B,KAIG,KAAa,MAFpC3D,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAK+B,KACRvmE,KAAKymE,KAAKhC,EAAK6B,IAAQ,KAEW,IAAO,EA0BtD,OAzBAjoE,IAFAsiE,EAAK3gE,KAAKymE,KAAKhC,EAAK8B,MAEP5D,IAAQ,IAAO,IAAMgF,KAAQ,IAAO,EACjDA,IAAO,SACPvwE,EAAE,GAAKovE,GACPpvE,EAAE,GAAKsvE,GACPtvE,EAAE,GAAKuvE,GACPvvE,EAAE,GAAKwvE,GACPxvE,EAAE,GAAKyvE,GACPzvE,EAAE,GAAK0vE,GACP1vE,EAAE,GAAK2vE,GACP3vE,EAAE,GAAK4vE,GACP5vE,EAAE,GAAK6vE,GACP7vE,EAAE,GAAK8vE,GACP9vE,EAAE,IAAM+vE,GACR/vE,EAAE,IAAMgwE,GACRhwE,EAAE,IAAMiwE,GACRjwE,EAAE,IAAMkwE,GACRlwE,EAAE,IAAMmwE,GACRnwE,EAAE,IAAMowE,GACRpwE,EAAE,IAAMqwE,GACRrwE,EAAE,IAAMswE,GACRtwE,EAAE,IAAMuwE,GACE,IAANtpE,IACFjH,EAAE,IAAMiH,EACRiY,EAAIhiB,UAECgiB,GAQT,SAAS0xD,EAAU5jD,EAAM9L,EAAKhC,GAC5BA,EAAIinD,SAAWjlD,EAAIilD,SAAWn5C,EAAKm5C,SACnCjnD,EAAIhiB,OAAS8vB,EAAK9vB,OAASgkB,EAAIhkB,OAI/B,IAFA,IAAIgrE,EAAQ,EACRyI,EAAU,EACL/oE,EAAI,EAAGA,EAAIsX,EAAIhiB,OAAS,EAAG0K,IAAK,CAGvC,IAAIugE,EAASwI,EACbA,EAAU,EAGV,IAFA,IAAIvI,EAAgB,SAARF,EACRG,EAAOz/D,KAAKkD,IAAIlE,EAAGsZ,EAAIhkB,OAAS,GAC3BgK,EAAI0B,KAAK+C,IAAI,EAAG/D,EAAIolB,EAAK9vB,OAAS,GAAIgK,GAAKmhE,EAAMnhE,IAAK,CAC7D,IAAIlK,EAAI4K,EAAIV,EAGRwB,GAFoB,EAAhBskB,EAAKo5C,MAAMppE,KACI,EAAfkkB,EAAIklD,MAAMl/D,IAGd+gE,EAAS,SAAJv/D,EAGT0/D,EAAa,UADbH,EAAMA,EAAKG,EAAS,GAIpBuI,IAFAxI,GAHAA,EAAUA,GAAWz/D,EAAI,SAAa,GAAM,IAGxBu/D,IAAO,IAAO,KAEZ,GACtBE,GAAU,SAEZjpD,EAAIknD,MAAMx+D,GAAKwgE,EACfF,EAAQC,EACRA,EAASwI,EAQX,OANc,IAAVzI,EACFhpD,EAAIknD,MAAMx+D,GAAKsgE,EAEfhpD,EAAIhiB,SAGCgiB,EAAIs6D,SAGb,SAAShJ,EAAYxjD,EAAM9L,EAAKhC,GAI9B,OAAO0xD,EAAS5jD,EAAM9L,EAAKhC,GAsB7B,SAASuxD,EAAMtkE,EAAGoD,GAChB9R,KAAK0O,EAAIA,EACT1O,KAAK8R,EAAIA,EAzEN3G,KAAKymE,OACR/D,EAActD,GAmDhBhC,EAAG3oE,UAAU0N,MAAQ,SAAgBmW,EAAKhC,GACxC,IACItf,EAAMnC,KAAKP,OAASgkB,EAAIhkB,OAW5B,OAVoB,KAAhBO,KAAKP,QAAgC,KAAfgkB,EAAIhkB,OACtBouE,EAAY7tE,KAAMyjB,EAAKhC,GACpBtf,EAAM,GACTooE,EAAWvqE,KAAMyjB,EAAKhC,GACnBtf,EAAM,KACTgxE,EAASnzE,KAAMyjB,EAAKhC,GAEpBsxD,EAAW/yE,KAAMyjB,EAAKhC,IAchCuxD,EAAKpzE,UAAUwzE,QAAU,SAAkBzgE,GAGzC,IAFA,IAAI/F,EAAI,IAAIvK,MAAMsQ,GACd1I,EAAIs+D,EAAG3oE,UAAUgsE,WAAWj5D,GAAK,EAC5BpT,EAAI,EAAGA,EAAIoT,EAAGpT,IACrBqN,EAAErN,GAAKS,KAAKqzE,OAAO9zE,EAAG0K,EAAG0I,GAG3B,OAAO/F,GAITomE,EAAKpzE,UAAUyzE,OAAS,SAAiB3kE,EAAGzE,EAAG0I,GAC7C,GAAU,IAANjE,GAAWA,IAAMiE,EAAI,EAAG,OAAOjE,EAGnC,IADA,IAAI4kE,EAAK,EACA/zE,EAAI,EAAGA,EAAI0K,EAAG1K,IACrB+zE,IAAW,EAAJ5kE,IAAWzE,EAAI1K,EAAI,EAC1BmP,IAAM,EAGR,OAAO4kE,GAKTN,EAAKpzE,UAAU2zE,QAAU,SAAkBC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMjhE,GACpE,IAAK,IAAIpT,EAAI,EAAGA,EAAIoT,EAAGpT,IACrBo0E,EAAKp0E,GAAKk0E,EAAID,EAAIj0E,IAClBq0E,EAAKr0E,GAAKm0E,EAAIF,EAAIj0E,KAItByzE,EAAKpzE,UAAUyuC,UAAY,SAAoBolC,EAAKC,EAAKC,EAAMC,EAAMjhE,EAAG6gE,GACtExzE,KAAKuzE,QAAQC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMjhE,GAExC,IAAK,IAAI3F,EAAI,EAAGA,EAAI2F,EAAG3F,IAAM,EAM3B,IALA,IAAI/C,EAAI+C,GAAK,EAET6mE,EAAQ1oE,KAAK2oE,IAAI,EAAI3oE,KAAK4oE,GAAK9pE,GAC/B+pE,EAAQ7oE,KAAK8oE,IAAI,EAAI9oE,KAAK4oE,GAAK9pE,GAE1BiB,EAAI,EAAGA,EAAIyH,EAAGzH,GAAKjB,EAI1B,IAHA,IAAIiqE,EAASL,EACTM,EAASH,EAEJvqE,EAAI,EAAGA,EAAIuD,EAAGvD,IAAK,CAC1B,IAAIogB,EAAK8pD,EAAKzoE,EAAIzB,GACd2qE,EAAKR,EAAK1oE,EAAIzB,GAEd4qE,EAAKV,EAAKzoE,EAAIzB,EAAIuD,GAClBsnE,EAAKV,EAAK1oE,EAAIzB,EAAIuD,GAElBunE,EAAKL,EAASG,EAAKF,EAASG,EAEhCA,EAAKJ,EAASI,EAAKH,EAASE,EAC5BA,EAAKE,EAELZ,EAAKzoE,EAAIzB,GAAKogB,EAAKwqD,EACnBT,EAAK1oE,EAAIzB,GAAK2qE,EAAKE,EAEnBX,EAAKzoE,EAAIzB,EAAIuD,GAAK6c,EAAKwqD,EACvBT,EAAK1oE,EAAIzB,EAAIuD,GAAKonE,EAAKE,EAGnB7qE,IAAMQ,IACRsqE,EAAKV,EAAQK,EAASF,EAAQG,EAE9BA,EAASN,EAAQM,EAASH,EAAQE,EAClCA,EAASK,KAOnBvB,EAAKpzE,UAAU40E,YAAc,SAAsB1xE,EAAGsH,GACpD,IAAIuI,EAAqB,EAAjBxH,KAAK+C,IAAI9D,EAAGtH,GAChB2xE,EAAU,EAAJ9hE,EACNpT,EAAI,EACR,IAAKoT,EAAIA,EAAI,EAAI,EAAGA,EAAGA,KAAU,EAC/BpT,IAGF,OAAO,GAAKA,EAAI,EAAIk1E,GAGtBzB,EAAKpzE,UAAU80E,UAAY,SAAoBjB,EAAKC,EAAK/gE,GACvD,KAAIA,GAAK,GAET,IAAK,IAAIpT,EAAI,EAAGA,EAAIoT,EAAI,EAAGpT,IAAK,CAC9B,IAAIqN,EAAI6mE,EAAIl0E,GAEZk0E,EAAIl0E,GAAKk0E,EAAI9gE,EAAIpT,EAAI,GACrBk0E,EAAI9gE,EAAIpT,EAAI,GAAKqN,EAEjBA,EAAI8mE,EAAIn0E,GAERm0E,EAAIn0E,IAAMm0E,EAAI/gE,EAAIpT,EAAI,GACtBm0E,EAAI/gE,EAAIpT,EAAI,IAAMqN,IAItBomE,EAAKpzE,UAAU+0E,aAAe,SAAuBC,EAAIjiE,GAEvD,IADA,IAAI83D,EAAQ,EACHlrE,EAAI,EAAGA,EAAIoT,EAAI,EAAGpT,IAAK,CAC9B,IAAI+O,EAAoC,KAAhCnD,KAAK4I,MAAM6gE,EAAG,EAAIr1E,EAAI,GAAKoT,GACjCxH,KAAK4I,MAAM6gE,EAAG,EAAIr1E,GAAKoT,GACvB83D,EAEFmK,EAAGr1E,GAAS,SAAJ+O,EAGNm8D,EADEn8D,EAAI,SACE,EAEAA,EAAI,SAAY,EAI5B,OAAOsmE,GAGT5B,EAAKpzE,UAAUi1E,WAAa,SAAqBD,EAAIzyE,EAAKsxE,EAAK9gE,GAE7D,IADA,IAAI83D,EAAQ,EACHlrE,EAAI,EAAGA,EAAI4C,EAAK5C,IACvBkrE,GAAyB,EAARmK,EAAGr1E,GAEpBk0E,EAAI,EAAIl0E,GAAa,KAARkrE,EAAgBA,KAAkB,GAC/CgJ,EAAI,EAAIl0E,EAAI,GAAa,KAARkrE,EAAgBA,KAAkB,GAIrD,IAAKlrE,EAAI,EAAI4C,EAAK5C,EAAIoT,IAAKpT,EACzBk0E,EAAIl0E,GAAK,EAGXuiB,EAAiB,IAAV2oD,GACP3oD,EAA6B,MAAb,KAAR2oD,KAGVuI,EAAKpzE,UAAUk1E,KAAO,SAAeniE,GAEnC,IADA,IAAIoiE,EAAK,IAAI1yE,MAAMsQ,GACVpT,EAAI,EAAGA,EAAIoT,EAAGpT,IACrBw1E,EAAGx1E,GAAK,EAGV,OAAOw1E,GAGT/B,EAAKpzE,UAAUqzE,KAAO,SAAevkE,EAAGoD,EAAG2P,GACzC,IAAI9O,EAAI,EAAI3S,KAAKw0E,YAAY9lE,EAAEjP,OAAQqS,EAAErS,QAErC+zE,EAAMxzE,KAAKozE,QAAQzgE,GAEnByZ,EAAIpsB,KAAK80E,KAAKniE,GAEd8gE,EAAM,IAAIpxE,MAAMsQ,GAChBqiE,EAAO,IAAI3yE,MAAMsQ,GACjBsiE,EAAO,IAAI5yE,MAAMsQ,GAEjBuiE,EAAO,IAAI7yE,MAAMsQ,GACjBwiE,EAAQ,IAAI9yE,MAAMsQ,GAClByiE,EAAQ,IAAI/yE,MAAMsQ,GAElB0iE,EAAO5zD,EAAIknD,MACf0M,EAAK51E,OAASkT,EAEd3S,KAAK60E,WAAWnmE,EAAEi6D,MAAOj6D,EAAEjP,OAAQg0E,EAAK9gE,GACxC3S,KAAK60E,WAAW/iE,EAAE62D,MAAO72D,EAAErS,OAAQy1E,EAAMviE,GAEzC3S,KAAKquC,UAAUolC,EAAKrnD,EAAG4oD,EAAMC,EAAMtiE,EAAG6gE,GACtCxzE,KAAKquC,UAAU6mC,EAAM9oD,EAAG+oD,EAAOC,EAAOziE,EAAG6gE,GAEzC,IAAK,IAAIj0E,EAAI,EAAGA,EAAIoT,EAAGpT,IAAK,CAC1B,IAAIg1E,EAAKS,EAAKz1E,GAAK41E,EAAM51E,GAAK01E,EAAK11E,GAAK61E,EAAM71E,GAC9C01E,EAAK11E,GAAKy1E,EAAKz1E,GAAK61E,EAAM71E,GAAK01E,EAAK11E,GAAK41E,EAAM51E,GAC/Cy1E,EAAKz1E,GAAKg1E,EAUZ,OAPAv0E,KAAK00E,UAAUM,EAAMC,EAAMtiE,GAC3B3S,KAAKquC,UAAU2mC,EAAMC,EAAMI,EAAMjpD,EAAGzZ,EAAG6gE,GACvCxzE,KAAK00E,UAAUW,EAAMjpD,EAAGzZ,GACxB3S,KAAK20E,aAAaU,EAAM1iE,GAExB8O,EAAIinD,SAAWh6D,EAAEg6D,SAAW52D,EAAE42D,SAC9BjnD,EAAIhiB,OAASiP,EAAEjP,OAASqS,EAAErS,OACnBgiB,EAAIs6D,UAIbxT,EAAG3oE,UAAUspE,IAAM,SAAczlD,GAC/B,IAAIhC,EAAM,IAAI8mD,EAAG,MAEjB,OADA9mD,EAAIknD,MAAQ,IAAItmE,MAAMrC,KAAKP,OAASgkB,EAAIhkB,QACjCO,KAAKsN,MAAMmW,EAAKhC,IAIzB8mD,EAAG3oE,UAAU01E,KAAO,SAAe7xD,GACjC,IAAIhC,EAAM,IAAI8mD,EAAG,MAEjB,OADA9mD,EAAIknD,MAAQ,IAAItmE,MAAMrC,KAAKP,OAASgkB,EAAIhkB,QACjCszE,EAAW/yE,KAAMyjB,EAAKhC,IAI/B8mD,EAAG3oE,UAAUgyE,KAAO,SAAenuD,GACjC,OAAOzjB,KAAKgjB,QAAQ1V,MAAMmW,EAAKzjB,OAGjCuoE,EAAG3oE,UAAUkqE,MAAQ,SAAgBrmD,GACnC,IAAImkE,EAAWnkE,EAAM,EACjBmkE,IAAUnkE,GAAOA,GAErB3B,EAAsB,kBAAR2B,GACd3B,EAAO2B,EAAM,UAIb,IADA,IAAIgnD,EAAQ,EACHlrE,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAAK,CACpC,IAAI+O,GAAqB,EAAhBtO,KAAK2oE,MAAMppE,IAAUkkB,EAC1B+mD,GAAU,SAAJl8D,IAA0B,SAARm8D,GAC5BA,IAAU,GACVA,GAAUn8D,EAAI,SAAa,EAE3Bm8D,GAASD,IAAO,GAChBxqE,KAAK2oE,MAAMppE,GAAU,SAALirE,EAQlB,OALc,IAAVC,IACFzqE,KAAK2oE,MAAMppE,GAAKkrE,EAChBzqE,KAAKP,UAGAmoF,EAAW5nF,KAAKssE,OAAStsE,MAGlCuoE,EAAG3oE,UAAU21E,KAAO,SAAe9xD,GACjC,OAAOzjB,KAAKgjB,QAAQ8mD,MAAMrmD,IAI5B8kD,EAAG3oE,UAAU41E,IAAM,WACjB,OAAOx1E,KAAKkpE,IAAIlpE,OAIlBuoE,EAAG3oE,UAAU61E,KAAO,WAClB,OAAOz1E,KAAK4xE,KAAK5xE,KAAKgjB,UAIxBulD,EAAG3oE,UAAU6L,IAAM,SAAcgY,GAC/B,IAAInV,EA7xCN,SAAqBmV,GAGnB,IAFA,IAAInV,EAAI,IAAIjM,MAAMohB,EAAIxU,aAEbu+D,EAAM,EAAGA,EAAMl/D,EAAE7O,OAAQ+tE,IAAO,CACvC,IAAIhE,EAAOgE,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjBl/D,EAAEk/D,GAAQ/pD,EAAIklD,MAAMa,KAASiE,EAAQ,EAGvC,OAAOn/D,EAmxCConE,CAAWjyD,GACnB,GAAiB,IAAbnV,EAAE7O,OAAc,OAAO,IAAI8oE,EAAG,GAIlC,IADA,IAAIjnD,EAAMthB,KACDT,EAAI,EAAGA,EAAI+O,EAAE7O,QACP,IAAT6O,EAAE/O,GADsBA,IAAK+hB,EAAMA,EAAIk0D,OAI7C,KAAMj2E,EAAI+O,EAAE7O,OACV,IAAK,IAAIuL,EAAIsW,EAAIk0D,MAAOj2E,EAAI+O,EAAE7O,OAAQF,IAAKyL,EAAIA,EAAEwqE,MAClC,IAATlnE,EAAE/O,KAEN+hB,EAAMA,EAAI4nD,IAAIl+D,IAIlB,OAAOsW,GAITinD,EAAG3oE,UAAU+1E,OAAS,SAAiBv2D,GACrC0C,EAAuB,kBAAT1C,GAAqBA,GAAQ,GAC3C,IAGI7f,EAHA0L,EAAImU,EAAO,GACXpS,GAAKoS,EAAOnU,GAAK,GACjB2qE,EAAa,WAAe,GAAK3qE,GAAQ,GAAKA,EAGlD,GAAU,IAANA,EAAS,CACX,IAAIw/D,EAAQ,EAEZ,IAAKlrE,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAAK,CAChC,IAAIs2E,EAAW71E,KAAK2oE,MAAMppE,GAAKq2E,EAC3BpsE,GAAsB,EAAhBxJ,KAAK2oE,MAAMppE,IAAUs2E,GAAa5qE,EAC5CjL,KAAK2oE,MAAMppE,GAAKiK,EAAIihE,EACpBA,EAAQoL,IAAc,GAAK5qE,EAGzBw/D,IACFzqE,KAAK2oE,MAAMppE,GAAKkrE,EAChBzqE,KAAKP,UAIT,GAAU,IAANuN,EAAS,CACX,IAAKzN,EAAIS,KAAKP,OAAS,EAAGF,GAAK,EAAGA,IAChCS,KAAK2oE,MAAMppE,EAAIyN,GAAKhN,KAAK2oE,MAAMppE,GAGjC,IAAKA,EAAI,EAAGA,EAAIyN,EAAGzN,IACjBS,KAAK2oE,MAAMppE,GAAK,EAGlBS,KAAKP,QAAUuN,EAGjB,OAAOhN,KAAK+7E,UAGdxT,EAAG3oE,UAAUk2E,MAAQ,SAAgB12D,GAGnC,OADA0C,EAAyB,IAAlB9hB,KAAK0oE,UACL1oE,KAAK21E,OAAOv2D,IAMrBmpD,EAAG3oE,UAAU8rE,OAAS,SAAiBtsD,EAAM22D,EAAMC,GAEjD,IAAItsE,EADJoY,EAAuB,kBAAT1C,GAAqBA,GAAQ,GAGzC1V,EADEqsE,GACGA,EAAQA,EAAO,IAAO,GAEvB,EAGN,IAAI9qE,EAAImU,EAAO,GACXpS,EAAI7B,KAAKkD,KAAK+Q,EAAOnU,GAAK,GAAIjL,KAAKP,QACnCw2E,EAAO,SAAc,WAAchrE,GAAMA,EACzCirE,EAAcF,EAMlB,GAJAtsE,GAAKsD,EACLtD,EAAIyB,KAAK+C,IAAI,EAAGxE,GAGZwsE,EAAa,CACf,IAAK,IAAI32E,EAAI,EAAGA,EAAIyN,EAAGzN,IACrB22E,EAAYvN,MAAMppE,GAAKS,KAAK2oE,MAAMppE,GAEpC22E,EAAYz2E,OAASuN,EAGvB,GAAU,IAANA,QAEG,GAAIhN,KAAKP,OAASuN,EAEvB,IADAhN,KAAKP,QAAUuN,EACVzN,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAC3BS,KAAK2oE,MAAMppE,GAAKS,KAAK2oE,MAAMppE,EAAIyN,QAGjChN,KAAK2oE,MAAM,GAAK,EAChB3oE,KAAKP,OAAS,EAGhB,IAAIgrE,EAAQ,EACZ,IAAKlrE,EAAIS,KAAKP,OAAS,EAAGF,GAAK,IAAgB,IAAVkrE,GAAelrE,GAAKmK,GAAInK,IAAK,CAChE,IAAIsqE,EAAuB,EAAhB7pE,KAAK2oE,MAAMppE,GACtBS,KAAK2oE,MAAMppE,GAAMkrE,GAAU,GAAKx/D,EAAO4+D,IAAS5+D,EAChDw/D,EAAQZ,EAAOoM,EAajB,OATIC,GAAyB,IAAVzL,IACjByL,EAAYvN,MAAMuN,EAAYz2E,UAAYgrE,GAGxB,IAAhBzqE,KAAKP,SACPO,KAAK2oE,MAAM,GAAK,EAChB3oE,KAAKP,OAAS,GAGTO,KAAK+7E,UAGdxT,EAAG3oE,UAAUu2E,MAAQ,SAAgB/2D,EAAM22D,EAAMC,GAG/C,OADAl0D,EAAyB,IAAlB9hB,KAAK0oE,UACL1oE,KAAK0rE,OAAOtsD,EAAM22D,EAAMC,IAIjCzN,EAAG3oE,UAAUw2E,KAAO,SAAeh3D,GACjC,OAAOpf,KAAKgjB,QAAQ8yD,MAAM12D,IAG5BmpD,EAAG3oE,UAAUy2E,MAAQ,SAAgBj3D,GACnC,OAAOpf,KAAKgjB,QAAQ2yD,OAAOv2D,IAI7BmpD,EAAG3oE,UAAU02E,KAAO,SAAel3D,GACjC,OAAOpf,KAAKgjB,QAAQmzD,MAAM/2D,IAG5BmpD,EAAG3oE,UAAU22E,MAAQ,SAAgBn3D,GACnC,OAAOpf,KAAKgjB,QAAQ0oD,OAAOtsD,IAI7BmpD,EAAG3oE,UAAUwsE,MAAQ,SAAgBoB,GACnC1rD,EAAsB,kBAAR0rD,GAAoBA,GAAO,GACzC,IAAIviE,EAAIuiE,EAAM,GACVxgE,GAAKwgE,EAAMviE,GAAK,GAChBD,EAAI,GAAKC,EAGb,QAAIjL,KAAKP,QAAUuN,OAGXhN,KAAK2oE,MAAM37D,GAELhC,IAIhBu9D,EAAG3oE,UAAU42E,OAAS,SAAiBp3D,GACrC0C,EAAuB,kBAAT1C,GAAqBA,GAAQ,GAC3C,IAAInU,EAAImU,EAAO,GACXpS,GAAKoS,EAAOnU,GAAK,GAIrB,GAFA6W,EAAyB,IAAlB9hB,KAAK0oE,SAAgB,2CAExB1oE,KAAKP,QAAUuN,EACjB,OAAOhN,KAQT,GALU,IAANiL,GACF+B,IAEFhN,KAAKP,OAAS0L,KAAKkD,IAAIrB,EAAGhN,KAAKP,QAErB,IAANwL,EAAS,CACX,IAAIgrE,EAAO,SAAc,WAAchrE,GAAMA,EAC7CjL,KAAK2oE,MAAM3oE,KAAKP,OAAS,IAAMw2E,EAGjC,OAAOj2E,KAAK+7E,UAIdxT,EAAG3oE,UAAU62E,MAAQ,SAAgBr3D,GACnC,OAAOpf,KAAKgjB,QAAQwzD,OAAOp3D,IAI7BmpD,EAAG3oE,UAAUssE,MAAQ,SAAgBzoD,GAGnC,OAFA3B,EAAsB,kBAAR2B,GACd3B,EAAO2B,EAAM,UACTA,EAAM,EAAUzjB,KAAK02E,OAAOjzD,GAGV,IAAlBzjB,KAAK0oE,SACa,IAAhB1oE,KAAKP,SAAiC,EAAhBO,KAAK2oE,MAAM,KAAWllD,GAC9CzjB,KAAK2oE,MAAM,GAAKllD,GAAuB,EAAhBzjB,KAAK2oE,MAAM,IAClC3oE,KAAK0oE,SAAW,EACT1oE,OAGTA,KAAK0oE,SAAW,EAChB1oE,KAAK02E,MAAMjzD,GACXzjB,KAAK0oE,SAAW,EACT1oE,MAIFA,KAAK+pE,OAAOtmD,IAGrB8kD,EAAG3oE,UAAUmqE,OAAS,SAAiBtmD,GACrCzjB,KAAK2oE,MAAM,IAAMllD,EAGjB,IAAK,IAAIlkB,EAAI,EAAGA,EAAIS,KAAKP,QAAUO,KAAK2oE,MAAMppE,IAAM,SAAWA,IAC7DS,KAAK2oE,MAAMppE,IAAM,SACbA,IAAMS,KAAKP,OAAS,EACtBO,KAAK2oE,MAAMppE,EAAI,GAAK,EAEpBS,KAAK2oE,MAAMppE,EAAI,KAKnB,OAFAS,KAAKP,OAAS0L,KAAK+C,IAAIlO,KAAKP,OAAQF,EAAI,GAEjCS,MAITuoE,EAAG3oE,UAAU82E,MAAQ,SAAgBjzD,GAGnC,GAFA3B,EAAsB,kBAAR2B,GACd3B,EAAO2B,EAAM,UACTA,EAAM,EAAG,OAAOzjB,KAAKksE,OAAOzoD,GAEhC,GAAsB,IAAlBzjB,KAAK0oE,SAIP,OAHA1oE,KAAK0oE,SAAW,EAChB1oE,KAAKksE,MAAMzoD,GACXzjB,KAAK0oE,SAAW,EACT1oE,KAKT,GAFAA,KAAK2oE,MAAM,IAAMllD,EAEG,IAAhBzjB,KAAKP,QAAgBO,KAAK2oE,MAAM,GAAK,EACvC3oE,KAAK2oE,MAAM,IAAM3oE,KAAK2oE,MAAM,GAC5B3oE,KAAK0oE,SAAW,OAGhB,IAAK,IAAInpE,EAAI,EAAGA,EAAIS,KAAKP,QAAUO,KAAK2oE,MAAMppE,GAAK,EAAGA,IACpDS,KAAK2oE,MAAMppE,IAAM,SACjBS,KAAK2oE,MAAMppE,EAAI,IAAM,EAIzB,OAAOS,KAAK+7E,UAGdxT,EAAG3oE,UAAU+2E,KAAO,SAAelzD,GACjC,OAAOzjB,KAAKgjB,QAAQkpD,MAAMzoD,IAG5B8kD,EAAG3oE,UAAUg3E,KAAO,SAAenzD,GACjC,OAAOzjB,KAAKgjB,QAAQ0zD,MAAMjzD,IAG5B8kD,EAAG3oE,UAAUi3E,KAAO,WAGlB,OAFA72E,KAAK0oE,SAAW,EAET1oE,MAGTuoE,EAAG3oE,UAAU8N,IAAM,WACjB,OAAO1N,KAAKgjB,QAAQ6zD,QAGtBtO,EAAG3oE,UAAUk3E,aAAe,SAAuBrzD,EAAKylD,EAAKj3C,GAC3D,IACI1yB,EAIA+O,EALAnM,EAAMshB,EAAIhkB,OAASwyB,EAGvBjyB,KAAKiqE,QAAQ9nE,GAGb,IAAIsoE,EAAQ,EACZ,IAAKlrE,EAAI,EAAGA,EAAIkkB,EAAIhkB,OAAQF,IAAK,CAC/B+O,GAA6B,EAAxBtO,KAAK2oE,MAAMppE,EAAI0yB,IAAcw4C,EAClC,IAAIvoC,GAAwB,EAAfze,EAAIklD,MAAMppE,IAAU2pE,EAEjCuB,IADAn8D,GAAa,SAAR4zB,IACS,KAAQA,EAAQ,SAAa,GAC3CliC,KAAK2oE,MAAMppE,EAAI0yB,GAAa,SAAJ3jB,EAE1B,KAAO/O,EAAIS,KAAKP,OAASwyB,EAAO1yB,IAE9BkrE,GADAn8D,GAA6B,EAAxBtO,KAAK2oE,MAAMppE,EAAI0yB,IAAcw4C,IACrB,GACbzqE,KAAK2oE,MAAMppE,EAAI0yB,GAAa,SAAJ3jB,EAG1B,GAAc,IAAVm8D,EAAa,OAAOzqE,KAAK+7E,SAK7B,IAFAj6D,GAAkB,IAAX2oD,GACPA,EAAQ,EACHlrE,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAE3BkrE,GADAn8D,IAAsB,EAAhBtO,KAAK2oE,MAAMppE,IAAUkrE,IACd,GACbzqE,KAAK2oE,MAAMppE,GAAS,SAAJ+O,EAIlB,OAFAtO,KAAK0oE,SAAW,EAET1oE,KAAK+7E,UAGdxT,EAAG3oE,UAAUm3E,SAAW,SAAmBtzD,EAAKpS,GAC9C,IAAI4gB,GAAQjyB,KAAKP,OAASgkB,EAAIhkB,QAE1B8J,EAAIvJ,KAAKgjB,QACT1Y,EAAImZ,EAGJuzD,EAA8B,EAAxB1sE,EAAEq+D,MAAMr+D,EAAE7K,OAAS,GAGf,KADdwyB,EAAQ,GADMjyB,KAAK4rE,WAAWoL,MAG5B1sE,EAAIA,EAAE+rE,MAAMpkD,GACZ1oB,EAAEosE,OAAO1jD,GACT+kD,EAA8B,EAAxB1sE,EAAEq+D,MAAMr+D,EAAE7K,OAAS,IAI3B,IACIuL,EADAZ,EAAIb,EAAE9J,OAAS6K,EAAE7K,OAGrB,GAAa,QAAT4R,EAAgB,EAClBrG,EAAI,IAAIu9D,EAAG,OACT9oE,OAAS2K,EAAI,EACfY,EAAE29D,MAAQ,IAAItmE,MAAM2I,EAAEvL,QACtB,IAAK,IAAIF,EAAI,EAAGA,EAAIyL,EAAEvL,OAAQF,IAC5ByL,EAAE29D,MAAMppE,GAAK,EAIjB,IAAIqwB,EAAOrmB,EAAEyZ,QAAQ8zD,aAAaxsE,EAAG,EAAGF,GAClB,IAAlBwlB,EAAK84C,WACPn/D,EAAIqmB,EACA5kB,IACFA,EAAE29D,MAAMv+D,GAAK,IAIjB,IAAK,IAAIX,EAAIW,EAAI,EAAGX,GAAK,EAAGA,IAAK,CAC/B,IAAIwtE,EAAmC,UAAL,EAAxB1tE,EAAEo/D,MAAMr+D,EAAE7K,OAASgK,KACE,EAA5BF,EAAEo/D,MAAMr+D,EAAE7K,OAASgK,EAAI,IAO1B,IAHAwtE,EAAK9rE,KAAKkD,IAAK4oE,EAAKD,EAAO,EAAG,UAE9BztE,EAAEutE,aAAaxsE,EAAG2sE,EAAIxtE,GACA,IAAfF,EAAEm/D,UACPuO,IACA1tE,EAAEm/D,SAAW,EACbn/D,EAAEutE,aAAaxsE,EAAG,EAAGb,GAChBF,EAAEwhE,WACLxhE,EAAEm/D,UAAY,GAGd19D,IACFA,EAAE29D,MAAMl/D,GAAKwtE,GAajB,OAVIjsE,GACFA,EAAE+wE,SAEJxyE,EAAEwyE,SAGW,QAAT1qE,GAA4B,IAAV4gB,GACpB1oB,EAAEmiE,OAAOz5C,GAGJ,CACLilD,IAAKlsE,GAAK,KACVkC,IAAK3D,IAQTg/D,EAAG3oE,UAAUu3E,OAAS,SAAiB1zD,EAAKpS,EAAM+lE,GAGhD,OAFAt1D,GAAQ2B,EAAIsnD,UAER/qE,KAAK+qE,SACA,CACLmM,IAAK,IAAI3O,EAAG,GACZr7D,IAAK,IAAIq7D,EAAG,IAKM,IAAlBvoE,KAAK0oE,UAAmC,IAAjBjlD,EAAIilD,UAC7BpnD,EAAMthB,KAAKwsE,MAAM2K,OAAO1zD,EAAKpS,GAEhB,QAATA,IACF6lE,EAAM51D,EAAI41D,IAAI1K,OAGH,QAATn7D,IACFnE,EAAMoU,EAAIpU,IAAIs/D,MACV4K,GAA6B,IAAjBlqE,EAAIw7D,UAClBx7D,EAAIwgE,KAAKjqD,IAIN,CACLyzD,IAAKA,EACLhqE,IAAKA,IAIa,IAAlBlN,KAAK0oE,UAAmC,IAAjBjlD,EAAIilD,UAC7BpnD,EAAMthB,KAAKm3E,OAAO1zD,EAAI+oD,MAAOn7D,GAEhB,QAATA,IACF6lE,EAAM51D,EAAI41D,IAAI1K,OAGT,CACL0K,IAAKA,EACLhqE,IAAKoU,EAAIpU,MAI0B,KAAlClN,KAAK0oE,SAAWjlD,EAAIilD,WACvBpnD,EAAMthB,KAAKwsE,MAAM2K,OAAO1zD,EAAI+oD,MAAOn7D,GAEtB,QAATA,IACFnE,EAAMoU,EAAIpU,IAAIs/D,MACV4K,GAA6B,IAAjBlqE,EAAIw7D,UAClBx7D,EAAIygE,KAAKlqD,IAIN,CACLyzD,IAAK51D,EAAI41D,IACThqE,IAAKA,IAOLuW,EAAIhkB,OAASO,KAAKP,QAAUO,KAAKmpE,IAAI1lD,GAAO,EACvC,CACLyzD,IAAK,IAAI3O,EAAG,GACZr7D,IAAKlN,MAKU,IAAfyjB,EAAIhkB,OACO,QAAT4R,EACK,CACL6lE,IAAKl3E,KAAKq3E,KAAK5zD,EAAIklD,MAAM,IACzBz7D,IAAK,MAII,QAATmE,EACK,CACL6lE,IAAK,KACLhqE,IAAK,IAAIq7D,EAAGvoE,KAAKwnF,MAAM/jE,EAAIklD,MAAM,MAI9B,CACLuO,IAAKl3E,KAAKq3E,KAAK5zD,EAAIklD,MAAM,IACzBz7D,IAAK,IAAIq7D,EAAGvoE,KAAKwnF,MAAM/jE,EAAIklD,MAAM,MAI9B3oE,KAAK+2E,SAAStzD,EAAKpS,GAlF1B,IAAI6lE,EAAKhqE,EAAKoU,GAsFhBinD,EAAG3oE,UAAUs3E,IAAM,SAAczzD,GAC/B,OAAOzjB,KAAKm3E,OAAO1zD,EAAK,OAAO,GAAOyzD,KAIxC3O,EAAG3oE,UAAUsN,IAAM,SAAcuW,GAC/B,OAAOzjB,KAAKm3E,OAAO1zD,EAAK,OAAO,GAAOvW,KAGxCq7D,EAAG3oE,UAAU03E,KAAO,SAAe7zD,GACjC,OAAOzjB,KAAKm3E,OAAO1zD,EAAK,OAAO,GAAMvW,KAIvCq7D,EAAG3oE,UAAU23E,SAAW,SAAmB9zD,GACzC,IAAI+zD,EAAKx3E,KAAKm3E,OAAO1zD,GAGrB,GAAI+zD,EAAGtqE,IAAI69D,SAAU,OAAOyM,EAAGN,IAE/B,IAAIhqE,EAA0B,IAApBsqE,EAAGN,IAAIxO,SAAiB8O,EAAGtqE,IAAIygE,KAAKlqD,GAAO+zD,EAAGtqE,IAEpDuqE,EAAOh0D,EAAI8yD,MAAM,GACjBmB,EAAKj0D,EAAIgoD,MAAM,GACftC,EAAMj8D,EAAIi8D,IAAIsO,GAGlB,OAAItO,EAAM,GAAa,IAAPuO,GAAoB,IAARvO,EAAmBqO,EAAGN,IAGvB,IAApBM,EAAGN,IAAIxO,SAAiB8O,EAAGN,IAAIR,MAAM,GAAKc,EAAGN,IAAIhL,MAAM,IAGhE3D,EAAG3oE,UAAU4nF,MAAQ,SAAgB/jE,GACnC,IAAImkE,EAAWnkE,EAAM,EACjBmkE,IAAUnkE,GAAOA,GAErB3B,EAAO2B,GAAO,UAId,IAHA,IAAIvY,GAAK,GAAK,IAAMuY,EAEhB6O,EAAM,EACD/yB,EAAIS,KAAKP,OAAS,EAAGF,GAAK,EAAGA,IACpC+yB,GAAOpnB,EAAIonB,GAAuB,EAAhBtyB,KAAK2oE,MAAMppE,KAAWkkB,EAG1C,OAAOmkE,GAAYt1D,EAAMA,GAI3Bi2C,EAAG3oE,UAAUorE,KAAO,SAAevnD,GACjC,OAAOzjB,KAAKwnF,MAAM/jE,IAIpB8kD,EAAG3oE,UAAUqrE,MAAQ,SAAgBxnD,GACnC,IAAImkE,EAAWnkE,EAAM,EACjBmkE,IAAUnkE,GAAOA,GAErB3B,EAAO2B,GAAO,UAGd,IADA,IAAIgnD,EAAQ,EACHlrE,EAAIS,KAAKP,OAAS,EAAGF,GAAK,EAAGA,IAAK,CACzC,IAAI+O,GAAqB,EAAhBtO,KAAK2oE,MAAMppE,IAAkB,SAARkrE,EAC9BzqE,KAAK2oE,MAAMppE,GAAM+O,EAAImV,EAAO,EAC5BgnD,EAAQn8D,EAAImV,EAId,OADAzjB,KAAK+7E,SACE6L,EAAW5nF,KAAKssE,OAAStsE,MAGlCuoE,EAAG3oE,UAAUy3E,KAAO,SAAe5zD,GACjC,OAAOzjB,KAAKgjB,QAAQioD,MAAMxnD,IAG5B8kD,EAAG3oE,UAAU+3E,KAAO,SAAezsE,GACjC4W,EAAsB,IAAf5W,EAAEw9D,UACT5mD,GAAQ5W,EAAE6/D,UAEV,IAAIr8D,EAAI1O,KACJ8R,EAAI5G,EAAE8X,QAGRtU,EADiB,IAAfA,EAAEg6D,SACAh6D,EAAE4oE,KAAKpsE,GAEPwD,EAAEsU,QAaR,IATA,IAAIxU,EAAI,IAAI+5D,EAAG,GACXn1D,EAAI,IAAIm1D,EAAG,GAGX11D,EAAI,IAAI01D,EAAG,GACXh1D,EAAI,IAAIg1D,EAAG,GAEXn/D,EAAI,EAEDsF,EAAEG,UAAYiD,EAAEjD,UACrBH,EAAEg9D,OAAO,GACT55D,EAAE45D,OAAO,KACPtiE,EAMJ,IAHA,IAAIwuE,EAAK9lE,EAAEkR,QACP60D,EAAKnpE,EAAEsU,SAEHtU,EAAEq8D,UAAU,CAClB,IAAK,IAAIxrE,EAAI,EAAGu4E,EAAK,EAAyB,KAArBppE,EAAEi6D,MAAM,GAAKmP,IAAav4E,EAAI,KAAMA,EAAGu4E,IAAO,GACvE,GAAIv4E,EAAI,EAEN,IADAmP,EAAEg9D,OAAOnsE,GACFA,KAAM,IACPiP,EAAEupE,SAAW3kE,EAAE2kE,WACjBvpE,EAAEk/D,KAAKkK,GACPxkE,EAAEu6D,KAAKkK,IAGTrpE,EAAEk9D,OAAO,GACTt4D,EAAEs4D,OAAO,GAIb,IAAK,IAAIjiE,EAAI,EAAGuuE,EAAK,EAAyB,KAArBlmE,EAAE62D,MAAM,GAAKqP,IAAavuE,EAAI,KAAMA,EAAGuuE,IAAO,GACvE,GAAIvuE,EAAI,EAEN,IADAqI,EAAE45D,OAAOjiE,GACFA,KAAM,IACPoJ,EAAEklE,SAAWxkE,EAAEwkE,WACjBllE,EAAE66D,KAAKkK,GACPrkE,EAAEo6D,KAAKkK,IAGThlE,EAAE64D,OAAO,GACTn4D,EAAEm4D,OAAO,GAITh9D,EAAEy6D,IAAIr3D,IAAM,GACdpD,EAAEi/D,KAAK77D,GACPtD,EAAEm/D,KAAK96D,GACPO,EAAEu6D,KAAKp6D,KAEPzB,EAAE67D,KAAKj/D,GACPmE,EAAE86D,KAAKn/D,GACP+E,EAAEo6D,KAAKv6D,IAIX,MAAO,CACL7J,EAAGsJ,EACHvI,EAAGiJ,EACH0kE,IAAKnmE,EAAE6jE,OAAOvsE,KAOlBm/D,EAAG3oE,UAAUs4E,OAAS,SAAiBhtE,GACrC4W,EAAsB,IAAf5W,EAAEw9D,UACT5mD,GAAQ5W,EAAE6/D,UAEV,IAAIxhE,EAAIvJ,KACJsK,EAAIY,EAAE8X,QAGRzZ,EADiB,IAAfA,EAAEm/D,SACAn/D,EAAE+tE,KAAKpsE,GAEP3B,EAAEyZ,QAQR,IALA,IAuCI1B,EAvCA62D,EAAK,IAAI5P,EAAG,GACZ6P,EAAK,IAAI7P,EAAG,GAEZrV,EAAQ5oD,EAAE0Y,QAEPzZ,EAAE8uE,KAAK,GAAK,GAAK/tE,EAAE+tE,KAAK,GAAK,GAAG,CACrC,IAAK,IAAI94E,EAAI,EAAGu4E,EAAK,EAAyB,KAArBvuE,EAAEo/D,MAAM,GAAKmP,IAAav4E,EAAI,KAAMA,EAAGu4E,IAAO,GACvE,GAAIv4E,EAAI,EAEN,IADAgK,EAAEmiE,OAAOnsE,GACFA,KAAM,GACP44E,EAAGJ,SACLI,EAAGzK,KAAKxa,GAGVilB,EAAGzM,OAAO,GAId,IAAK,IAAIjiE,EAAI,EAAGuuE,EAAK,EAAyB,KAArB1tE,EAAEq+D,MAAM,GAAKqP,IAAavuE,EAAI,KAAMA,EAAGuuE,IAAO,GACvE,GAAIvuE,EAAI,EAEN,IADAa,EAAEohE,OAAOjiE,GACFA,KAAM,GACP2uE,EAAGL,SACLK,EAAG1K,KAAKxa,GAGVklB,EAAG1M,OAAO,GAIVniE,EAAE4/D,IAAI7+D,IAAM,GACdf,EAAEokE,KAAKrjE,GACP6tE,EAAGxK,KAAKyK,KAER9tE,EAAEqjE,KAAKpkE,GACP6uE,EAAGzK,KAAKwK,IAeZ,OATE72D,EADgB,IAAd/X,EAAE8uE,KAAK,GACHF,EAEAC,GAGAC,KAAK,GAAK,GAChB/2D,EAAIosD,KAAKxiE,GAGJoW,GAGTinD,EAAG3oE,UAAUq4E,IAAM,SAAcx0D,GAC/B,GAAIzjB,KAAK+qE,SAAU,OAAOtnD,EAAI/V,MAC9B,GAAI+V,EAAIsnD,SAAU,OAAO/qE,KAAK0N,MAE9B,IAAInE,EAAIvJ,KAAKgjB,QACT1Y,EAAImZ,EAAIT,QACZzZ,EAAEm/D,SAAW,EACbp+D,EAAEo+D,SAAW,EAGb,IAAK,IAAIz2C,EAAQ,EAAG1oB,EAAEsF,UAAYvE,EAAEuE,SAAUojB,IAC5C1oB,EAAEmiE,OAAO,GACTphE,EAAEohE,OAAO,GAGX,OAAG,CACD,KAAOniE,EAAEsF,UACPtF,EAAEmiE,OAAO,GAEX,KAAOphE,EAAEuE,UACPvE,EAAEohE,OAAO,GAGX,IAAIzgE,EAAI1B,EAAE4/D,IAAI7+D,GACd,GAAIW,EAAI,EAAG,CAET,IAAI2B,EAAIrD,EACRA,EAAIe,EACJA,EAAIsC,OACC,GAAU,IAAN3B,GAAyB,IAAdX,EAAE+tE,KAAK,GAC3B,MAGF9uE,EAAEokE,KAAKrjE,GAGT,OAAOA,EAAEqrE,OAAO1jD,IAIlBs2C,EAAG3oE,UAAU04E,KAAO,SAAe70D,GACjC,OAAOzjB,KAAK23E,KAAKl0D,GAAKla,EAAE+tE,KAAK7zD,IAG/B8kD,EAAG3oE,UAAUiP,OAAS,WACpB,OAA+B,KAAP,EAAhB7O,KAAK2oE,MAAM,KAGrBJ,EAAG3oE,UAAUm4E,MAAQ,WACnB,OAA+B,KAAP,EAAhB/3E,KAAK2oE,MAAM,KAIrBJ,EAAG3oE,UAAU6rE,MAAQ,SAAgBhoD,GACnC,OAAOzjB,KAAK2oE,MAAM,GAAKllD,GAIzB8kD,EAAG3oE,UAAU24E,MAAQ,SAAgB/K,GACnC1rD,EAAsB,kBAAR0rD,GACd,IAAIviE,EAAIuiE,EAAM,GACVxgE,GAAKwgE,EAAMviE,GAAK,GAChBD,EAAI,GAAKC,EAGb,GAAIjL,KAAKP,QAAUuN,EAGjB,OAFAhN,KAAKiqE,QAAQj9D,EAAI,GACjBhN,KAAK2oE,MAAM37D,IAAMhC,EACVhL,KAKT,IADA,IAAIyqE,EAAQz/D,EACHzL,EAAIyN,EAAa,IAAVy9D,GAAelrE,EAAIS,KAAKP,OAAQF,IAAK,CACnD,IAAI+O,EAAoB,EAAhBtO,KAAK2oE,MAAMppE,GAEnBkrE,GADAn8D,GAAKm8D,KACS,GACdn8D,GAAK,SACLtO,KAAK2oE,MAAMppE,GAAK+O,EAMlB,OAJc,IAAVm8D,IACFzqE,KAAK2oE,MAAMppE,GAAKkrE,EAChBzqE,KAAKP,UAEAO,MAGTuoE,EAAG3oE,UAAUmrE,OAAS,WACpB,OAAuB,IAAhB/qE,KAAKP,QAAkC,IAAlBO,KAAK2oE,MAAM,IAGzCJ,EAAG3oE,UAAUy4E,KAAO,SAAe50D,GACjC,IAOInC,EAPAonD,EAAWjlD,EAAM,EAErB,GAAsB,IAAlBzjB,KAAK0oE,WAAmBA,EAAU,OAAQ,EAC9C,GAAsB,IAAlB1oE,KAAK0oE,UAAkBA,EAAU,OAAO,EAK5C,GAHA1oE,KAAK+7E,SAGD/7E,KAAKP,OAAS,EAChB6hB,EAAM,MACD,CACDonD,IACFjlD,GAAOA,GAGT3B,EAAO2B,GAAO,SAAW,qBAEzB,IAAInV,EAAoB,EAAhBtO,KAAK2oE,MAAM,GACnBrnD,EAAMhT,IAAMmV,EAAM,EAAInV,EAAImV,GAAO,EAAI,EAEvC,OAAsB,IAAlBzjB,KAAK0oE,SAA8B,GAANpnD,EAC1BA,GAOTinD,EAAG3oE,UAAUupE,IAAM,SAAc1lD,GAC/B,GAAsB,IAAlBzjB,KAAK0oE,UAAmC,IAAjBjlD,EAAIilD,SAAgB,OAAQ,EACvD,GAAsB,IAAlB1oE,KAAK0oE,UAAmC,IAAjBjlD,EAAIilD,SAAgB,OAAO,EAEtD,IAAIpnD,EAAMthB,KAAKw4E,KAAK/0D,GACpB,OAAsB,IAAlBzjB,KAAK0oE,SAA8B,GAANpnD,EAC1BA,GAITinD,EAAG3oE,UAAU44E,KAAO,SAAe/0D,GAEjC,GAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAQ,OAAO,EACrC,GAAIO,KAAKP,OAASgkB,EAAIhkB,OAAQ,OAAQ,EAGtC,IADA,IAAI6hB,EAAM,EACD/hB,EAAIS,KAAKP,OAAS,EAAGF,GAAK,EAAGA,IAAK,CACzC,IAAIgK,EAAoB,EAAhBvJ,KAAK2oE,MAAMppE,GACf+K,EAAmB,EAAfmZ,EAAIklD,MAAMppE,GAElB,GAAIgK,IAAMe,EAAV,CACIf,EAAIe,EACNgX,GAAO,EACE/X,EAAIe,IACbgX,EAAM,GAER,OAEF,OAAOA,GAGTinD,EAAG3oE,UAAU64E,IAAM,SAAch1D,GAC/B,OAA0B,IAAnBzjB,KAAKq4E,KAAK50D,IAGnB8kD,EAAG3oE,UAAU84E,GAAK,SAAaj1D,GAC7B,OAAyB,IAAlBzjB,KAAKmpE,IAAI1lD,IAGlB8kD,EAAG3oE,UAAU+4E,KAAO,SAAel1D,GACjC,OAAOzjB,KAAKq4E,KAAK50D,IAAQ,GAG3B8kD,EAAG3oE,UAAUg5E,IAAM,SAAcn1D,GAC/B,OAAOzjB,KAAKmpE,IAAI1lD,IAAQ,GAG1B8kD,EAAG3oE,UAAUi5E,IAAM,SAAcp1D,GAC/B,OAA2B,IAApBzjB,KAAKq4E,KAAK50D,IAGnB8kD,EAAG3oE,UAAUk5E,GAAK,SAAar1D,GAC7B,OAA0B,IAAnBzjB,KAAKmpE,IAAI1lD,IAGlB8kD,EAAG3oE,UAAUm5E,KAAO,SAAet1D,GACjC,OAAOzjB,KAAKq4E,KAAK50D,IAAQ,GAG3B8kD,EAAG3oE,UAAUo5E,IAAM,SAAcv1D,GAC/B,OAAOzjB,KAAKmpE,IAAI1lD,IAAQ,GAG1B8kD,EAAG3oE,UAAUq5E,IAAM,SAAcx1D,GAC/B,OAA0B,IAAnBzjB,KAAKq4E,KAAK50D,IAGnB8kD,EAAG3oE,UAAUs5E,GAAK,SAAaz1D,GAC7B,OAAyB,IAAlBzjB,KAAKmpE,IAAI1lD,IAOlB8kD,EAAGK,IAAM,SAAcnlD,GACrB,OAAO,IAAI01D,EAAI11D,IAGjB8kD,EAAG3oE,UAAUw5E,MAAQ,SAAgBC,GAGnC,OAFAv3D,GAAQ9hB,KAAK4oE,IAAK,yCAClB9mD,EAAyB,IAAlB9hB,KAAK0oE,SAAgB,iCACrB2Q,EAAIC,UAAUt5E,MAAMu5E,UAAUF,IAGvC9Q,EAAG3oE,UAAU45E,QAAU,WAErB,OADA13D,EAAO9hB,KAAK4oE,IAAK,wDACV5oE,KAAK4oE,IAAI6Q,YAAYz5E,OAG9BuoE,EAAG3oE,UAAU25E,UAAY,SAAoBF,GAE3C,OADAr5E,KAAK4oE,IAAMyQ,EACJr5E,MAGTuoE,EAAG3oE,UAAU85E,SAAW,SAAmBL,GAEzC,OADAv3D,GAAQ9hB,KAAK4oE,IAAK,yCACX5oE,KAAKu5E,UAAUF,IAGxB9Q,EAAG3oE,UAAU+5E,OAAS,SAAiBl2D,GAErC,OADA3B,EAAO9hB,KAAK4oE,IAAK,sCACV5oE,KAAK4oE,IAAI/yB,IAAI71C,KAAMyjB,IAG5B8kD,EAAG3oE,UAAUg6E,QAAU,SAAkBn2D,GAEvC,OADA3B,EAAO9hB,KAAK4oE,IAAK,uCACV5oE,KAAK4oE,IAAI8E,KAAK1tE,KAAMyjB,IAG7B8kD,EAAG3oE,UAAUi6E,OAAS,SAAiBp2D,GAErC,OADA3B,EAAO9hB,KAAK4oE,IAAK,sCACV5oE,KAAK4oE,IAAIgF,IAAI5tE,KAAMyjB,IAG5B8kD,EAAG3oE,UAAUk6E,QAAU,SAAkBr2D,GAEvC,OADA3B,EAAO9hB,KAAK4oE,IAAK,uCACV5oE,KAAK4oE,IAAI+E,KAAK3tE,KAAMyjB,IAG7B8kD,EAAG3oE,UAAUm6E,OAAS,SAAiBt2D,GAErC,OADA3B,EAAO9hB,KAAK4oE,IAAK,sCACV5oE,KAAK4oE,IAAIoR,IAAIh6E,KAAMyjB,IAG5B8kD,EAAG3oE,UAAUq6E,OAAS,SAAiBx2D,GAGrC,OAFA3B,EAAO9hB,KAAK4oE,IAAK,sCACjB5oE,KAAK4oE,IAAIsR,SAASl6E,KAAMyjB,GACjBzjB,KAAK4oE,IAAIM,IAAIlpE,KAAMyjB,IAG5B8kD,EAAG3oE,UAAUu6E,QAAU,SAAkB12D,GAGvC,OAFA3B,EAAO9hB,KAAK4oE,IAAK,sCACjB5oE,KAAK4oE,IAAIsR,SAASl6E,KAAMyjB,GACjBzjB,KAAK4oE,IAAIgJ,KAAK5xE,KAAMyjB,IAG7B8kD,EAAG3oE,UAAUw6E,OAAS,WAGpB,OAFAt4D,EAAO9hB,KAAK4oE,IAAK,sCACjB5oE,KAAK4oE,IAAIyR,SAASr6E,MACXA,KAAK4oE,IAAI4M,IAAIx1E,OAGtBuoE,EAAG3oE,UAAU06E,QAAU,WAGrB,OAFAx4D,EAAO9hB,KAAK4oE,IAAK,uCACjB5oE,KAAK4oE,IAAIyR,SAASr6E,MACXA,KAAK4oE,IAAI6M,KAAKz1E,OAIvBuoE,EAAG3oE,UAAU26E,QAAU,WAGrB,OAFAz4D,EAAO9hB,KAAK4oE,IAAK,uCACjB5oE,KAAK4oE,IAAIyR,SAASr6E,MACXA,KAAK4oE,IAAIthC,KAAKtnC,OAGvBuoE,EAAG3oE,UAAU46E,QAAU,WAGrB,OAFA14D,EAAO9hB,KAAK4oE,IAAK,uCACjB5oE,KAAK4oE,IAAIyR,SAASr6E,MACXA,KAAK4oE,IAAI0P,KAAKt4E,OAIvBuoE,EAAG3oE,UAAU66E,OAAS,WAGpB,OAFA34D,EAAO9hB,KAAK4oE,IAAK,sCACjB5oE,KAAK4oE,IAAIyR,SAASr6E,MACXA,KAAK4oE,IAAI4D,IAAIxsE,OAGtBuoE,EAAG3oE,UAAU86E,OAAS,SAAiBj3D,GAGrC,OAFA3B,EAAO9hB,KAAK4oE,MAAQnlD,EAAImlD,IAAK,qBAC7B5oE,KAAK4oE,IAAIyR,SAASr6E,MACXA,KAAK4oE,IAAIn9D,IAAIzL,KAAMyjB,IAI5B,IAAIk3D,EAAS,CACXC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,MAIV,SAASC,EAAQ93E,EAAMgI,GAErBlL,KAAKkD,KAAOA,EACZlD,KAAKkL,EAAI,IAAIq9D,EAAGr9D,EAAG,IACnBlL,KAAK8C,EAAI9C,KAAKkL,EAAE+D,YAChBjP,KAAKmK,EAAI,IAAIo+D,EAAG,GAAGoN,OAAO31E,KAAK8C,GAAG6qE,KAAK3tE,KAAKkL,GAE5ClL,KAAKmpB,IAAMnpB,KAAKi7E,OAiDlB,SAASC,IACPF,EAAOl7E,KACLE,KACA,OACA,2EA+DJ,SAASm7E,IACPH,EAAOl7E,KACLE,KACA,OACA,kEAIJ,SAASo7E,IACPJ,EAAOl7E,KACLE,KACA,OACA,yDAIJ,SAASq7E,IAEPL,EAAOl7E,KACLE,KACA,QACA,uEA8CJ,SAASm5E,EAAK/uE,GACZ,GAAiB,kBAANA,EAAgB,CACzB,IAAIkxE,EAAQ/S,EAAGgT,OAAOnxE,GACtBpK,KAAKoK,EAAIkxE,EAAMpwE,EACflL,KAAKs7E,MAAQA,OAEbx5D,EAAO1X,EAAEquE,IAAI,GAAI,kCACjBz4E,KAAKoK,EAAIA,EACTpK,KAAKs7E,MAAQ,KAoOjB,SAASE,EAAMpxE,GACb+uE,EAAIr5E,KAAKE,KAAMoK,GAEfpK,KAAKiyB,MAAQjyB,KAAKoK,EAAE6E,YAChBjP,KAAKiyB,MAAQ,KAAO,IACtBjyB,KAAKiyB,OAAS,GAAMjyB,KAAKiyB,MAAQ,IAGnCjyB,KAAKiL,EAAI,IAAIs9D,EAAG,GAAGoN,OAAO31E,KAAKiyB,OAC/BjyB,KAAK03E,GAAK13E,KAAKy7E,KAAKz7E,KAAKiL,EAAEuqE,OAC3Bx1E,KAAK07E,KAAO17E,KAAKiL,EAAEitE,OAAOl4E,KAAKoK,GAE/BpK,KAAK27E,KAAO37E,KAAK07E,KAAKxS,IAAIlpE,KAAKiL,GAAGyrE,MAAM,GAAGQ,IAAIl3E,KAAKoK,GACpDpK,KAAK27E,KAAO37E,KAAK27E,KAAKrE,KAAKt3E,KAAKiL,GAChCjL,KAAK27E,KAAO37E,KAAKiL,EAAE2iE,IAAI5tE,KAAK27E,MA9a9BX,EAAOp7E,UAAUq7E,KAAO,WACtB,IAAI9xD,EAAM,IAAIo/C,EAAG,MAEjB,OADAp/C,EAAIw/C,MAAQ,IAAItmE,MAAM8I,KAAK0I,KAAK7T,KAAK8C,EAAI,KAClCqmB,GAGT6xD,EAAOp7E,UAAUg8E,QAAU,SAAkBn4D,GAG3C,IACIo4D,EADA5wE,EAAIwY,EAGR,GACEzjB,KAAKyZ,MAAMxO,EAAGjL,KAAKmpB,KAGnB0yD,GADA5wE,GADAA,EAAIjL,KAAK87E,MAAM7wE,IACTyiE,KAAK1tE,KAAKmpB,MACPla,kBACF4sE,EAAO77E,KAAK8C,GAErB,IAAIqmE,EAAM0S,EAAO77E,KAAK8C,GAAK,EAAImI,EAAEutE,KAAKx4E,KAAKkL,GAgB3C,OAfY,IAARi+D,GACFl+D,EAAE09D,MAAM,GAAK,EACb19D,EAAExL,OAAS,GACF0pE,EAAM,EACfl+D,EAAE0iE,KAAK3tE,KAAKkL,QAEIya,IAAZ1a,EAAEw+D,MAEJx+D,EAAEw+D,QAGFx+D,EAAE8wE,SAIC9wE,GAGT+vE,EAAOp7E,UAAU6Z,MAAQ,SAAgBmK,EAAOnC,GAC9CmC,EAAM8nD,OAAO1rE,KAAK8C,EAAG,EAAG2e,IAG1Bu5D,EAAOp7E,UAAUk8E,MAAQ,SAAgBr4D,GACvC,OAAOA,EAAImuD,KAAK5xE,KAAKmK,IASvB0V,EAASq7D,EAAMF,GAEfE,EAAKt7E,UAAU6Z,MAAQ,SAAgBmK,EAAOqjD,GAK5C,IAHA,IAAIgP,EAAO,QAEP+F,EAAS7wE,KAAKkD,IAAIuV,EAAMnkB,OAAQ,GAC3BF,EAAI,EAAGA,EAAIy8E,EAAQz8E,IAC1B0nE,EAAO0B,MAAMppE,GAAKqkB,EAAM+kD,MAAMppE,GAIhC,GAFA0nE,EAAOxnE,OAASu8E,EAEZp4D,EAAMnkB,QAAU,EAGlB,OAFAmkB,EAAM+kD,MAAM,GAAK,OACjB/kD,EAAMnkB,OAAS,GAKjB,IAAIwnB,EAAOrD,EAAM+kD,MAAM,GAGvB,IAFA1B,EAAO0B,MAAM1B,EAAOxnE,UAAYwnB,EAAOgvD,EAElC12E,EAAI,GAAIA,EAAIqkB,EAAMnkB,OAAQF,IAAK,CAClC,IAAIkE,EAAwB,EAAjBmgB,EAAM+kD,MAAMppE,GACvBqkB,EAAM+kD,MAAMppE,EAAI,KAAQkE,EAAOwyE,IAAS,EAAMhvD,IAAS,GACvDA,EAAOxjB,EAETwjB,KAAU,GACVrD,EAAM+kD,MAAMppE,EAAI,IAAM0nB,EACT,IAATA,GAAcrD,EAAMnkB,OAAS,GAC/BmkB,EAAMnkB,QAAU,GAEhBmkB,EAAMnkB,QAAU,GAIpBy7E,EAAKt7E,UAAUk8E,MAAQ,SAAgBr4D,GAErCA,EAAIklD,MAAMllD,EAAIhkB,QAAU,EACxBgkB,EAAIklD,MAAMllD,EAAIhkB,OAAS,GAAK,EAC5BgkB,EAAIhkB,QAAU,EAId,IADA,IAAI+qE,EAAK,EACAjrE,EAAI,EAAGA,EAAIkkB,EAAIhkB,OAAQF,IAAK,CACnC,IAAI+O,EAAmB,EAAfmV,EAAIklD,MAAMppE,GAClBirE,GAAU,IAAJl8D,EACNmV,EAAIklD,MAAMppE,GAAU,SAALirE,EACfA,EAAS,GAAJl8D,GAAak8D,EAAK,SAAa,GAUtC,OANkC,IAA9B/mD,EAAIklD,MAAMllD,EAAIhkB,OAAS,KACzBgkB,EAAIhkB,SAC8B,IAA9BgkB,EAAIklD,MAAMllD,EAAIhkB,OAAS,IACzBgkB,EAAIhkB,UAGDgkB,GAST5D,EAASs7D,EAAMH,GAQfn7D,EAASu7D,EAAMJ,GASfn7D,EAASw7D,EAAQL,GAEjBK,EAAOz7E,UAAUk8E,MAAQ,SAAgBr4D,GAGvC,IADA,IAAIgnD,EAAQ,EACHlrE,EAAI,EAAGA,EAAIkkB,EAAIhkB,OAAQF,IAAK,CACnC,IAAIusE,EAA0B,IAAL,EAAfroD,EAAIklD,MAAMppE,IAAiBkrE,EACjCD,EAAU,SAALsB,EACTA,KAAQ,GAERroD,EAAIklD,MAAMppE,GAAKirE,EACfC,EAAQqB,EAKV,OAHc,IAAVrB,IACFhnD,EAAIklD,MAAMllD,EAAIhkB,UAAYgrE,GAErBhnD,GAIT8kD,EAAGgT,OAAS,SAAgBr4E,GAE1B,GAAIy3E,EAAOz3E,GAAO,OAAOy3E,EAAOz3E,GAEhC,IAAIo4E,EACJ,GAAa,SAATp4E,EACFo4E,EAAQ,IAAIJ,OACP,GAAa,SAATh4E,EACTo4E,EAAQ,IAAIH,OACP,GAAa,SAATj4E,EACTo4E,EAAQ,IAAIF,MACP,IAAa,WAATl4E,EAGT,MAAM,IAAIa,MAAM,iBAAmBb,GAFnCo4E,EAAQ,IAAID,EAMd,OAFAV,EAAOz3E,GAAQo4E,EAERA,GAkBTnC,EAAIv5E,UAAUy6E,SAAW,SAAmB9wE,GAC1CuY,EAAsB,IAAfvY,EAAEm/D,SAAgB,iCACzB5mD,EAAOvY,EAAEq/D,IAAK,oCAGhBuQ,EAAIv5E,UAAUs6E,SAAW,SAAmB3wE,EAAGe,GAC7CwX,EAAqC,KAA7BvY,EAAEm/D,SAAWp+D,EAAEo+D,UAAiB,iCACxC5mD,EAAOvY,EAAEq/D,KAAOr/D,EAAEq/D,MAAQt+D,EAAEs+D,IAC1B,oCAGJuQ,EAAIv5E,UAAU67E,KAAO,SAAelyE,GAClC,OAAIvJ,KAAKs7E,MAAct7E,KAAKs7E,MAAMM,QAAQryE,GAAGgwE,UAAUv5E,OAEvDqnF,EAAK99E,EAAGA,EAAE+tE,KAAKt3E,KAAKoK,GAAGmvE,UAAUv5E,OAC1BuJ,IAGT4vE,EAAIv5E,UAAU4sE,IAAM,SAAcjjE,GAChC,OAAIA,EAAEwhE,SACGxhE,EAAEyZ,QAGJhjB,KAAKoK,EAAEwjE,IAAIrkE,GAAGgwE,UAAUv5E,OAGjCm5E,EAAIv5E,UAAUi2C,IAAM,SAActsC,EAAGe,GACnCtK,KAAKk6E,SAAS3wE,EAAGe,GAEjB,IAAIgX,EAAM/X,EAAEssC,IAAIvrC,GAIhB,OAHIgX,EAAI6nD,IAAInpE,KAAKoK,IAAM,GACrBkX,EAAIqsD,KAAK3tE,KAAKoK,GAETkX,EAAIi4D,UAAUv5E,OAGvBm5E,EAAIv5E,UAAU8tE,KAAO,SAAenkE,EAAGe,GACrCtK,KAAKk6E,SAAS3wE,EAAGe,GAEjB,IAAIgX,EAAM/X,EAAEmkE,KAAKpjE,GAIjB,OAHIgX,EAAI6nD,IAAInpE,KAAKoK,IAAM,GACrBkX,EAAIqsD,KAAK3tE,KAAKoK,GAETkX,GAGT63D,EAAIv5E,UAAUguE,IAAM,SAAcrkE,EAAGe,GACnCtK,KAAKk6E,SAAS3wE,EAAGe,GAEjB,IAAIgX,EAAM/X,EAAEqkE,IAAItjE,GAIhB,OAHIgX,EAAI+2D,KAAK,GAAK,GAChB/2D,EAAIosD,KAAK1tE,KAAKoK,GAETkX,EAAIi4D,UAAUv5E,OAGvBm5E,EAAIv5E,UAAU+tE,KAAO,SAAepkE,EAAGe,GACrCtK,KAAKk6E,SAAS3wE,EAAGe,GAEjB,IAAIgX,EAAM/X,EAAEokE,KAAKrjE,GAIjB,OAHIgX,EAAI+2D,KAAK,GAAK,GAChB/2D,EAAIosD,KAAK1tE,KAAKoK,GAETkX,GAGT63D,EAAIv5E,UAAUo6E,IAAM,SAAczwE,EAAGka,GAEnC,OADAzjB,KAAKq6E,SAAS9wE,GACPvJ,KAAKy7E,KAAKlyE,EAAE8sE,MAAM5yD,KAG3B01D,EAAIv5E,UAAUgyE,KAAO,SAAeroE,EAAGe,GAErC,OADAtK,KAAKk6E,SAAS3wE,EAAGe,GACVtK,KAAKy7E,KAAKlyE,EAAEqoE,KAAKtnE,KAG1B6uE,EAAIv5E,UAAUspE,IAAM,SAAc3/D,EAAGe,GAEnC,OADAtK,KAAKk6E,SAAS3wE,EAAGe,GACVtK,KAAKy7E,KAAKlyE,EAAE2/D,IAAI5+D,KAGzB6uE,EAAIv5E,UAAU61E,KAAO,SAAelsE,GAClC,OAAOvJ,KAAK4xE,KAAKroE,EAAGA,EAAEyZ,UAGxBm2D,EAAIv5E,UAAU41E,IAAM,SAAcjsE,GAChC,OAAOvJ,KAAKkpE,IAAI3/D,EAAGA,IAGrB4vE,EAAIv5E,UAAU0nC,KAAO,SAAe/9B,GAClC,GAAIA,EAAEwhE,SAAU,OAAOxhE,EAAEyZ,QAEzB,IAAIi5D,EAAOj8E,KAAKoK,EAAEqhE,MAAM,GAIxB,GAHA3pD,EAAOm6D,EAAO,IAAM,GAGP,IAATA,EAAY,CACd,IAAIxwE,EAAMzL,KAAKoK,EAAEyrC,IAAI,IAAI0yB,EAAG,IAAImD,OAAO,GACvC,OAAO1rE,KAAKyL,IAAIlC,EAAGkC,GAQrB,IAFA,IAAIT,EAAIhL,KAAKoK,EAAEwsE,KAAK,GAChB5pE,EAAI,GACAhC,EAAE+/D,UAA2B,IAAf//D,EAAEygE,MAAM,IAC5Bz+D,IACAhC,EAAE0gE,OAAO,GAEX5pD,GAAQ9W,EAAE+/D,UAEV,IAAImR,EAAM,IAAI3T,EAAG,GAAG6Q,MAAMp5E,MACtBm8E,EAAOD,EAAIzB,SAIX2B,EAAOp8E,KAAKoK,EAAEwsE,KAAK,GAAGlL,OAAO,GAC7Bj9D,EAAIzO,KAAKoK,EAAE6E,YAGf,IAFAR,EAAI,IAAI85D,EAAG,EAAI95D,EAAIA,GAAG2qE,MAAMp5E,MAEW,IAAhCA,KAAKyL,IAAIgD,EAAG2tE,GAAMjT,IAAIgT,IAC3B1tE,EAAEmrE,QAAQuC,GAOZ,IAJA,IAAI3yE,EAAIxJ,KAAKyL,IAAIgD,EAAGzD,GAChBC,EAAIjL,KAAKyL,IAAIlC,EAAGyB,EAAE2rE,KAAK,GAAGjL,OAAO,IACjC9+D,EAAI5M,KAAKyL,IAAIlC,EAAGyB,GAChBZ,EAAI4C,EACc,IAAfJ,EAAEu8D,IAAI+S,IAAY,CAEvB,IADA,IAAI/yD,EAAMvc,EACDrN,EAAI,EAAoB,IAAjB4pB,EAAIggD,IAAI+S,GAAY38E,IAClC4pB,EAAMA,EAAIixD,SAEZt4D,EAAOviB,EAAI6K,GACX,IAAIE,EAAItK,KAAKyL,IAAIjC,EAAG,IAAI++D,EAAG,GAAGoN,OAAOvrE,EAAI7K,EAAI,IAE7C0L,EAAIA,EAAEgvE,OAAO3vE,GACbd,EAAIc,EAAE8vE,SACNxtE,EAAIA,EAAEqtE,OAAOzwE,GACbY,EAAI7K,EAGN,OAAO0L,GAGTkuE,EAAIv5E,UAAU04E,KAAO,SAAe/uE,GAClC,IAAI8yE,EAAM9yE,EAAE2uE,OAAOl4E,KAAKoK,GACxB,OAAqB,IAAjBiyE,EAAI3T,UACN2T,EAAI3T,SAAW,EACR1oE,KAAKy7E,KAAKY,GAAK5B,UAEfz6E,KAAKy7E,KAAKY,IAIrBlD,EAAIv5E,UAAU6L,IAAM,SAAclC,EAAGka,GACnC,GAAIA,EAAIsnD,SAAU,OAAO,IAAIxC,EAAG,GAAG6Q,MAAMp5E,MACzC,GAAoB,IAAhByjB,EAAI40D,KAAK,GAAU,OAAO9uE,EAAEyZ,QAEhC,IACIs5D,EAAM,IAAIj6E,MAAM,IACpBi6E,EAAI,GAAK,IAAI/T,EAAG,GAAG6Q,MAAMp5E,MACzBs8E,EAAI,GAAK/yE,EACT,IAAK,IAAIhK,EAAI,EAAGA,EAAI+8E,EAAI78E,OAAQF,IAC9B+8E,EAAI/8E,GAAKS,KAAKkpE,IAAIoT,EAAI/8E,EAAI,GAAIgK,GAGhC,IAAI+X,EAAMg7D,EAAI,GACVz4E,EAAU,EACV04E,EAAa,EACb/3D,EAAQf,EAAIxU,YAAc,GAK9B,IAJc,IAAVuV,IACFA,EAAQ,IAGLjlB,EAAIkkB,EAAIhkB,OAAS,EAAGF,GAAK,EAAGA,IAAK,CAEpC,IADA,IAAIsqE,EAAOpmD,EAAIklD,MAAMppE,GACZkK,EAAI+a,EAAQ,EAAG/a,GAAK,EAAGA,IAAK,CACnC,IAAI+jE,EAAO3D,GAAQpgE,EAAK,EACpB6X,IAAQg7D,EAAI,KACdh7D,EAAMthB,KAAKw1E,IAAIl0D,IAGL,IAARksD,GAAyB,IAAZ3pE,GAKjBA,IAAY,EACZA,GAAW2pE,GA9BE,MA+Bb+O,GACwC,IAANh9E,GAAiB,IAANkK,KAE7C6X,EAAMthB,KAAKkpE,IAAI5nD,EAAKg7D,EAAIz4E,IACxB04E,EAAa,EACb14E,EAAU,IAXR04E,EAAa,EAajB/3D,EAAQ,GAGV,OAAOlD,GAGT63D,EAAIv5E,UAAU05E,UAAY,SAAoB71D,GAC5C,IAAIxY,EAAIwY,EAAI6zD,KAAKt3E,KAAKoK,GAEtB,OAAOa,IAAMwY,EAAMxY,EAAE+X,QAAU/X,GAGjCkuE,EAAIv5E,UAAU65E,YAAc,SAAsBh2D,GAChD,IAAInC,EAAMmC,EAAIT,QAEd,OADA1B,EAAIsnD,IAAM,KACHtnD,GAOTinD,EAAGiU,KAAO,SAAe/4D,GACvB,OAAO,IAAI+3D,EAAK/3D,IAmBlB5D,EAAS27D,EAAMrC,GAEfqC,EAAK57E,UAAU05E,UAAY,SAAoB71D,GAC7C,OAAOzjB,KAAKy7E,KAAKh4D,EAAI4yD,MAAMr2E,KAAKiyB,SAGlCupD,EAAK57E,UAAU65E,YAAc,SAAsBh2D,GACjD,IAAIxY,EAAIjL,KAAKy7E,KAAKh4D,EAAIylD,IAAIlpE,KAAK07E,OAE/B,OADAzwE,EAAE29D,IAAM,KACD39D,GAGTuwE,EAAK57E,UAAUgyE,KAAO,SAAeroE,EAAGe,GACtC,GAAIf,EAAEwhE,UAAYzgE,EAAEygE,SAGlB,OAFAxhE,EAAEo/D,MAAM,GAAK,EACbp/D,EAAE9J,OAAS,EACJ8J,EAGT,IAAIqD,EAAIrD,EAAEqoE,KAAKtnE,GACXd,EAAIoD,EAAE6pE,MAAMz2E,KAAKiyB,OAAOi3C,IAAIlpE,KAAK27E,MAAMnF,OAAOx2E,KAAKiyB,OAAOi3C,IAAIlpE,KAAKoK,GACnEuE,EAAI/B,EAAE+gE,KAAKnkE,GAAGkiE,OAAO1rE,KAAKiyB,OAC1B3Q,EAAM3S,EAQV,OANIA,EAAEw6D,IAAInpE,KAAKoK,IAAM,EACnBkX,EAAM3S,EAAEg/D,KAAK3tE,KAAKoK,GACTuE,EAAE0pE,KAAK,GAAK,IACrB/2D,EAAM3S,EAAE++D,KAAK1tE,KAAKoK,IAGbkX,EAAIi4D,UAAUv5E,OAGvBw7E,EAAK57E,UAAUspE,IAAM,SAAc3/D,EAAGe,GACpC,GAAIf,EAAEwhE,UAAYzgE,EAAEygE,SAAU,OAAO,IAAIxC,EAAG,GAAGgR,UAAUv5E,MAEzD,IAAI4M,EAAIrD,EAAE2/D,IAAI5+D,GACVd,EAAIoD,EAAE6pE,MAAMz2E,KAAKiyB,OAAOi3C,IAAIlpE,KAAK27E,MAAMnF,OAAOx2E,KAAKiyB,OAAOi3C,IAAIlpE,KAAKoK,GACnEuE,EAAI/B,EAAE+gE,KAAKnkE,GAAGkiE,OAAO1rE,KAAKiyB,OAC1B3Q,EAAM3S,EAOV,OANIA,EAAEw6D,IAAInpE,KAAKoK,IAAM,EACnBkX,EAAM3S,EAAEg/D,KAAK3tE,KAAKoK,GACTuE,EAAE0pE,KAAK,GAAK,IACrB/2D,EAAM3S,EAAE++D,KAAK1tE,KAAKoK,IAGbkX,EAAIi4D,UAAUv5E,OAGvBw7E,EAAK57E,UAAU04E,KAAO,SAAe/uE,GAGnC,OADUvJ,KAAKy7E,KAAKlyE,EAAE2uE,OAAOl4E,KAAKoK,GAAG8+D,IAAIlpE,KAAK03E,KACnC6B,UAAUv5E,OAx9GzB,YA09G4CA,6BC19G5CiH,EAAOC,QAAU,EAAjB,8BCAA,IAAIuZ,EAAS,gBACTonE,EAAa,EAAQ,OACrBC,EAAS,EAAQ,OACjBjoE,EAAW,EAAQ,OACnBsL,EAAO,EAAQ,OACf48D,EAAS,EAAQ,OAEjBC,EAAa,EAAQ,OAMzB,SAASC,EAAMC,GACbJ,EAAOK,SAASroF,KAAKE,MAErB,IAAIyV,EAAOuyE,EAAWE,GACtB,IAAKzyE,EAAM,MAAM,IAAI1R,MAAM,0BAE3B/D,KAAKooF,UAAY3yE,EAAKtE,KACtBnR,KAAKqoF,MAAQR,EAAWpyE,EAAKtE,MAC7BnR,KAAKsoF,KAAO7yE,EAAK6U,GACjBtqB,KAAKuoF,UAAY9yE,EAAK0V,KAwBxB,SAASq9D,EAAQN,GACfJ,EAAOK,SAASroF,KAAKE,MAErB,IAAIyV,EAAOuyE,EAAWE,GACtB,IAAKzyE,EAAM,MAAM,IAAI1R,MAAM,0BAE3B/D,KAAKqoF,MAAQR,EAAWpyE,EAAKtE,MAC7BnR,KAAKsoF,KAAO7yE,EAAK6U,GACjBtqB,KAAKuoF,UAAY9yE,EAAK0V,KAwBxB,SAASs9D,EAAYP,GACnB,OAAO,IAAID,EAAKC,GAGlB,SAASQ,EAAcR,GACrB,OAAO,IAAIM,EAAON,GA3EpB9oF,OAAO0B,KAAKknF,GAAYzhF,SAAQ,SAAU5G,GACxCqoF,EAAWroF,GAAK2qB,GAAK7J,EAAOtd,KAAK6kF,EAAWroF,GAAK2qB,GAAI,OACrD09D,EAAWroF,EAAI85C,eAAiBuuC,EAAWroF,MAc7CkgB,EAASooE,EAAMH,EAAOK,UAEtBF,EAAKroF,UAAU+oF,OAAS,SAAiBlzE,EAAM2W,EAAG9oB,GAChDtD,KAAKqoF,MAAMviF,OAAO2P,GAClBnS,KAGF2kF,EAAKroF,UAAUkG,OAAS,SAAiB2P,EAAM4K,GAI7C,MAHoB,kBAAT5K,IAAmBA,EAAOgL,EAAOtd,KAAKsS,EAAM4K,IAEvDrgB,KAAKqoF,MAAMviF,OAAO2P,GACXzV,MAGTioF,EAAKroF,UAAUurB,KAAO,SAAqBxrB,EAAK0gB,GAC9CrgB,KAAK8pB,MACL,IAAI3Y,EAAOnR,KAAKqoF,MAAMlyE,SAClByyE,EAAMz9D,EAAKha,EAAMxR,EAAKK,KAAKooF,UAAWpoF,KAAKuoF,UAAWvoF,KAAKsoF,MAE/D,OAAOjoE,EAAMuoE,EAAI7lF,SAASsd,GAAOuoE,GAanC/oE,EAAS2oE,EAAQV,EAAOK,UAExBK,EAAO5oF,UAAU+oF,OAAS,SAAiBlzE,EAAM2W,EAAG9oB,GAClDtD,KAAKqoF,MAAMviF,OAAO2P,GAClBnS,KAGFklF,EAAO5oF,UAAUkG,OAAS,SAAiB2P,EAAM4K,GAI/C,MAHoB,kBAAT5K,IAAmBA,EAAOgL,EAAOtd,KAAKsS,EAAM4K,IAEvDrgB,KAAKqoF,MAAMviF,OAAO2P,GACXzV,MAGTwoF,EAAO5oF,UAAUmoF,OAAS,SAAuBpoF,EAAKipF,EAAKvoE,GACtC,kBAARuoE,IAAkBA,EAAMnoE,EAAOtd,KAAKylF,EAAKvoE,IAEpDrgB,KAAK8pB,MACL,IAAI3Y,EAAOnR,KAAKqoF,MAAMlyE,SACtB,OAAO4xE,EAAOa,EAAKz3E,EAAMxR,EAAKK,KAAKuoF,UAAWvoF,KAAKsoF,OAWrDrhF,EAAOC,QAAU,CACf+gF,KAAMQ,EACND,OAAQE,EACRD,WAAYA,EACZC,aAAcA,0BCzFhB,IAAIjoE,EAAS,gBACTooE,EAAa,EAAQ,OACrBtC,EAAM,EAAQ,OACduC,EAAK,YACLvgB,EAAK,EAAQ,OACbwgB,EAAY,EAAQ,OACpBC,EAAS,EAAQ,MAyErB,SAASC,EAAQv6E,EAAG1D,EAAGmG,EAAM+3E,GAE3B,IADAx6E,EAAI+R,EAAOtd,KAAKuL,EAAEwc,YACZzrB,OAASuL,EAAElB,aAAc,CAC7B,IAAIsgE,EAAQ3pD,EAAOiB,MAAM1W,EAAElB,aAAe4E,EAAEjP,QAC5CiP,EAAI+R,EAAOpN,OAAO,CAAC+2D,EAAO17D,IAE5B,IAAIy6E,EAAOh4E,EAAK1R,OACZ2pF,EAkBN,SAAsBhqE,EAAMpU,GAE1BoU,GADAA,EAAOiqE,EAASjqE,EAAMpU,IACVkC,IAAIlC,GAChB,IAAIyW,EAAMhB,EAAOtd,KAAKic,EAAK8L,WAC3B,GAAIzJ,EAAIhiB,OAASuL,EAAElB,aAAc,CAC/B,IAAIsgE,EAAQ3pD,EAAOiB,MAAM1W,EAAElB,aAAe2X,EAAIhiB,QAC9CgiB,EAAMhB,EAAOpN,OAAO,CAAC+2D,EAAO3oD,IAE9B,OAAOA,EA1BK6nE,CAAYn4E,EAAMnG,GAC1BuD,EAAIkS,EAAOiB,MAAMynE,GACrB56E,EAAE4kB,KAAK,GACP,IAAIhpB,EAAIsW,EAAOiB,MAAMynE,GAKrB,OAJAh/E,EAAI0+E,EAAWK,EAAM/+E,GAAGrE,OAAOyI,GAAGzI,OAAO2a,EAAOtd,KAAK,CAAC,KAAK2C,OAAO4I,GAAG5I,OAAOsjF,GAAOjzE,SACnF5H,EAAIs6E,EAAWK,EAAM/+E,GAAGrE,OAAOyI,GAAG4H,SAG3B,CAAEhM,EAFTA,EAAI0+E,EAAWK,EAAM/+E,GAAGrE,OAAOyI,GAAGzI,OAAO2a,EAAOtd,KAAK,CAAC,KAAK2C,OAAO4I,GAAG5I,OAAOsjF,GAAOjzE,SAEpE5H,EADfA,EAAIs6E,EAAWK,EAAM/+E,GAAGrE,OAAOyI,GAAG4H,UAIpC,SAASkzE,EAAUE,EAAOv+E,GACxB,IAAIoU,EAAO,IAAImpD,EAAGghB,GACdt3D,GAASs3D,EAAM9pF,QAAU,GAAKuL,EAAEiE,YAEpC,OADIgjB,EAAQ,GAAG7S,EAAK+2D,MAAMlkD,GACnB7S,EAcT,SAASoqE,EAASx+E,EAAGy+E,EAAIP,GACvB,IAAIt8E,EACAzC,EAEJ,EAAG,CAGD,IAFAyC,EAAI6T,EAAOiB,MAAM,GAEC,EAAX9U,EAAEnN,OAAauL,EAAEiE,aACtBw6E,EAAGl7E,EAAIs6E,EAAWK,EAAMO,EAAGt/E,GAAGrE,OAAO2jF,EAAGl7E,GAAG4H,SAC3CvJ,EAAI6T,EAAOpN,OAAO,CAACzG,EAAG68E,EAAGl7E,IAG3BpE,EAAIk/E,EAASz8E,EAAG5B,GAChBy+E,EAAGt/E,EAAI0+E,EAAWK,EAAMO,EAAGt/E,GAAGrE,OAAO2jF,EAAGl7E,GAAGzI,OAAO2a,EAAOtd,KAAK,CAAC,KAAKgT,SACpEszE,EAAGl7E,EAAIs6E,EAAWK,EAAMO,EAAGt/E,GAAGrE,OAAO2jF,EAAGl7E,GAAG4H,gBACtB,IAAdhM,EAAEg/D,IAAIn+D,IAEf,OAAOb,EAGT,SAASu/E,EAAOtgF,EAAGe,EAAGe,EAAGF,GACvB,OAAO5B,EAAEgwE,MAAM7Q,EAAGiU,KAAKtxE,IAAIwvE,OAAOvwE,GAAGqvE,UAAUtsE,IAAIlC,GAGrD/D,EAAOC,QAnIP,SAAeiK,EAAMxR,EAAKgqF,EAAUC,EAAUl0E,GAC5C,IAAIywE,EAAO4C,EAAUppF,GACrB,GAAIwmF,EAAK0D,MAAO,CAEd,GAAiB,UAAbD,GAAqC,cAAbA,EAA0B,MAAM,IAAI7lF,MAAM,0BACtE,OAmBJ,SAAiBoN,EAAMg1E,GACrB,IAAI2D,EAAUd,EAAO7C,EAAK0D,MAAMrvE,KAAK,MACrC,IAAKsvE,EAAS,MAAM,IAAI/lF,MAAM,iBAAmBoiF,EAAK0D,MAAMrvE,KAAK,MAEjE,IAEIiH,EAFQ,IAAIqnE,EAAGgB,GACHC,eAAe5D,EAAK6D,YACtB7+D,KAAKha,GAEnB,OAAOsP,EAAOtd,KAAKse,EAAIwoE,SA3BdC,CAAO/4E,EAAMg1E,GACf,GAAkB,QAAdA,EAAK3hF,KAAgB,CAC9B,GAAiB,QAAbolF,EAAoB,MAAM,IAAI7lF,MAAM,0BACxC,OA2BJ,SAAkBoN,EAAMg1E,EAAM+C,GAC5B,IAKI/+E,EALAuE,EAAIy3E,EAAK54D,OAAO48D,SAChBj/E,EAAIi7E,EAAK54D,OAAOriB,EAChBF,EAAIm7E,EAAK54D,OAAOviB,EAChB5B,EAAI+8E,EAAK54D,OAAOnkB,EAChB6B,EAAI,IAAIs9D,EAAG,GAEX3yD,EAAIyzE,EAASl4E,EAAMnG,GAAGkC,IAAIlC,GAC1BgC,GAAI,EACJy8E,EAAKR,EAAOv6E,EAAG1D,EAAGmG,EAAM+3E,GAC5B,MAAa,IAANl8E,GAEL/B,EAAIy+E,EAAMtgF,EADVe,EAAIq/E,EAAQx+E,EAAGy+E,EAAIP,GACHh+E,EAAGF,GAED,KADlBgC,EAAI7C,EAAEmuE,KAAKttE,GAAG4mE,KAAKh8D,EAAEigC,IAAInnC,EAAEw6D,IAAIj+D,KAAKiC,IAAIlC,IAClCqtE,KAAK,KACTrrE,GAAI,EACJ/B,EAAI,IAAIs9D,EAAG,IAGf,OAGF,SAAgBt9D,EAAG+B,GACjB/B,EAAIA,EAAEigB,UACNle,EAAIA,EAAEke,UAGK,IAAPjgB,EAAE,KAAWA,EAAI,CAAC,GAAGoI,OAAOpI,IACrB,IAAP+B,EAAE,KAAWA,EAAI,CAAC,GAAGqG,OAAOrG,IAEhC,IACIsU,EAAM,CAAC,GADCrW,EAAExL,OAASuN,EAAEvN,OAAS,EACV,EAAMwL,EAAExL,QAEhC,OADA6hB,EAAMA,EAAIjO,OAAOpI,EAAG,CAAC,EAAM+B,EAAEvN,QAASuN,GAC/ByT,EAAOtd,KAAKme,GAdZ2oE,CAAMh/E,EAAG+B,GA9CPo9E,CAAQj5E,EAAMg1E,EAAMwD,GAE3B,GAAiB,QAAbC,GAAmC,cAAbA,EAA0B,MAAM,IAAI7lF,MAAM,0BAEtEoN,EAAOsP,EAAOpN,OAAO,CAACqC,EAAKvE,IAG3B,IAFA,IAAIhP,EAAMgkF,EAAKC,QAAQt8E,aACnBu6E,EAAM,CAAC,EAAG,GACPlzE,EAAK1R,OAAS4kF,EAAI5kF,OAAS,EAAI0C,GAAKkiF,EAAIvxE,KAAK,KACpDuxE,EAAIvxE,KAAK,GAET,IADA,IAAIvT,GAAK,IACAA,EAAI4R,EAAK1R,QAAQ4kF,EAAIvxE,KAAK3B,EAAK5R,IAGxC,OADUgnF,EAAIlC,EAAK8B,IAgHrBl/E,EAAOC,QAAQ+hF,OAASA,EACxBhiF,EAAOC,QAAQsiF,QAAUA,yBC7IzB,IAAI/oE,EAAS,gBACT8nD,EAAK,EAAQ,OACbugB,EAAK,YACLC,EAAY,EAAQ,OACpBC,EAAS,EAAQ,MAyErB,SAASqB,EAAY//E,EAAGU,GACtB,GAAIV,EAAE+tE,KAAK,IAAM,EAAG,MAAM,IAAIt0E,MAAM,eACpC,GAAIuG,EAAE6+D,IAAIn+D,IAAMA,EAAG,MAAM,IAAIjH,MAAM,eAGrCkD,EAAOC,QA5EP,SAAiB0hF,EAAKz3E,EAAMxR,EAAKiqF,EAAUl0E,GACzC,IAAI40E,EAAMvB,EAAUppF,GACpB,GAAiB,OAAb2qF,EAAI9lF,KAAe,CAErB,GAAiB,UAAbolF,GAAqC,cAAbA,EAA0B,MAAM,IAAI7lF,MAAM,yBACtE,OAmCJ,SAAmB6kF,EAAKz3E,EAAMm5E,GAC5B,IAAIR,EAAUd,EAAOsB,EAAI70E,KAAKyyE,UAAU2B,MAAMrvE,KAAK,MACnD,IAAKsvE,EAAS,MAAM,IAAI/lF,MAAM,iBAAmBumF,EAAI70E,KAAKyyE,UAAU2B,MAAMrvE,KAAK,MAE/E,IAAIqvE,EAAQ,IAAIf,EAAGgB,GACfS,EAASD,EAAI70E,KAAK+0E,kBAAkB/0E,KAExC,OAAOo0E,EAAM9B,OAAO52E,EAAMy3E,EAAK2B,GA1CtBE,CAAS7B,EAAKz3E,EAAMm5E,GACtB,GAAiB,QAAbA,EAAI9lF,KAAgB,CAC7B,GAAiB,QAAbolF,EAAoB,MAAM,IAAI7lF,MAAM,yBACxC,OA0CJ,SAAoB6kF,EAAKz3E,EAAMm5E,GAC7B,IAAIp/E,EAAIo/E,EAAI70E,KAAKvK,EACbF,EAAIs/E,EAAI70E,KAAKzK,EACb5B,EAAIkhF,EAAI70E,KAAKrM,EACb0I,EAAIw4E,EAAI70E,KAAKi1E,QACbC,EAAW5B,EAAU6B,UAAUrxE,OAAOqvE,EAAK,OAC3C57E,EAAI29E,EAAS39E,EACb/B,EAAI0/E,EAAS1/E,EACjBo/E,EAAWr9E,EAAGhC,GACdq/E,EAAWp/E,EAAGD,GACd,IAAI6/E,EAAQtiB,EAAGiU,KAAKtxE,GAChBoD,EAAItB,EAAEsrE,KAAKttE,GAOf,OAAoB,IANZ5B,EAAEgwE,MAAMyR,GACbnQ,OAAO,IAAInS,EAAGp3D,GAAM+3D,IAAI56D,GAAGpB,IAAIlC,IAC/BwuE,UACAtQ,IAAIp3D,EAAEsnE,MAAMyR,GAAOnQ,OAAOzvE,EAAEi+D,IAAI56D,GAAGpB,IAAIlC,IAAIwuE,WAC3CtsE,IAAIhC,GACJgC,IAAIlC,GACEm+D,IAAIl+D,GA5DJ6/E,CAAUlC,EAAKz3E,EAAMm5E,GAE5B,GAAiB,QAAbV,GAAmC,cAAbA,EAA0B,MAAM,IAAI7lF,MAAM,yBAEtEoN,EAAOsP,EAAOpN,OAAO,CAACqC,EAAKvE,IAI3B,IAHA,IAAIhP,EAAMmoF,EAAIlE,QAAQt8E,aAClBu6E,EAAM,CAAC,GACP0G,EAAS,EACN55E,EAAK1R,OAAS4kF,EAAI5kF,OAAS,EAAI0C,GACpCkiF,EAAIvxE,KAAK,KACTi4E,IAEF1G,EAAIvxE,KAAK,GAET,IADA,IAAIvT,GAAK,IACAA,EAAI4R,EAAK1R,QAChB4kF,EAAIvxE,KAAK3B,EAAK5R,IAEhB8kF,EAAM5jE,EAAOtd,KAAKkhF,GAClB,IAAIzb,EAAML,EAAGiU,KAAK8N,EAAIlE,SAGtBwC,GAFAA,EAAM,IAAIrgB,EAAGqgB,GAAKxP,MAAMxQ,IAEd8R,OAAO,IAAInS,EAAG+hB,EAAI5D,iBAC5BkC,EAAMnoE,EAAOtd,KAAKylF,EAAIpP,UAAUtuD,WAChC,IAAIzJ,EAAMspE,EAAS,EAAI,EAAI,EAK3B,IAJA5oF,EAAMgJ,KAAKkD,IAAIu6E,EAAInpF,OAAQ4kF,EAAI5kF,QAC3BmpF,EAAInpF,SAAW4kF,EAAI5kF,SAAQgiB,EAAM,GAErCliB,GAAK,IACIA,EAAI4C,GAAKsf,GAAOmnE,EAAIrpF,GAAK8kF,EAAI9kF,GACtC,OAAe,IAARkiB,2BC5CT,SAAWxa,EAAQC,GACjB,aAGA,SAAS4a,EAAQ/F,EAAK8K,GACpB,IAAK9K,EAAK,MAAM,IAAIhY,MAAM8iB,GAAO,oBAKnC,SAAShH,EAAUsoD,EAAMC,GACvBD,EAAKE,OAASD,EACd,IAAIE,EAAW,aACfA,EAAS1oE,UAAYwoE,EAAUxoE,UAC/BuoE,EAAKvoE,UAAY,IAAI0oE,EACrBH,EAAKvoE,UAAUqD,YAAcklE,EAK/B,SAASI,EAAItgE,EAAQwX,EAAM+oD,GACzB,GAAID,EAAGE,KAAKxgE,GACV,OAAOA,EAGTjI,KAAK0oE,SAAW,EAChB1oE,KAAK2oE,MAAQ,KACb3oE,KAAKP,OAAS,EAGdO,KAAK4oE,IAAM,KAEI,OAAX3gE,IACW,OAATwX,GAA0B,OAATA,IACnB+oD,EAAS/oD,EACTA,EAAO,IAGTzf,KAAKojB,MAAMnb,GAAU,EAAGwX,GAAQ,GAAI+oD,GAAU,OAYlD,IAAI/nD,EATkB,kBAAXxZ,EACTA,EAAOC,QAAUqhE,EAEjBrhE,EAAQqhE,GAAKA,EAGfA,EAAGA,GAAKA,EACRA,EAAGM,SAAW,GAGd,IAEIpoD,EADoB,qBAAX3e,QAAmD,qBAAlBA,OAAO2e,OACxC3e,OAAO2e,OAEP,eAEX,MAAOnX,IAgIT,SAASw/D,EAAe3gE,EAAQ6e,GAC9B,IAAIxd,EAAIrB,EAAO+B,WAAW8c,GAE1B,OAAIxd,GAAK,IAAMA,GAAK,GACXA,EAAI,GAEFA,GAAK,IAAMA,GAAK,GAClBA,EAAI,GAEFA,GAAK,IAAMA,GAAK,IAClBA,EAAI,QAEXsY,GAAO,EAAO,wBAA0B3Z,GAI5C,SAAS4gE,EAAc5gE,EAAQ6gE,EAAYhiD,GACzC,IAAI/b,EAAI69D,EAAc3gE,EAAQ6e,GAI9B,OAHIA,EAAQ,GAAKgiD,IACf/9D,GAAK69D,EAAc3gE,EAAQ6e,EAAQ,IAAM,GAEpC/b,EA8CT,SAASg+D,EAAWviD,EAAKlC,EAAOsF,EAAKo/C,GAInC,IAHA,IAAIj+D,EAAI,EACJX,EAAI,EACJnI,EAAMgJ,KAAKkD,IAAIqY,EAAIjnB,OAAQqqB,GACtBvqB,EAAIilB,EAAOjlB,EAAI4C,EAAK5C,IAAK,CAChC,IAAIiK,EAAIkd,EAAIxc,WAAW3K,GAAK,GAE5B0L,GAAKi+D,EAIH5+D,EADEd,GAAK,GACHA,EAAI,GAAK,GAGJA,GAAK,GACVA,EAAI,GAAK,GAITA,EAENsY,EAAOtY,GAAK,GAAKc,EAAI4+D,EAAK,qBAC1Bj+D,GAAKX,EAEP,OAAOW,EA4DT,SAASo8E,EAAMrd,EAAMlpC,GACnBkpC,EAAKrB,MAAQ7nC,EAAI6nC,MACjBqB,EAAKvqE,OAASqhC,EAAIrhC,OAClBuqE,EAAKtB,SAAW5nC,EAAI4nC,SACpBsB,EAAKpB,IAAM9nC,EAAI8nC,IAsCjB,GA9TAL,EAAGE,KAAO,SAAehlD,GACvB,OAAIA,aAAe8kD,GAIJ,OAAR9kD,GAA+B,kBAARA,GAC5BA,EAAIxgB,YAAY4lE,WAAaN,EAAGM,UAAYxmE,MAAMO,QAAQ6gB,EAAIklD,QAGlEJ,EAAGr6D,IAAM,SAAck0B,EAAMF,GAC3B,OAAIE,EAAK+mC,IAAIjnC,GAAS,EAAUE,EACzBF,GAGTqmC,EAAGl6D,IAAM,SAAc+zB,EAAMF,GAC3B,OAAIE,EAAK+mC,IAAIjnC,GAAS,EAAUE,EACzBF,GAGTqmC,EAAG3oE,UAAUwjB,MAAQ,SAAenb,EAAQwX,EAAM+oD,GAChD,GAAsB,kBAAXvgE,EACT,OAAOjI,KAAKopE,YAAYnhE,EAAQwX,EAAM+oD,GAGxC,GAAsB,kBAAXvgE,EACT,OAAOjI,KAAKqpE,WAAWphE,EAAQwX,EAAM+oD,GAG1B,QAAT/oD,IACFA,EAAO,IAETqC,EAAOrC,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,IAGnD,IAAI+E,EAAQ,EACM,OAFlBvc,EAASA,EAAOlF,WAAW+R,QAAQ,OAAQ,KAEhC,KACT0P,IACAxkB,KAAK0oE,SAAW,GAGdlkD,EAAQvc,EAAOxI,SACJ,KAATggB,EACFzf,KAAKspE,UAAUrhE,EAAQuc,EAAOgkD,IAE9BxoE,KAAKupE,WAAWthE,EAAQwX,EAAM+E,GACf,OAAXgkD,GACFxoE,KAAKqpE,WAAWrpE,KAAKkrB,UAAWzL,EAAM+oD,MAM9CD,EAAG3oE,UAAUwpE,YAAc,SAAsBnhE,EAAQwX,EAAM+oD,GACzDvgE,EAAS,IACXjI,KAAK0oE,SAAW,EAChBzgE,GAAUA,GAERA,EAAS,UACXjI,KAAK2oE,MAAQ,CAAU,SAAT1gE,GACdjI,KAAKP,OAAS,GACLwI,EAAS,kBAClBjI,KAAK2oE,MAAQ,CACF,SAAT1gE,EACCA,EAAS,SAAa,UAEzBjI,KAAKP,OAAS,IAEdqiB,EAAO7Z,EAAS,kBAChBjI,KAAK2oE,MAAQ,CACF,SAAT1gE,EACCA,EAAS,SAAa,SACvB,GAEFjI,KAAKP,OAAS,GAGD,OAAX+oE,GAGJxoE,KAAKqpE,WAAWrpE,KAAKkrB,UAAWzL,EAAM+oD,IAGxCD,EAAG3oE,UAAUypE,WAAa,SAAqBphE,EAAQwX,EAAM+oD,GAG3D,GADA1mD,EAAgC,kBAAlB7Z,EAAOxI,QACjBwI,EAAOxI,QAAU,EAGnB,OAFAO,KAAK2oE,MAAQ,CAAC,GACd3oE,KAAKP,OAAS,EACPO,KAGTA,KAAKP,OAAS0L,KAAK0I,KAAK5L,EAAOxI,OAAS,GACxCO,KAAK2oE,MAAQ,IAAItmE,MAAMrC,KAAKP,QAC5B,IAAK,IAAIF,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAC/BS,KAAK2oE,MAAMppE,GAAK,EAGlB,IAAIkK,EAAG6E,EACHk7D,EAAM,EACV,GAAe,OAAXhB,EACF,IAAKjpE,EAAI0I,EAAOxI,OAAS,EAAGgK,EAAI,EAAGlK,GAAK,EAAGA,GAAK,EAC9C+O,EAAIrG,EAAO1I,GAAM0I,EAAO1I,EAAI,IAAM,EAAM0I,EAAO1I,EAAI,IAAM,GACzDS,KAAK2oE,MAAMl/D,IAAO6E,GAAKk7D,EAAO,SAC9BxpE,KAAK2oE,MAAMl/D,EAAI,GAAM6E,IAAO,GAAKk7D,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACP//D,UAGC,GAAe,OAAX++D,EACT,IAAKjpE,EAAI,EAAGkK,EAAI,EAAGlK,EAAI0I,EAAOxI,OAAQF,GAAK,EACzC+O,EAAIrG,EAAO1I,GAAM0I,EAAO1I,EAAI,IAAM,EAAM0I,EAAO1I,EAAI,IAAM,GACzDS,KAAK2oE,MAAMl/D,IAAO6E,GAAKk7D,EAAO,SAC9BxpE,KAAK2oE,MAAMl/D,EAAI,GAAM6E,IAAO,GAAKk7D,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACP//D,KAIN,OAAOzJ,KAAK+7E,UA2BdxT,EAAG3oE,UAAU0pE,UAAY,SAAoBrhE,EAAQuc,EAAOgkD,GAE1DxoE,KAAKP,OAAS0L,KAAK0I,MAAM5L,EAAOxI,OAAS+kB,GAAS,GAClDxkB,KAAK2oE,MAAQ,IAAItmE,MAAMrC,KAAKP,QAC5B,IAAK,IAAIF,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAC/BS,KAAK2oE,MAAMppE,GAAK,EAIlB,IAGI+O,EAHAk7D,EAAM,EACN//D,EAAI,EAGR,GAAe,OAAX++D,EACF,IAAKjpE,EAAI0I,EAAOxI,OAAS,EAAGF,GAAKilB,EAAOjlB,GAAK,EAC3C+O,EAAIy6D,EAAa9gE,EAAQuc,EAAOjlB,IAAMiqE,EACtCxpE,KAAK2oE,MAAMl/D,IAAU,SAAJ6E,EACbk7D,GAAO,IACTA,GAAO,GACP//D,GAAK,EACLzJ,KAAK2oE,MAAMl/D,IAAM6E,IAAM,IAEvBk7D,GAAO,OAKX,IAAKjqE,GADa0I,EAAOxI,OAAS+kB,GACX,IAAM,EAAIA,EAAQ,EAAIA,EAAOjlB,EAAI0I,EAAOxI,OAAQF,GAAK,EAC1E+O,EAAIy6D,EAAa9gE,EAAQuc,EAAOjlB,IAAMiqE,EACtCxpE,KAAK2oE,MAAMl/D,IAAU,SAAJ6E,EACbk7D,GAAO,IACTA,GAAO,GACP//D,GAAK,EACLzJ,KAAK2oE,MAAMl/D,IAAM6E,IAAM,IAEvBk7D,GAAO,EAKbxpE,KAAK+7E,UA8BPxT,EAAG3oE,UAAU2pE,WAAa,SAAqBthE,EAAQwX,EAAM+E,GAE3DxkB,KAAK2oE,MAAQ,CAAC,GACd3oE,KAAKP,OAAS,EAGd,IAAK,IAAIiqE,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAWlqD,EAClEiqD,IAEFA,IACAC,EAAWA,EAAUlqD,EAAQ,EAO7B,IALA,IAAImqD,EAAQ3hE,EAAOxI,OAAS+kB,EACxBtX,EAAM08D,EAAQF,EACd5/C,EAAM3e,KAAKkD,IAAIu7D,EAAOA,EAAQ18D,GAAOsX,EAErCqlD,EAAO,EACFtqE,EAAIilB,EAAOjlB,EAAIuqB,EAAKvqB,GAAKmqE,EAChCG,EAAOZ,EAAUhhE,EAAQ1I,EAAGA,EAAImqE,EAASjqD,GAEzCzf,KAAK8pE,MAAMH,GACP3pE,KAAK2oE,MAAM,GAAKkB,EAAO,SACzB7pE,KAAK2oE,MAAM,IAAMkB,EAEjB7pE,KAAK+pE,OAAOF,GAIhB,GAAY,IAAR38D,EAAW,CACb,IAAIzB,EAAM,EAGV,IAFAo+D,EAAOZ,EAAUhhE,EAAQ1I,EAAG0I,EAAOxI,OAAQggB,GAEtClgB,EAAI,EAAGA,EAAI2N,EAAK3N,IACnBkM,GAAOgU,EAGTzf,KAAK8pE,MAAMr+D,GACPzL,KAAK2oE,MAAM,GAAKkB,EAAO,SACzB7pE,KAAK2oE,MAAM,IAAMkB,EAEjB7pE,KAAK+pE,OAAOF,GAIhB7pE,KAAK+7E,UAGPxT,EAAG3oE,UAAUgiB,KAAO,SAAeooD,GACjCA,EAAKrB,MAAQ,IAAItmE,MAAMrC,KAAKP,QAC5B,IAAK,IAAIF,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAC/ByqE,EAAKrB,MAAMppE,GAAKS,KAAK2oE,MAAMppE,GAE7ByqE,EAAKvqE,OAASO,KAAKP,OACnBuqE,EAAKtB,SAAW1oE,KAAK0oE,SACrBsB,EAAKpB,IAAM5oE,KAAK4oE,KAUlBL,EAAG3oE,UAAU0nF,MAAQ,SAAgBtd,GACnCqd,EAAKrd,EAAMhqE,OAGbuoE,EAAG3oE,UAAUojB,MAAQ,WACnB,IAAI/X,EAAI,IAAIs9D,EAAG,MAEf,OADAvoE,KAAK4hB,KAAK3W,GACHA,GAGTs9D,EAAG3oE,UAAUqqE,QAAU,SAAkB1/C,GACvC,KAAOvqB,KAAKP,OAAS8qB,GACnBvqB,KAAK2oE,MAAM3oE,KAAKP,UAAY,EAE9B,OAAOO,MAITuoE,EAAG3oE,UAAUm8E,OAAS,WACpB,KAAO/7E,KAAKP,OAAS,GAAqC,IAAhCO,KAAK2oE,MAAM3oE,KAAKP,OAAS,IACjDO,KAAKP,SAEP,OAAOO,KAAKkqE,aAGd3B,EAAG3oE,UAAUsqE,UAAY,WAKvB,OAHoB,IAAhBlqE,KAAKP,QAAkC,IAAlBO,KAAK2oE,MAAM,KAClC3oE,KAAK0oE,SAAW,GAEX1oE,MAKa,qBAAX0C,QAAgD,oBAAfA,OAAO6kF,IACjD,IACEhf,EAAG3oE,UAAU8C,OAAO6kF,IAAI,+BAAiCpd,EACzD,MAAO7gE,GACPi/D,EAAG3oE,UAAUuqE,QAAUA,OAGzB5B,EAAG3oE,UAAUuqE,QAAUA,EAGzB,SAASA,IACP,OAAQnqE,KAAK4oE,IAAM,UAAY,SAAW5oE,KAAK+C,SAAS,IAAM,IAiChE,IAAIqnE,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,6BAGEC,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGhBC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UAG9D/B,EAAG3oE,UAAUmD,SAAW,SAAmB0c,EAAMle,GAI/C,IAAIkgB,EACJ,GAHAlgB,EAAoB,EAAVA,GAAe,EAGZ,MAJbke,EAAOA,GAAQ,KAIa,QAATA,EAAgB,CACjCgC,EAAM,GAGN,IAFA,IAAI+nD,EAAM,EACNiB,EAAQ,EACHlrE,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAAK,CACpC,IAAI+O,EAAItO,KAAK2oE,MAAMppE,GACfsqE,GAA+B,UAArBv7D,GAAKk7D,EAAOiB,IAAmB1nE,SAAS,IAGpD0e,EADY,KADdgpD,EAASn8D,IAAO,GAAKk7D,EAAQ,WACVjqE,IAAMS,KAAKP,OAAS,EAC/B2qE,EAAM,EAAIP,EAAKpqE,QAAUoqE,EAAOpoD,EAEhCooD,EAAOpoD,GAEf+nD,GAAO,IACI,KACTA,GAAO,GACPjqE,KAMJ,IAHc,IAAVkrE,IACFhpD,EAAMgpD,EAAM1nE,SAAS,IAAM0e,GAEtBA,EAAIhiB,OAAS8B,IAAY,GAC9BkgB,EAAM,IAAMA,EAKd,OAHsB,IAAlBzhB,KAAK0oE,WACPjnD,EAAM,IAAMA,GAEPA,EAGT,GAAIhC,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAIorD,EAAYR,EAAW5qD,GAEvBqrD,EAAYR,EAAW7qD,GAC3BgC,EAAM,GACN,IAAIjY,EAAIxJ,KAAKgjB,QAEb,IADAxZ,EAAEk/D,SAAW,GACLl/D,EAAEuhE,UAAU,CAClB,IAAI9/D,EAAIzB,EAAEg+E,MAAM1c,GAAW/nE,SAAS0c,GAMlCgC,GALFjY,EAAIA,EAAEyhE,MAAMH,IAELC,SAGC9/D,EAAIwW,EAFJ2oD,EAAMS,EAAY5/D,EAAExL,QAAUwL,EAAIwW,EAQ5C,IAHIzhB,KAAK+qE,WACPtpD,EAAM,IAAMA,GAEPA,EAAIhiB,OAAS8B,IAAY,GAC9BkgB,EAAM,IAAMA,EAKd,OAHsB,IAAlBzhB,KAAK0oE,WACPjnD,EAAM,IAAMA,GAEPA,EAGTK,GAAO,EAAO,oCAGhBymD,EAAG3oE,UAAUsrE,SAAW,WACtB,IAAIx4C,EAAM1yB,KAAK2oE,MAAM,GASrB,OARoB,IAAhB3oE,KAAKP,OACPizB,GAAuB,SAAhB1yB,KAAK2oE,MAAM,GACO,IAAhB3oE,KAAKP,QAAkC,IAAlBO,KAAK2oE,MAAM,GAEzCj2C,GAAO,iBAAoC,SAAhB1yB,KAAK2oE,MAAM,GAC7B3oE,KAAKP,OAAS,GACvBqiB,GAAO,EAAO,8CAEU,IAAlB9hB,KAAK0oE,UAAmBh2C,EAAMA,GAGxC61C,EAAG3oE,UAAUurE,OAAS,WACpB,OAAOnrE,KAAK+C,SAAS,GAAI,IAGvB0d,IACF8nD,EAAG3oE,UAAUwrE,SAAW,SAAmB5C,EAAQ/oE,GACjD,OAAOO,KAAKqrE,YAAY5qD,EAAQ+nD,EAAQ/oE,KAI5C8oE,EAAG3oE,UAAUsrB,QAAU,SAAkBs9C,EAAQ/oE,GAC/C,OAAOO,KAAKqrE,YAAYhpE,MAAOmmE,EAAQ/oE,IA4gBzC,SAAS8qE,EAAYh7C,EAAM9L,EAAKhC,GAC9BA,EAAIinD,SAAWjlD,EAAIilD,SAAWn5C,EAAKm5C,SACnC,IAAIvmE,EAAOotB,EAAK9vB,OAASgkB,EAAIhkB,OAAU,EACvCgiB,EAAIhiB,OAAS0C,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAIoH,EAAoB,EAAhBgmB,EAAKo5C,MAAM,GACfr+D,EAAmB,EAAfmZ,EAAIklD,MAAM,GACd19D,EAAI1B,EAAIe,EAERkgE,EAAS,SAAJv/D,EACLw/D,EAASx/D,EAAI,SAAa,EAC9BwW,EAAIknD,MAAM,GAAK6B,EAEf,IAAK,IAAIrgE,EAAI,EAAGA,EAAIhI,EAAKgI,IAAK,CAM5B,IAHA,IAAIugE,EAASD,IAAU,GACnBE,EAAgB,SAARF,EACRG,EAAOz/D,KAAKkD,IAAIlE,EAAGsZ,EAAIhkB,OAAS,GAC3BgK,EAAI0B,KAAK+C,IAAI,EAAG/D,EAAIolB,EAAK9vB,OAAS,GAAIgK,GAAKmhE,EAAMnhE,IAAK,CAC7D,IAAIlK,EAAK4K,EAAIV,EAAK,EAIlBihE,IADAz/D,GAFA1B,EAAoB,EAAhBgmB,EAAKo5C,MAAMppE,KACf+K,EAAmB,EAAfmZ,EAAIklD,MAAMl/D,IACFkhE,GACG,SAAa,EAC5BA,EAAY,SAAJ1/D,EAEVwW,EAAIknD,MAAMx+D,GAAa,EAARwgE,EACfF,EAAiB,EAATC,EAQV,OANc,IAAVD,EACFhpD,EAAIknD,MAAMx+D,GAAa,EAARsgE,EAEfhpD,EAAIhiB,SAGCgiB,EAAIs6D,SAxiBbxT,EAAG3oE,UAAUyrE,YAAc,SAAsBC,EAAW9C,EAAQ/oE,GAClEO,KAAK+7E,SAEL,IAAIjyE,EAAa9J,KAAK8J,aAClByhE,EAAY9rE,GAAU0L,KAAK+C,IAAI,EAAGpE,GACtCgY,EAAOhY,GAAcyhE,EAAW,yCAChCzpD,EAAOypD,EAAY,EAAG,+BAEtB,IAAIjqD,EAfS,SAAmBgqD,EAAW/gD,GAC3C,OAAI+gD,EAAUmU,YACLnU,EAAUmU,YAAYl1D,GAExB,IAAI+gD,EAAU/gD,GAWXk9D,CAASnc,EAAWC,GAG9B,OADAvrE,KAAK,gBADoB,OAAXwoE,EAAkB,KAAO,OACRlnD,EAAKxX,GAC7BwX,GAGTinD,EAAG3oE,UAAU8nF,eAAiB,SAAyBpmE,EAAKxX,GAI1D,IAHA,IAAItI,EAAW,EACXipE,EAAQ,EAEHlrE,EAAI,EAAG0yB,EAAQ,EAAG1yB,EAAIS,KAAKP,OAAQF,IAAK,CAC/C,IAAIsqE,EAAQ7pE,KAAK2oE,MAAMppE,IAAM0yB,EAASw4C,EAEtCnpD,EAAI9f,KAAqB,IAAPqoE,EACdroE,EAAW8f,EAAI7hB,SACjB6hB,EAAI9f,KAAeqoE,GAAQ,EAAK,KAE9BroE,EAAW8f,EAAI7hB,SACjB6hB,EAAI9f,KAAeqoE,GAAQ,GAAM,KAGrB,IAAV53C,GACEzwB,EAAW8f,EAAI7hB,SACjB6hB,EAAI9f,KAAeqoE,GAAQ,GAAM,KAEnCY,EAAQ,EACRx4C,EAAQ,IAERw4C,EAAQZ,IAAS,GACjB53C,GAAS,GAIb,GAAIzwB,EAAW8f,EAAI7hB,OAGjB,IAFA6hB,EAAI9f,KAAcipE,EAEXjpE,EAAW8f,EAAI7hB,QACpB6hB,EAAI9f,KAAc,GAKxB+mE,EAAG3oE,UAAU+nF,eAAiB,SAAyBrmE,EAAKxX,GAI1D,IAHA,IAAItI,EAAW8f,EAAI7hB,OAAS,EACxBgrE,EAAQ,EAEHlrE,EAAI,EAAG0yB,EAAQ,EAAG1yB,EAAIS,KAAKP,OAAQF,IAAK,CAC/C,IAAIsqE,EAAQ7pE,KAAK2oE,MAAMppE,IAAM0yB,EAASw4C,EAEtCnpD,EAAI9f,KAAqB,IAAPqoE,EACdroE,GAAY,IACd8f,EAAI9f,KAAeqoE,GAAQ,EAAK,KAE9BroE,GAAY,IACd8f,EAAI9f,KAAeqoE,GAAQ,GAAM,KAGrB,IAAV53C,GACEzwB,GAAY,IACd8f,EAAI9f,KAAeqoE,GAAQ,GAAM,KAEnCY,EAAQ,EACRx4C,EAAQ,IAERw4C,EAAQZ,IAAS,GACjB53C,GAAS,GAIb,GAAIzwB,GAAY,EAGd,IAFA8f,EAAI9f,KAAcipE,EAEXjpE,GAAY,GACjB8f,EAAI9f,KAAc,GAKpB2J,KAAKwgE,MACPpD,EAAG3oE,UAAUgsE,WAAa,SAAqBt9D,GAC7C,OAAO,GAAKnD,KAAKwgE,MAAMr9D,IAGzBi6D,EAAG3oE,UAAUgsE,WAAa,SAAqBt9D,GAC7C,IAAI1B,EAAI0B,EACJrD,EAAI,EAiBR,OAhBI2B,GAAK,OACP3B,GAAK,GACL2B,KAAO,IAELA,GAAK,KACP3B,GAAK,EACL2B,KAAO,GAELA,GAAK,IACP3B,GAAK,EACL2B,KAAO,GAELA,GAAK,IACP3B,GAAK,EACL2B,KAAO,GAEF3B,EAAI2B,GAIf27D,EAAG3oE,UAAUisE,UAAY,SAAoBv9D,GAE3C,GAAU,IAANA,EAAS,OAAO,GAEpB,IAAI1B,EAAI0B,EACJrD,EAAI,EAoBR,OAnBqB,KAAZ,KAAJ2B,KACH3B,GAAK,GACL2B,KAAO,IAEU,KAAV,IAAJA,KACH3B,GAAK,EACL2B,KAAO,GAES,KAAT,GAAJA,KACH3B,GAAK,EACL2B,KAAO,GAES,KAAT,EAAJA,KACH3B,GAAK,EACL2B,KAAO,GAES,KAAT,EAAJA,IACH3B,IAEKA,GAITs9D,EAAG3oE,UAAUqP,UAAY,WACvB,IAAIX,EAAItO,KAAK2oE,MAAM3oE,KAAKP,OAAS,GAC7BqsE,EAAK9rE,KAAK4rE,WAAWt9D,GACzB,OAA2B,IAAnBtO,KAAKP,OAAS,GAAUqsE,GAiBlCvD,EAAG3oE,UAAUmsE,SAAW,WACtB,GAAI/rE,KAAK+qE,SAAU,OAAO,EAG1B,IADA,IAAI9/D,EAAI,EACC1L,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAAK,CACpC,IAAI+K,EAAItK,KAAK6rE,UAAU7rE,KAAK2oE,MAAMppE,IAElC,GADA0L,GAAKX,EACK,KAANA,EAAU,MAEhB,OAAOW,GAGTs9D,EAAG3oE,UAAUkK,WAAa,WACxB,OAAOqB,KAAK0I,KAAK7T,KAAKiP,YAAc,IAGtCs5D,EAAG3oE,UAAUosE,OAAS,SAAiBvqE,GACrC,OAAsB,IAAlBzB,KAAK0oE,SACA1oE,KAAK0N,MAAMu+D,MAAMxqE,GAAOyqE,MAAM,GAEhClsE,KAAKgjB,SAGdulD,EAAG3oE,UAAUusE,SAAW,SAAmB1qE,GACzC,OAAIzB,KAAKosE,MAAM3qE,EAAQ,GACdzB,KAAKqsE,KAAK5qE,GAAOyqE,MAAM,GAAGI,OAE5BtsE,KAAKgjB,SAGdulD,EAAG3oE,UAAU2sE,MAAQ,WACnB,OAAyB,IAAlBvsE,KAAK0oE,UAIdH,EAAG3oE,UAAU4sE,IAAM,WACjB,OAAOxsE,KAAKgjB,QAAQspD,QAGtB/D,EAAG3oE,UAAU0sE,KAAO,WAKlB,OAJKtsE,KAAK+qE,WACR/qE,KAAK0oE,UAAY,GAGZ1oE,MAITuoE,EAAG3oE,UAAU6sE,KAAO,SAAehpD,GACjC,KAAOzjB,KAAKP,OAASgkB,EAAIhkB,QACvBO,KAAK2oE,MAAM3oE,KAAKP,UAAY,EAG9B,IAAK,IAAIF,EAAI,EAAGA,EAAIkkB,EAAIhkB,OAAQF,IAC9BS,KAAK2oE,MAAMppE,GAAKS,KAAK2oE,MAAMppE,GAAKkkB,EAAIklD,MAAMppE,GAG5C,OAAOS,KAAK+7E,UAGdxT,EAAG3oE,UAAU8sE,IAAM,SAAcjpD,GAE/B,OADA3B,EAA0C,KAAlC9hB,KAAK0oE,SAAWjlD,EAAIilD,WACrB1oE,KAAKysE,KAAKhpD,IAInB8kD,EAAG3oE,UAAU+sE,GAAK,SAAalpD,GAC7B,OAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQ0pD,IAAIjpD,GAC/CA,EAAIT,QAAQ0pD,IAAI1sE,OAGzBuoE,EAAG3oE,UAAUgtE,IAAM,SAAcnpD,GAC/B,OAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQypD,KAAKhpD,GAChDA,EAAIT,QAAQypD,KAAKzsE,OAI1BuoE,EAAG3oE,UAAUitE,MAAQ,SAAgBppD,GAEnC,IAAInZ,EAEFA,EADEtK,KAAKP,OAASgkB,EAAIhkB,OAChBgkB,EAEAzjB,KAGN,IAAK,IAAIT,EAAI,EAAGA,EAAI+K,EAAE7K,OAAQF,IAC5BS,KAAK2oE,MAAMppE,GAAKS,KAAK2oE,MAAMppE,GAAKkkB,EAAIklD,MAAMppE,GAK5C,OAFAS,KAAKP,OAAS6K,EAAE7K,OAETO,KAAK+7E,UAGdxT,EAAG3oE,UAAUktE,KAAO,SAAerpD,GAEjC,OADA3B,EAA0C,KAAlC9hB,KAAK0oE,SAAWjlD,EAAIilD,WACrB1oE,KAAK6sE,MAAMppD,IAIpB8kD,EAAG3oE,UAAUmtE,IAAM,SAActpD,GAC/B,OAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQ8pD,KAAKrpD,GAChDA,EAAIT,QAAQ8pD,KAAK9sE,OAG1BuoE,EAAG3oE,UAAUotE,KAAO,SAAevpD,GACjC,OAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQ6pD,MAAMppD,GACjDA,EAAIT,QAAQ6pD,MAAM7sE,OAI3BuoE,EAAG3oE,UAAUqtE,MAAQ,SAAgBxpD,GAEnC,IAAIla,EACAe,EACAtK,KAAKP,OAASgkB,EAAIhkB,QACpB8J,EAAIvJ,KACJsK,EAAImZ,IAEJla,EAAIka,EACJnZ,EAAItK,MAGN,IAAK,IAAIT,EAAI,EAAGA,EAAI+K,EAAE7K,OAAQF,IAC5BS,KAAK2oE,MAAMppE,GAAKgK,EAAEo/D,MAAMppE,GAAK+K,EAAEq+D,MAAMppE,GAGvC,GAAIS,OAASuJ,EACX,KAAOhK,EAAIgK,EAAE9J,OAAQF,IACnBS,KAAK2oE,MAAMppE,GAAKgK,EAAEo/D,MAAMppE,GAM5B,OAFAS,KAAKP,OAAS8J,EAAE9J,OAETO,KAAK+7E,UAGdxT,EAAG3oE,UAAUstE,KAAO,SAAezpD,GAEjC,OADA3B,EAA0C,KAAlC9hB,KAAK0oE,SAAWjlD,EAAIilD,WACrB1oE,KAAKitE,MAAMxpD,IAIpB8kD,EAAG3oE,UAAUutE,IAAM,SAAc1pD,GAC/B,OAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQkqD,KAAKzpD,GAChDA,EAAIT,QAAQkqD,KAAKltE,OAG1BuoE,EAAG3oE,UAAUwtE,KAAO,SAAe3pD,GACjC,OAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQiqD,MAAMxpD,GACjDA,EAAIT,QAAQiqD,MAAMjtE,OAI3BuoE,EAAG3oE,UAAUqsE,MAAQ,SAAgBxqE,GACnCqgB,EAAwB,kBAAVrgB,GAAsBA,GAAS,GAE7C,IAAI4rE,EAAsC,EAAxBliE,KAAK0I,KAAKpS,EAAQ,IAChC6rE,EAAW7rE,EAAQ,GAGvBzB,KAAKiqE,QAAQoD,GAETC,EAAW,GACbD,IAIF,IAAK,IAAI9tE,EAAI,EAAGA,EAAI8tE,EAAa9tE,IAC/BS,KAAK2oE,MAAMppE,GAAsB,UAAhBS,KAAK2oE,MAAMppE,GAS9B,OALI+tE,EAAW,IACbttE,KAAK2oE,MAAMppE,IAAMS,KAAK2oE,MAAMppE,GAAM,UAAc,GAAK+tE,GAIhDttE,KAAK+7E,UAGdxT,EAAG3oE,UAAUysE,KAAO,SAAe5qE,GACjC,OAAOzB,KAAKgjB,QAAQipD,MAAMxqE,IAI5B8mE,EAAG3oE,UAAU2tE,KAAO,SAAeC,EAAKzxD,GACtC+F,EAAsB,kBAAR0rD,GAAoBA,GAAO,GAEzC,IAAIhE,EAAOgE,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAUjB,OARAxtE,KAAKiqE,QAAQT,EAAM,GAGjBxpE,KAAK2oE,MAAMa,GADTztD,EACgB/b,KAAK2oE,MAAMa,GAAQ,GAAKiE,EAExBztE,KAAK2oE,MAAMa,KAAS,GAAKiE,GAGtCztE,KAAK+7E,UAIdxT,EAAG3oE,UAAU8tE,KAAO,SAAejqD,GACjC,IAAIxY,EAkBA1B,EAAGe,EAfP,GAAsB,IAAlBtK,KAAK0oE,UAAmC,IAAjBjlD,EAAIilD,SAI7B,OAHA1oE,KAAK0oE,SAAW,EAChBz9D,EAAIjL,KAAK2tE,KAAKlqD,GACdzjB,KAAK0oE,UAAY,EACV1oE,KAAKkqE,YAGP,GAAsB,IAAlBlqE,KAAK0oE,UAAmC,IAAjBjlD,EAAIilD,SAIpC,OAHAjlD,EAAIilD,SAAW,EACfz9D,EAAIjL,KAAK2tE,KAAKlqD,GACdA,EAAIilD,SAAW,EACRz9D,EAAEi/D,YAKPlqE,KAAKP,OAASgkB,EAAIhkB,QACpB8J,EAAIvJ,KACJsK,EAAImZ,IAEJla,EAAIka,EACJnZ,EAAItK,MAIN,IADA,IAAIyqE,EAAQ,EACHlrE,EAAI,EAAGA,EAAI+K,EAAE7K,OAAQF,IAC5B0L,GAAkB,EAAb1B,EAAEo/D,MAAMppE,KAAwB,EAAb+K,EAAEq+D,MAAMppE,IAAUkrE,EAC1CzqE,KAAK2oE,MAAMppE,GAAS,SAAJ0L,EAChBw/D,EAAQx/D,IAAM,GAEhB,KAAiB,IAAVw/D,GAAelrE,EAAIgK,EAAE9J,OAAQF,IAClC0L,GAAkB,EAAb1B,EAAEo/D,MAAMppE,IAAUkrE,EACvBzqE,KAAK2oE,MAAMppE,GAAS,SAAJ0L,EAChBw/D,EAAQx/D,IAAM,GAIhB,GADAjL,KAAKP,OAAS8J,EAAE9J,OACF,IAAVgrE,EACFzqE,KAAK2oE,MAAM3oE,KAAKP,QAAUgrE,EAC1BzqE,KAAKP,cAEA,GAAI8J,IAAMvJ,KACf,KAAOT,EAAIgK,EAAE9J,OAAQF,IACnBS,KAAK2oE,MAAMppE,GAAKgK,EAAEo/D,MAAMppE,GAI5B,OAAOS,MAITuoE,EAAG3oE,UAAUi2C,IAAM,SAAcpyB,GAC/B,IAAInC,EACJ,OAAqB,IAAjBmC,EAAIilD,UAAoC,IAAlB1oE,KAAK0oE,UAC7BjlD,EAAIilD,SAAW,EACfpnD,EAAMthB,KAAK4tE,IAAInqD,GACfA,EAAIilD,UAAY,EACTpnD,GACmB,IAAjBmC,EAAIilD,UAAoC,IAAlB1oE,KAAK0oE,UACpC1oE,KAAK0oE,SAAW,EAChBpnD,EAAMmC,EAAImqD,IAAI5tE,MACdA,KAAK0oE,SAAW,EACTpnD,GAGLthB,KAAKP,OAASgkB,EAAIhkB,OAAeO,KAAKgjB,QAAQ0qD,KAAKjqD,GAEhDA,EAAIT,QAAQ0qD,KAAK1tE,OAI1BuoE,EAAG3oE,UAAU+tE,KAAO,SAAelqD,GAEjC,GAAqB,IAAjBA,EAAIilD,SAAgB,CACtBjlD,EAAIilD,SAAW,EACf,IAAIz9D,EAAIjL,KAAK0tE,KAAKjqD,GAElB,OADAA,EAAIilD,SAAW,EACRz9D,EAAEi/D,YAGJ,GAAsB,IAAlBlqE,KAAK0oE,SAId,OAHA1oE,KAAK0oE,SAAW,EAChB1oE,KAAK0tE,KAAKjqD,GACVzjB,KAAK0oE,SAAW,EACT1oE,KAAKkqE,YAId,IAWI3gE,EAAGe,EAXH6+D,EAAMnpE,KAAKmpE,IAAI1lD,GAGnB,GAAY,IAAR0lD,EAIF,OAHAnpE,KAAK0oE,SAAW,EAChB1oE,KAAKP,OAAS,EACdO,KAAK2oE,MAAM,GAAK,EACT3oE,KAKLmpE,EAAM,GACR5/D,EAAIvJ,KACJsK,EAAImZ,IAEJla,EAAIka,EACJnZ,EAAItK,MAIN,IADA,IAAIyqE,EAAQ,EACHlrE,EAAI,EAAGA,EAAI+K,EAAE7K,OAAQF,IAE5BkrE,GADAx/D,GAAkB,EAAb1B,EAAEo/D,MAAMppE,KAAwB,EAAb+K,EAAEq+D,MAAMppE,IAAUkrE,IAC7B,GACbzqE,KAAK2oE,MAAMppE,GAAS,SAAJ0L,EAElB,KAAiB,IAAVw/D,GAAelrE,EAAIgK,EAAE9J,OAAQF,IAElCkrE,GADAx/D,GAAkB,EAAb1B,EAAEo/D,MAAMppE,IAAUkrE,IACV,GACbzqE,KAAK2oE,MAAMppE,GAAS,SAAJ0L,EAIlB,GAAc,IAAVw/D,GAAelrE,EAAIgK,EAAE9J,QAAU8J,IAAMvJ,KACvC,KAAOT,EAAIgK,EAAE9J,OAAQF,IACnBS,KAAK2oE,MAAMppE,GAAKgK,EAAEo/D,MAAMppE,GAU5B,OANAS,KAAKP,OAAS0L,KAAK+C,IAAIlO,KAAKP,OAAQF,GAEhCgK,IAAMvJ,OACRA,KAAK0oE,SAAW,GAGX1oE,KAAK+7E,UAIdxT,EAAG3oE,UAAUguE,IAAM,SAAcnqD,GAC/B,OAAOzjB,KAAKgjB,QAAQ2qD,KAAKlqD,IA+C3B,IAAIoqD,EAAc,SAAsBt+C,EAAM9L,EAAKhC,GACjD,IAII+oD,EACAsD,EACAhC,EANAviE,EAAIgmB,EAAKo5C,MACTr+D,EAAImZ,EAAIklD,MACRpmE,EAAIkf,EAAIknD,MACRn/D,EAAI,EAIJukE,EAAY,EAAPxkE,EAAE,GACPykE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP3kE,EAAE,GACP4kE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP9kE,EAAE,GACP+kE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPjlE,EAAE,GACPklE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPplE,EAAE,GACPqlE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPvlE,EAAE,GACPwlE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP1lE,EAAE,GACP2lE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP7lE,EAAE,GACP8lE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPhmE,EAAE,GACPimE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPnmE,EAAE,GACPomE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPvlE,EAAE,GACPwlE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP1lE,EAAE,GACP2lE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP7lE,EAAE,GACP8lE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPhmE,EAAE,GACPimE,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPnmE,EAAE,GACPomE,EAAW,KAALD,EACNE,GAAMF,IAAO,GACbG,GAAY,EAAPtmE,EAAE,GACPumE,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPzmE,EAAE,GACP0mE,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP5mE,EAAE,GACP6mE,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP/mE,EAAE,GACPgnE,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPlnE,EAAE,GACPmnE,GAAW,KAALD,GACNE,GAAMF,KAAO,GAEjB/vD,EAAIinD,SAAWn5C,EAAKm5C,SAAWjlD,EAAIilD,SACnCjnD,EAAIhiB,OAAS,GAMb,IAAIkyE,IAAQnoE,GAJZghE,EAAKr/D,KAAKymE,KAAK5D,EAAK8B,IAIE,KAAa,MAFnChC,GADAA,EAAM3iE,KAAKymE,KAAK5D,EAAK+B,IACR5kE,KAAKymE,KAAK3D,EAAK6B,GAAQ,KAEU,IAAO,EACrDtmE,IAFAsiE,EAAK3gE,KAAKymE,KAAK3D,EAAK8B,KAEPjC,IAAQ,IAAO,IAAM6D,KAAO,IAAO,EAChDA,IAAM,SAENnH,EAAKr/D,KAAKymE,KAAKzD,EAAK2B,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKzD,EAAK4B,IACR5kE,KAAKymE,KAAKxD,EAAK0B,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKxD,EAAK2B,GAKpB,IAAI8B,IAAQroE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKiC,GAAQ,GAIZ,KAAa,MAFnCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAKkC,GAAQ,GACvB/kE,KAAKymE,KAAK3D,EAAKgC,GAAQ,KAEU,IAAO,EACrDzmE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKiC,GAAQ,IAErBpC,IAAQ,IAAO,IAAM+D,KAAO,IAAO,EAChDA,IAAM,SAENrH,EAAKr/D,KAAKymE,KAAKtD,EAAKwB,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKtD,EAAKyB,IACR5kE,KAAKymE,KAAKrD,EAAKuB,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKrD,EAAKwB,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAK8B,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAK+B,GAAQ,GACvB/kE,KAAKymE,KAAKxD,EAAK6B,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAK8B,GAAQ,EAKlC,IAAI4B,IAAQtoE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKoC,GAAQ,GAIZ,KAAa,MAFnCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAKqC,GAAQ,GACvBllE,KAAKymE,KAAK3D,EAAKmC,GAAQ,KAEU,IAAO,EACrD5mE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKoC,GAAQ,IAErBvC,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAENtH,EAAKr/D,KAAKymE,KAAKnD,EAAKqB,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKnD,EAAKsB,IACR5kE,KAAKymE,KAAKlD,EAAKoB,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKlD,EAAKqB,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAK2B,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAK4B,GAAQ,GACvB/kE,KAAKymE,KAAKrD,EAAK0B,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAK2B,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAKiC,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAKkC,GAAQ,GACvBllE,KAAKymE,KAAKxD,EAAKgC,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAKiC,GAAQ,EAKlC,IAAI0B,IAAQvoE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKuC,GAAQ,GAIZ,KAAa,MAFnCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAKwC,GAAQ,GACvBrlE,KAAKymE,KAAK3D,EAAKsC,GAAQ,KAEU,IAAO,EACrD/mE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKuC,GAAQ,IAErB1C,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAENvH,EAAKr/D,KAAKymE,KAAKhD,EAAKkB,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKhD,EAAKmB,IACR5kE,KAAKymE,KAAK/C,EAAKiB,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAK/C,EAAKkB,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAKwB,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAKyB,GAAQ,GACvB/kE,KAAKymE,KAAKlD,EAAKuB,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAKwB,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAK8B,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAK+B,GAAQ,GACvBllE,KAAKymE,KAAKrD,EAAK6B,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAK8B,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAKoC,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAKqC,GAAQ,GACvBrlE,KAAKymE,KAAKxD,EAAKmC,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAKoC,GAAQ,EAKlC,IAAIwB,IAAQxoE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAK0C,GAAQ,GAIZ,KAAa,MAFnC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAK2C,IAAQ,GACvBxlE,KAAKymE,KAAK3D,EAAKyC,GAAQ,KAEU,IAAO,EACrDlnE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAK0C,IAAQ,IAErB7C,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAENxH,EAAKr/D,KAAKymE,KAAK7C,EAAKe,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAK7C,EAAKgB,IACR5kE,KAAKymE,KAAK5C,EAAKc,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAK5C,EAAKe,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAKqB,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAKsB,GAAQ,GACvB/kE,KAAKymE,KAAK/C,EAAKoB,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAKqB,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAK2B,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAK4B,GAAQ,GACvBllE,KAAKymE,KAAKlD,EAAK0B,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAK2B,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAKiC,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAKkC,GAAQ,GACvBrlE,KAAKymE,KAAKrD,EAAKgC,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAKiC,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAKuC,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAKwC,IAAQ,GACvBxlE,KAAKymE,KAAKxD,EAAKsC,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAKuC,IAAQ,EAKlC,IAAIsB,IAAQzoE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAK6C,IAAQ,GAIZ,KAAa,MAFnC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAK8C,IAAQ,GACvB3lE,KAAKymE,KAAK3D,EAAK4C,IAAQ,KAEU,IAAO,EACrDrnE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAK6C,IAAQ,IAErBhD,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAENzH,EAAKr/D,KAAKymE,KAAK1C,EAAKY,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAK1C,EAAKa,IACR5kE,KAAKymE,KAAKzC,EAAKW,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKzC,EAAKY,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAKkB,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAKmB,GAAQ,GACvB/kE,KAAKymE,KAAK5C,EAAKiB,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAKkB,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAKwB,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAKyB,GAAQ,GACvBllE,KAAKymE,KAAK/C,EAAKuB,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAKwB,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAK8B,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAK+B,GAAQ,GACvBrlE,KAAKymE,KAAKlD,EAAK6B,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAK8B,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAKoC,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAKqC,IAAQ,GACvBxlE,KAAKymE,KAAKrD,EAAKmC,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAKoC,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAK0C,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAK2C,IAAQ,GACvB3lE,KAAKymE,KAAKxD,EAAKyC,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAK0C,IAAQ,EAKlC,IAAIoB,IAAQ1oE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKgD,IAAQ,GAIZ,KAAa,MAFnClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAKiD,IAAQ,GACvB9lE,KAAKymE,KAAK3D,EAAK+C,IAAQ,KAEU,IAAO,EACrDxnE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKgD,IAAQ,IAErBnD,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAEN1H,EAAKr/D,KAAKymE,KAAKvC,EAAKS,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKvC,EAAKU,IACR5kE,KAAKymE,KAAKtC,EAAKQ,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKtC,EAAKS,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKe,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKgB,GAAQ,GACvB/kE,KAAKymE,KAAKzC,EAAKc,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKe,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAKqB,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAKsB,GAAQ,GACvBllE,KAAKymE,KAAK5C,EAAKoB,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAKqB,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAK2B,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAK4B,GAAQ,GACvBrlE,KAAKymE,KAAK/C,EAAK0B,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAK2B,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAKiC,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAKkC,IAAQ,GACvBxlE,KAAKymE,KAAKlD,EAAKgC,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAKiC,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAKuC,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAKwC,IAAQ,GACvB3lE,KAAKymE,KAAKrD,EAAKsC,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAKuC,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAK6C,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAK8C,IAAQ,GACvB9lE,KAAKymE,KAAKxD,EAAK4C,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAK6C,IAAQ,EAKlC,IAAIkB,IAAQ3oE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKmD,IAAQ,GAIZ,KAAa,MAFnCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAKoD,IAAQ,GACvBjmE,KAAKymE,KAAK3D,EAAKkD,IAAQ,KAEU,IAAO,EACrD3nE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKmD,IAAQ,IAErBtD,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAEN3H,EAAKr/D,KAAKymE,KAAKpC,EAAKM,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKpC,EAAKO,IACR5kE,KAAKymE,KAAKnC,EAAKK,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKnC,EAAKM,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKY,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKa,GAAQ,GACvB/kE,KAAKymE,KAAKtC,EAAKW,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKY,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKkB,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKmB,GAAQ,GACvBllE,KAAKymE,KAAKzC,EAAKiB,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKkB,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAKwB,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAKyB,GAAQ,GACvBrlE,KAAKymE,KAAK5C,EAAKuB,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAKwB,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAK8B,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAK+B,IAAQ,GACvBxlE,KAAKymE,KAAK/C,EAAK6B,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAK8B,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAKoC,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAKqC,IAAQ,GACvB3lE,KAAKymE,KAAKlD,EAAKmC,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAKoC,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAK0C,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAK2C,IAAQ,GACvB9lE,KAAKymE,KAAKrD,EAAKyC,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAK0C,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAKgD,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAKiD,IAAQ,GACvBjmE,KAAKymE,KAAKxD,EAAK+C,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAKgD,IAAQ,EAKlC,IAAIgB,IAAQ5oE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKsD,IAAQ,GAIZ,KAAa,MAFnCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAKuD,IAAQ,GACvBpmE,KAAKymE,KAAK3D,EAAKqD,IAAQ,KAEU,IAAO,EACrD9nE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKsD,IAAQ,IAErBzD,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAEN5H,EAAKr/D,KAAKymE,KAAKjC,EAAKG,GAEpBhC,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKI,IACR5kE,KAAKymE,KAAKhC,EAAKE,GAAQ,EACpChE,EAAK3gE,KAAKymE,KAAKhC,EAAKG,GACpBvF,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKS,GAAQ,EAElCnC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKU,GAAQ,GACvB/kE,KAAKymE,KAAKnC,EAAKQ,GAAQ,EACpCnE,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKS,GAAQ,EAClC1F,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKe,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKgB,GAAQ,GACvBllE,KAAKymE,KAAKtC,EAAKc,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKe,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKqB,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKsB,GAAQ,GACvBrlE,KAAKymE,KAAKzC,EAAKoB,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKqB,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAK2B,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAK4B,IAAQ,GACvBxlE,KAAKymE,KAAK5C,EAAK0B,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAK2B,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAKiC,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAKkC,IAAQ,GACvB3lE,KAAKymE,KAAK/C,EAAKgC,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAKiC,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAKuC,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAKwC,IAAQ,GACvB9lE,KAAKymE,KAAKlD,EAAKsC,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAKuC,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAK6C,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAK8C,IAAQ,GACvBjmE,KAAKymE,KAAKrD,EAAK4C,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAK6C,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAKmD,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAKoD,IAAQ,GACvBpmE,KAAKymE,KAAKxD,EAAKkD,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAKmD,IAAQ,EAKlC,IAAIc,IAAQ7oE,GAJZghE,EAAMA,EAAKr/D,KAAKymE,KAAK5D,EAAKyD,IAAQ,GAIZ,KAAa,MAFnC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK5D,EAAK0D,IAAQ,GACvBvmE,KAAKymE,KAAK3D,EAAKwD,IAAQ,KAEU,IAAO,EACrDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK3D,EAAKyD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMuE,KAAO,IAAO,EAChDA,IAAM,SAEN7H,EAAKr/D,KAAKymE,KAAKjC,EAAKM,GAEpBnC,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKO,IACR/kE,KAAKymE,KAAKhC,EAAKK,GAAQ,EACpCnE,EAAK3gE,KAAKymE,KAAKhC,EAAKM,GACpB1F,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKY,GAAQ,EAElCtC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKa,GAAQ,GACvBllE,KAAKymE,KAAKnC,EAAKW,GAAQ,EACpCtE,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKY,GAAQ,EAClC7F,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKkB,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKmB,GAAQ,GACvBrlE,KAAKymE,KAAKtC,EAAKiB,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKkB,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKwB,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKyB,IAAQ,GACvBxlE,KAAKymE,KAAKzC,EAAKuB,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKwB,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAK8B,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAK+B,IAAQ,GACvB3lE,KAAKymE,KAAK5C,EAAK6B,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAK8B,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAKoC,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAKqC,IAAQ,GACvB9lE,KAAKymE,KAAK/C,EAAKmC,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAKoC,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAK0C,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAK2C,IAAQ,GACvBjmE,KAAKymE,KAAKlD,EAAKyC,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAK0C,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAKgD,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAKiD,IAAQ,GACvBpmE,KAAKymE,KAAKrD,EAAK+C,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAKgD,IAAQ,EAKlC,IAAIe,IAAS9oE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAKzD,EAAKsD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKzD,EAAKuD,IAAQ,GACvBvmE,KAAKymE,KAAKxD,EAAKqD,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAKxD,EAAKsD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMwE,KAAQ,IAAO,EACjDA,IAAO,SAEP9H,EAAKr/D,KAAKymE,KAAKjC,EAAKS,GAEpBtC,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKU,IACRllE,KAAKymE,KAAKhC,EAAKQ,GAAQ,EACpCtE,EAAK3gE,KAAKymE,KAAKhC,EAAKS,GACpB7F,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKe,GAAQ,EAElCzC,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKgB,GAAQ,GACvBrlE,KAAKymE,KAAKnC,EAAKc,GAAQ,EACpCzE,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKe,GAAQ,EAClChG,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKqB,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKsB,IAAQ,GACvBxlE,KAAKymE,KAAKtC,EAAKoB,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKqB,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAK2B,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAK4B,IAAQ,GACvB3lE,KAAKymE,KAAKzC,EAAK0B,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAK2B,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAKiC,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAKkC,IAAQ,GACvB9lE,KAAKymE,KAAK5C,EAAKgC,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAKiC,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAKuC,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAKwC,IAAQ,GACvBjmE,KAAKymE,KAAK/C,EAAKsC,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAKuC,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAK6C,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAK8C,IAAQ,GACvBpmE,KAAKymE,KAAKlD,EAAK4C,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAK6C,IAAQ,EAKlC,IAAIgB,IAAS/oE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAKtD,EAAKmD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKtD,EAAKoD,IAAQ,GACvBvmE,KAAKymE,KAAKrD,EAAKkD,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAKrD,EAAKmD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEP/H,EAAKr/D,KAAKymE,KAAKjC,EAAKY,GAEpBzC,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKa,IACRrlE,KAAKymE,KAAKhC,EAAKW,GAAQ,EACpCzE,EAAK3gE,KAAKymE,KAAKhC,EAAKY,GACpBhG,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKkB,GAAQ,EAElC5C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKmB,IAAQ,GACvBxlE,KAAKymE,KAAKnC,EAAKiB,GAAQ,EACpC5E,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKkB,IAAQ,EAClCnG,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKwB,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKyB,IAAQ,GACvB3lE,KAAKymE,KAAKtC,EAAKuB,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKwB,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAK8B,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAK+B,IAAQ,GACvB9lE,KAAKymE,KAAKzC,EAAK6B,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAK8B,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAKoC,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAKqC,IAAQ,GACvBjmE,KAAKymE,KAAK5C,EAAKmC,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAKoC,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAK0C,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAK2C,IAAQ,GACvBpmE,KAAKymE,KAAK/C,EAAKyC,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAK0C,IAAQ,EAKlC,IAAIiB,IAAShpE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAKnD,EAAKgD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKnD,EAAKiD,IAAQ,GACvBvmE,KAAKymE,KAAKlD,EAAK+C,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAKlD,EAAKgD,IAAQ,IAErB5D,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEPhI,EAAKr/D,KAAKymE,KAAKjC,EAAKe,GAEpB5C,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKgB,KACRxlE,KAAKymE,KAAKhC,EAAKc,GAAQ,EACpC5E,EAAK3gE,KAAKymE,KAAKhC,EAAKe,IACpBnG,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKqB,IAAQ,EAElC/C,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKsB,IAAQ,GACvB3lE,KAAKymE,KAAKnC,EAAKoB,IAAQ,EACpC/E,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKqB,IAAQ,EAClCtG,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAK2B,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAK4B,IAAQ,GACvB9lE,KAAKymE,KAAKtC,EAAK0B,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAK2B,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKiC,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKkC,IAAQ,GACvBjmE,KAAKymE,KAAKzC,EAAKgC,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKiC,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAKuC,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAKwC,IAAQ,GACvBpmE,KAAKymE,KAAK5C,EAAKsC,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAKuC,IAAQ,EAKlC,IAAIkB,IAASjpE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAKhD,EAAK6C,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKhD,EAAK8C,IAAQ,GACvBvmE,KAAKymE,KAAK/C,EAAK4C,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK/C,EAAK6C,IAAQ,IAErB5D,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEPjI,EAAKr/D,KAAKymE,KAAKjC,EAAKkB,IAEpB/C,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKmB,KACR3lE,KAAKymE,KAAKhC,EAAKiB,IAAQ,EACpC/E,EAAK3gE,KAAKymE,KAAKhC,EAAKkB,IACpBtG,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKwB,IAAQ,EAElClD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKyB,IAAQ,GACvB9lE,KAAKymE,KAAKnC,EAAKuB,IAAQ,EACpClF,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKwB,IAAQ,EAClCzG,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAK8B,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAK+B,IAAQ,GACvBjmE,KAAKymE,KAAKtC,EAAK6B,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAK8B,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKoC,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKqC,IAAQ,GACvBpmE,KAAKymE,KAAKzC,EAAKmC,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKoC,IAAQ,EAKlC,IAAImB,IAASlpE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAK7C,EAAK0C,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK7C,EAAK2C,IAAQ,GACvBvmE,KAAKymE,KAAK5C,EAAKyC,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAK5C,EAAK0C,IAAQ,IAErB5D,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEPlI,EAAKr/D,KAAKymE,KAAKjC,EAAKqB,IAEpBlD,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKsB,KACR9lE,KAAKymE,KAAKhC,EAAKoB,IAAQ,EACpClF,EAAK3gE,KAAKymE,KAAKhC,EAAKqB,IACpBzG,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAK2B,IAAQ,EAElCrD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAK4B,IAAQ,GACvBjmE,KAAKymE,KAAKnC,EAAK0B,IAAQ,EACpCrF,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAK2B,IAAQ,EAClC5G,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKiC,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKkC,IAAQ,GACvBpmE,KAAKymE,KAAKtC,EAAKgC,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKiC,IAAQ,EAKlC,IAAIoB,IAASnpE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAK1C,EAAKuC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAK1C,EAAKwC,IAAQ,GACvBvmE,KAAKymE,KAAKzC,EAAKsC,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAKzC,EAAKuC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEPnI,EAAKr/D,KAAKymE,KAAKjC,EAAKwB,IAEpBrD,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAKyB,KACRjmE,KAAKymE,KAAKhC,EAAKuB,IAAQ,EACpCrF,EAAK3gE,KAAKymE,KAAKhC,EAAKwB,IACpB5G,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAK8B,IAAQ,EAElCxD,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAK+B,IAAQ,GACvBpmE,KAAKymE,KAAKnC,EAAK6B,IAAQ,EACpCxF,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAK8B,IAAQ,EAKlC,IAAIqB,IAASppE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAKvC,EAAKoC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKvC,EAAKqC,IAAQ,GACvBvmE,KAAKymE,KAAKtC,EAAKmC,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAKtC,EAAKoC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEPpI,EAAKr/D,KAAKymE,KAAKjC,EAAK2B,IAEpBxD,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAK4B,KACRpmE,KAAKymE,KAAKhC,EAAK0B,IAAQ,EACpCxF,EAAK3gE,KAAKymE,KAAKhC,EAAK2B,IAKpB,IAAIsB,IAASrpE,GAJbghE,EAAMA,EAAKr/D,KAAKymE,KAAKpC,EAAKiC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM3iE,KAAKymE,KAAKpC,EAAKkC,IAAQ,GACvBvmE,KAAKymE,KAAKnC,EAAKgC,IAAQ,KAEW,IAAO,EACtDjoE,IAFAsiE,EAAMA,EAAK3gE,KAAKymE,KAAKnC,EAAKiC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SAMP,IAAIC,IAAStpE,GAJbghE,EAAKr/D,KAAKymE,KAAKjC,EAAK8B,KAIG,KAAa,MAFpC3D,GADAA,EAAM3iE,KAAKymE,KAAKjC,EAAK+B,KACRvmE,KAAKymE,KAAKhC,EAAK6B,IAAQ,KAEW,IAAO,EA0BtD,OAzBAjoE,IAFAsiE,EAAK3gE,KAAKymE,KAAKhC,EAAK8B,MAEP5D,IAAQ,IAAO,IAAMgF,KAAQ,IAAO,EACjDA,IAAO,SACPvwE,EAAE,GAAKovE,GACPpvE,EAAE,GAAKsvE,GACPtvE,EAAE,GAAKuvE,GACPvvE,EAAE,GAAKwvE,GACPxvE,EAAE,GAAKyvE,GACPzvE,EAAE,GAAK0vE,GACP1vE,EAAE,GAAK2vE,GACP3vE,EAAE,GAAK4vE,GACP5vE,EAAE,GAAK6vE,GACP7vE,EAAE,GAAK8vE,GACP9vE,EAAE,IAAM+vE,GACR/vE,EAAE,IAAMgwE,GACRhwE,EAAE,IAAMiwE,GACRjwE,EAAE,IAAMkwE,GACRlwE,EAAE,IAAMmwE,GACRnwE,EAAE,IAAMowE,GACRpwE,EAAE,IAAMqwE,GACRrwE,EAAE,IAAMswE,GACRtwE,EAAE,IAAMuwE,GACE,IAANtpE,IACFjH,EAAE,IAAMiH,EACRiY,EAAIhiB,UAECgiB,GAQT,SAAS0xD,EAAU5jD,EAAM9L,EAAKhC,GAC5BA,EAAIinD,SAAWjlD,EAAIilD,SAAWn5C,EAAKm5C,SACnCjnD,EAAIhiB,OAAS8vB,EAAK9vB,OAASgkB,EAAIhkB,OAI/B,IAFA,IAAIgrE,EAAQ,EACRyI,EAAU,EACL/oE,EAAI,EAAGA,EAAIsX,EAAIhiB,OAAS,EAAG0K,IAAK,CAGvC,IAAIugE,EAASwI,EACbA,EAAU,EAGV,IAFA,IAAIvI,EAAgB,SAARF,EACRG,EAAOz/D,KAAKkD,IAAIlE,EAAGsZ,EAAIhkB,OAAS,GAC3BgK,EAAI0B,KAAK+C,IAAI,EAAG/D,EAAIolB,EAAK9vB,OAAS,GAAIgK,GAAKmhE,EAAMnhE,IAAK,CAC7D,IAAIlK,EAAI4K,EAAIV,EAGRwB,GAFoB,EAAhBskB,EAAKo5C,MAAMppE,KACI,EAAfkkB,EAAIklD,MAAMl/D,IAGd+gE,EAAS,SAAJv/D,EAGT0/D,EAAa,UADbH,EAAMA,EAAKG,EAAS,GAIpBuI,IAFAxI,GAHAA,EAAUA,GAAWz/D,EAAI,SAAa,GAAM,IAGxBu/D,IAAO,IAAO,KAEZ,GACtBE,GAAU,SAEZjpD,EAAIknD,MAAMx+D,GAAKwgE,EACfF,EAAQC,EACRA,EAASwI,EAQX,OANc,IAAVzI,EACFhpD,EAAIknD,MAAMx+D,GAAKsgE,EAEfhpD,EAAIhiB,SAGCgiB,EAAIs6D,SAGb,SAAShJ,EAAYxjD,EAAM9L,EAAKhC,GAI9B,OAAO0xD,EAAS5jD,EAAM9L,EAAKhC,GAsB7B,SAASuxD,EAAMtkE,EAAGoD,GAChB9R,KAAK0O,EAAIA,EACT1O,KAAK8R,EAAIA,EAzEN3G,KAAKymE,OACR/D,EAActD,GAmDhBhC,EAAG3oE,UAAU0N,MAAQ,SAAgBmW,EAAKhC,GACxC,IACItf,EAAMnC,KAAKP,OAASgkB,EAAIhkB,OAW5B,OAVoB,KAAhBO,KAAKP,QAAgC,KAAfgkB,EAAIhkB,OACtBouE,EAAY7tE,KAAMyjB,EAAKhC,GACpBtf,EAAM,GACTooE,EAAWvqE,KAAMyjB,EAAKhC,GACnBtf,EAAM,KACTgxE,EAASnzE,KAAMyjB,EAAKhC,GAEpBsxD,EAAW/yE,KAAMyjB,EAAKhC,IAchCuxD,EAAKpzE,UAAUwzE,QAAU,SAAkBzgE,GAGzC,IAFA,IAAI/F,EAAI,IAAIvK,MAAMsQ,GACd1I,EAAIs+D,EAAG3oE,UAAUgsE,WAAWj5D,GAAK,EAC5BpT,EAAI,EAAGA,EAAIoT,EAAGpT,IACrBqN,EAAErN,GAAKS,KAAKqzE,OAAO9zE,EAAG0K,EAAG0I,GAG3B,OAAO/F,GAITomE,EAAKpzE,UAAUyzE,OAAS,SAAiB3kE,EAAGzE,EAAG0I,GAC7C,GAAU,IAANjE,GAAWA,IAAMiE,EAAI,EAAG,OAAOjE,EAGnC,IADA,IAAI4kE,EAAK,EACA/zE,EAAI,EAAGA,EAAI0K,EAAG1K,IACrB+zE,IAAW,EAAJ5kE,IAAWzE,EAAI1K,EAAI,EAC1BmP,IAAM,EAGR,OAAO4kE,GAKTN,EAAKpzE,UAAU2zE,QAAU,SAAkBC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMjhE,GACpE,IAAK,IAAIpT,EAAI,EAAGA,EAAIoT,EAAGpT,IACrBo0E,EAAKp0E,GAAKk0E,EAAID,EAAIj0E,IAClBq0E,EAAKr0E,GAAKm0E,EAAIF,EAAIj0E,KAItByzE,EAAKpzE,UAAUyuC,UAAY,SAAoBolC,EAAKC,EAAKC,EAAMC,EAAMjhE,EAAG6gE,GACtExzE,KAAKuzE,QAAQC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMjhE,GAExC,IAAK,IAAI3F,EAAI,EAAGA,EAAI2F,EAAG3F,IAAM,EAM3B,IALA,IAAI/C,EAAI+C,GAAK,EAET6mE,EAAQ1oE,KAAK2oE,IAAI,EAAI3oE,KAAK4oE,GAAK9pE,GAC/B+pE,EAAQ7oE,KAAK8oE,IAAI,EAAI9oE,KAAK4oE,GAAK9pE,GAE1BiB,EAAI,EAAGA,EAAIyH,EAAGzH,GAAKjB,EAI1B,IAHA,IAAIiqE,EAASL,EACTM,EAASH,EAEJvqE,EAAI,EAAGA,EAAIuD,EAAGvD,IAAK,CAC1B,IAAIogB,EAAK8pD,EAAKzoE,EAAIzB,GACd2qE,EAAKR,EAAK1oE,EAAIzB,GAEd4qE,EAAKV,EAAKzoE,EAAIzB,EAAIuD,GAClBsnE,EAAKV,EAAK1oE,EAAIzB,EAAIuD,GAElBunE,EAAKL,EAASG,EAAKF,EAASG,EAEhCA,EAAKJ,EAASI,EAAKH,EAASE,EAC5BA,EAAKE,EAELZ,EAAKzoE,EAAIzB,GAAKogB,EAAKwqD,EACnBT,EAAK1oE,EAAIzB,GAAK2qE,EAAKE,EAEnBX,EAAKzoE,EAAIzB,EAAIuD,GAAK6c,EAAKwqD,EACvBT,EAAK1oE,EAAIzB,EAAIuD,GAAKonE,EAAKE,EAGnB7qE,IAAMQ,IACRsqE,EAAKV,EAAQK,EAASF,EAAQG,EAE9BA,EAASN,EAAQM,EAASH,EAAQE,EAClCA,EAASK,KAOnBvB,EAAKpzE,UAAU40E,YAAc,SAAsB1xE,EAAGsH,GACpD,IAAIuI,EAAqB,EAAjBxH,KAAK+C,IAAI9D,EAAGtH,GAChB2xE,EAAU,EAAJ9hE,EACNpT,EAAI,EACR,IAAKoT,EAAIA,EAAI,EAAI,EAAGA,EAAGA,KAAU,EAC/BpT,IAGF,OAAO,GAAKA,EAAI,EAAIk1E,GAGtBzB,EAAKpzE,UAAU80E,UAAY,SAAoBjB,EAAKC,EAAK/gE,GACvD,KAAIA,GAAK,GAET,IAAK,IAAIpT,EAAI,EAAGA,EAAIoT,EAAI,EAAGpT,IAAK,CAC9B,IAAIqN,EAAI6mE,EAAIl0E,GAEZk0E,EAAIl0E,GAAKk0E,EAAI9gE,EAAIpT,EAAI,GACrBk0E,EAAI9gE,EAAIpT,EAAI,GAAKqN,EAEjBA,EAAI8mE,EAAIn0E,GAERm0E,EAAIn0E,IAAMm0E,EAAI/gE,EAAIpT,EAAI,GACtBm0E,EAAI/gE,EAAIpT,EAAI,IAAMqN,IAItBomE,EAAKpzE,UAAU+0E,aAAe,SAAuBC,EAAIjiE,GAEvD,IADA,IAAI83D,EAAQ,EACHlrE,EAAI,EAAGA,EAAIoT,EAAI,EAAGpT,IAAK,CAC9B,IAAI+O,EAAoC,KAAhCnD,KAAK4I,MAAM6gE,EAAG,EAAIr1E,EAAI,GAAKoT,GACjCxH,KAAK4I,MAAM6gE,EAAG,EAAIr1E,GAAKoT,GACvB83D,EAEFmK,EAAGr1E,GAAS,SAAJ+O,EAGNm8D,EADEn8D,EAAI,SACE,EAEAA,EAAI,SAAY,EAI5B,OAAOsmE,GAGT5B,EAAKpzE,UAAUi1E,WAAa,SAAqBD,EAAIzyE,EAAKsxE,EAAK9gE,GAE7D,IADA,IAAI83D,EAAQ,EACHlrE,EAAI,EAAGA,EAAI4C,EAAK5C,IACvBkrE,GAAyB,EAARmK,EAAGr1E,GAEpBk0E,EAAI,EAAIl0E,GAAa,KAARkrE,EAAgBA,KAAkB,GAC/CgJ,EAAI,EAAIl0E,EAAI,GAAa,KAARkrE,EAAgBA,KAAkB,GAIrD,IAAKlrE,EAAI,EAAI4C,EAAK5C,EAAIoT,IAAKpT,EACzBk0E,EAAIl0E,GAAK,EAGXuiB,EAAiB,IAAV2oD,GACP3oD,EAA6B,MAAb,KAAR2oD,KAGVuI,EAAKpzE,UAAUk1E,KAAO,SAAeniE,GAEnC,IADA,IAAIoiE,EAAK,IAAI1yE,MAAMsQ,GACVpT,EAAI,EAAGA,EAAIoT,EAAGpT,IACrBw1E,EAAGx1E,GAAK,EAGV,OAAOw1E,GAGT/B,EAAKpzE,UAAUqzE,KAAO,SAAevkE,EAAGoD,EAAG2P,GACzC,IAAI9O,EAAI,EAAI3S,KAAKw0E,YAAY9lE,EAAEjP,OAAQqS,EAAErS,QAErC+zE,EAAMxzE,KAAKozE,QAAQzgE,GAEnByZ,EAAIpsB,KAAK80E,KAAKniE,GAEd8gE,EAAM,IAAIpxE,MAAMsQ,GAChBqiE,EAAO,IAAI3yE,MAAMsQ,GACjBsiE,EAAO,IAAI5yE,MAAMsQ,GAEjBuiE,EAAO,IAAI7yE,MAAMsQ,GACjBwiE,EAAQ,IAAI9yE,MAAMsQ,GAClByiE,EAAQ,IAAI/yE,MAAMsQ,GAElB0iE,EAAO5zD,EAAIknD,MACf0M,EAAK51E,OAASkT,EAEd3S,KAAK60E,WAAWnmE,EAAEi6D,MAAOj6D,EAAEjP,OAAQg0E,EAAK9gE,GACxC3S,KAAK60E,WAAW/iE,EAAE62D,MAAO72D,EAAErS,OAAQy1E,EAAMviE,GAEzC3S,KAAKquC,UAAUolC,EAAKrnD,EAAG4oD,EAAMC,EAAMtiE,EAAG6gE,GACtCxzE,KAAKquC,UAAU6mC,EAAM9oD,EAAG+oD,EAAOC,EAAOziE,EAAG6gE,GAEzC,IAAK,IAAIj0E,EAAI,EAAGA,EAAIoT,EAAGpT,IAAK,CAC1B,IAAIg1E,EAAKS,EAAKz1E,GAAK41E,EAAM51E,GAAK01E,EAAK11E,GAAK61E,EAAM71E,GAC9C01E,EAAK11E,GAAKy1E,EAAKz1E,GAAK61E,EAAM71E,GAAK01E,EAAK11E,GAAK41E,EAAM51E,GAC/Cy1E,EAAKz1E,GAAKg1E,EAUZ,OAPAv0E,KAAK00E,UAAUM,EAAMC,EAAMtiE,GAC3B3S,KAAKquC,UAAU2mC,EAAMC,EAAMI,EAAMjpD,EAAGzZ,EAAG6gE,GACvCxzE,KAAK00E,UAAUW,EAAMjpD,EAAGzZ,GACxB3S,KAAK20E,aAAaU,EAAM1iE,GAExB8O,EAAIinD,SAAWh6D,EAAEg6D,SAAW52D,EAAE42D,SAC9BjnD,EAAIhiB,OAASiP,EAAEjP,OAASqS,EAAErS,OACnBgiB,EAAIs6D,UAIbxT,EAAG3oE,UAAUspE,IAAM,SAAczlD,GAC/B,IAAIhC,EAAM,IAAI8mD,EAAG,MAEjB,OADA9mD,EAAIknD,MAAQ,IAAItmE,MAAMrC,KAAKP,OAASgkB,EAAIhkB,QACjCO,KAAKsN,MAAMmW,EAAKhC,IAIzB8mD,EAAG3oE,UAAU01E,KAAO,SAAe7xD,GACjC,IAAIhC,EAAM,IAAI8mD,EAAG,MAEjB,OADA9mD,EAAIknD,MAAQ,IAAItmE,MAAMrC,KAAKP,OAASgkB,EAAIhkB,QACjCszE,EAAW/yE,KAAMyjB,EAAKhC,IAI/B8mD,EAAG3oE,UAAUgyE,KAAO,SAAenuD,GACjC,OAAOzjB,KAAKgjB,QAAQ1V,MAAMmW,EAAKzjB,OAGjCuoE,EAAG3oE,UAAUkqE,MAAQ,SAAgBrmD,GACnC,IAAImkE,EAAWnkE,EAAM,EACjBmkE,IAAUnkE,GAAOA,GAErB3B,EAAsB,kBAAR2B,GACd3B,EAAO2B,EAAM,UAIb,IADA,IAAIgnD,EAAQ,EACHlrE,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAAK,CACpC,IAAI+O,GAAqB,EAAhBtO,KAAK2oE,MAAMppE,IAAUkkB,EAC1B+mD,GAAU,SAAJl8D,IAA0B,SAARm8D,GAC5BA,IAAU,GACVA,GAAUn8D,EAAI,SAAa,EAE3Bm8D,GAASD,IAAO,GAChBxqE,KAAK2oE,MAAMppE,GAAU,SAALirE,EAQlB,OALc,IAAVC,IACFzqE,KAAK2oE,MAAMppE,GAAKkrE,EAChBzqE,KAAKP,UAGAmoF,EAAW5nF,KAAKssE,OAAStsE,MAGlCuoE,EAAG3oE,UAAU21E,KAAO,SAAe9xD,GACjC,OAAOzjB,KAAKgjB,QAAQ8mD,MAAMrmD,IAI5B8kD,EAAG3oE,UAAU41E,IAAM,WACjB,OAAOx1E,KAAKkpE,IAAIlpE,OAIlBuoE,EAAG3oE,UAAU61E,KAAO,WAClB,OAAOz1E,KAAK4xE,KAAK5xE,KAAKgjB,UAIxBulD,EAAG3oE,UAAU6L,IAAM,SAAcgY,GAC/B,IAAInV,EA7xCN,SAAqBmV,GAGnB,IAFA,IAAInV,EAAI,IAAIjM,MAAMohB,EAAIxU,aAEbu+D,EAAM,EAAGA,EAAMl/D,EAAE7O,OAAQ+tE,IAAO,CACvC,IAAIhE,EAAOgE,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjBl/D,EAAEk/D,GAAQ/pD,EAAIklD,MAAMa,KAASiE,EAAQ,EAGvC,OAAOn/D,EAmxCConE,CAAWjyD,GACnB,GAAiB,IAAbnV,EAAE7O,OAAc,OAAO,IAAI8oE,EAAG,GAIlC,IADA,IAAIjnD,EAAMthB,KACDT,EAAI,EAAGA,EAAI+O,EAAE7O,QACP,IAAT6O,EAAE/O,GADsBA,IAAK+hB,EAAMA,EAAIk0D,OAI7C,KAAMj2E,EAAI+O,EAAE7O,OACV,IAAK,IAAIuL,EAAIsW,EAAIk0D,MAAOj2E,EAAI+O,EAAE7O,OAAQF,IAAKyL,EAAIA,EAAEwqE,MAClC,IAATlnE,EAAE/O,KAEN+hB,EAAMA,EAAI4nD,IAAIl+D,IAIlB,OAAOsW,GAITinD,EAAG3oE,UAAU+1E,OAAS,SAAiBv2D,GACrC0C,EAAuB,kBAAT1C,GAAqBA,GAAQ,GAC3C,IAGI7f,EAHA0L,EAAImU,EAAO,GACXpS,GAAKoS,EAAOnU,GAAK,GACjB2qE,EAAa,WAAe,GAAK3qE,GAAQ,GAAKA,EAGlD,GAAU,IAANA,EAAS,CACX,IAAIw/D,EAAQ,EAEZ,IAAKlrE,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAAK,CAChC,IAAIs2E,EAAW71E,KAAK2oE,MAAMppE,GAAKq2E,EAC3BpsE,GAAsB,EAAhBxJ,KAAK2oE,MAAMppE,IAAUs2E,GAAa5qE,EAC5CjL,KAAK2oE,MAAMppE,GAAKiK,EAAIihE,EACpBA,EAAQoL,IAAc,GAAK5qE,EAGzBw/D,IACFzqE,KAAK2oE,MAAMppE,GAAKkrE,EAChBzqE,KAAKP,UAIT,GAAU,IAANuN,EAAS,CACX,IAAKzN,EAAIS,KAAKP,OAAS,EAAGF,GAAK,EAAGA,IAChCS,KAAK2oE,MAAMppE,EAAIyN,GAAKhN,KAAK2oE,MAAMppE,GAGjC,IAAKA,EAAI,EAAGA,EAAIyN,EAAGzN,IACjBS,KAAK2oE,MAAMppE,GAAK,EAGlBS,KAAKP,QAAUuN,EAGjB,OAAOhN,KAAK+7E,UAGdxT,EAAG3oE,UAAUk2E,MAAQ,SAAgB12D,GAGnC,OADA0C,EAAyB,IAAlB9hB,KAAK0oE,UACL1oE,KAAK21E,OAAOv2D,IAMrBmpD,EAAG3oE,UAAU8rE,OAAS,SAAiBtsD,EAAM22D,EAAMC,GAEjD,IAAItsE,EADJoY,EAAuB,kBAAT1C,GAAqBA,GAAQ,GAGzC1V,EADEqsE,GACGA,EAAQA,EAAO,IAAO,GAEvB,EAGN,IAAI9qE,EAAImU,EAAO,GACXpS,EAAI7B,KAAKkD,KAAK+Q,EAAOnU,GAAK,GAAIjL,KAAKP,QACnCw2E,EAAO,SAAc,WAAchrE,GAAMA,EACzCirE,EAAcF,EAMlB,GAJAtsE,GAAKsD,EACLtD,EAAIyB,KAAK+C,IAAI,EAAGxE,GAGZwsE,EAAa,CACf,IAAK,IAAI32E,EAAI,EAAGA,EAAIyN,EAAGzN,IACrB22E,EAAYvN,MAAMppE,GAAKS,KAAK2oE,MAAMppE,GAEpC22E,EAAYz2E,OAASuN,EAGvB,GAAU,IAANA,QAEG,GAAIhN,KAAKP,OAASuN,EAEvB,IADAhN,KAAKP,QAAUuN,EACVzN,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAC3BS,KAAK2oE,MAAMppE,GAAKS,KAAK2oE,MAAMppE,EAAIyN,QAGjChN,KAAK2oE,MAAM,GAAK,EAChB3oE,KAAKP,OAAS,EAGhB,IAAIgrE,EAAQ,EACZ,IAAKlrE,EAAIS,KAAKP,OAAS,EAAGF,GAAK,IAAgB,IAAVkrE,GAAelrE,GAAKmK,GAAInK,IAAK,CAChE,IAAIsqE,EAAuB,EAAhB7pE,KAAK2oE,MAAMppE,GACtBS,KAAK2oE,MAAMppE,GAAMkrE,GAAU,GAAKx/D,EAAO4+D,IAAS5+D,EAChDw/D,EAAQZ,EAAOoM,EAajB,OATIC,GAAyB,IAAVzL,IACjByL,EAAYvN,MAAMuN,EAAYz2E,UAAYgrE,GAGxB,IAAhBzqE,KAAKP,SACPO,KAAK2oE,MAAM,GAAK,EAChB3oE,KAAKP,OAAS,GAGTO,KAAK+7E,UAGdxT,EAAG3oE,UAAUu2E,MAAQ,SAAgB/2D,EAAM22D,EAAMC,GAG/C,OADAl0D,EAAyB,IAAlB9hB,KAAK0oE,UACL1oE,KAAK0rE,OAAOtsD,EAAM22D,EAAMC,IAIjCzN,EAAG3oE,UAAUw2E,KAAO,SAAeh3D,GACjC,OAAOpf,KAAKgjB,QAAQ8yD,MAAM12D,IAG5BmpD,EAAG3oE,UAAUy2E,MAAQ,SAAgBj3D,GACnC,OAAOpf,KAAKgjB,QAAQ2yD,OAAOv2D,IAI7BmpD,EAAG3oE,UAAU02E,KAAO,SAAel3D,GACjC,OAAOpf,KAAKgjB,QAAQmzD,MAAM/2D,IAG5BmpD,EAAG3oE,UAAU22E,MAAQ,SAAgBn3D,GACnC,OAAOpf,KAAKgjB,QAAQ0oD,OAAOtsD,IAI7BmpD,EAAG3oE,UAAUwsE,MAAQ,SAAgBoB,GACnC1rD,EAAsB,kBAAR0rD,GAAoBA,GAAO,GACzC,IAAIviE,EAAIuiE,EAAM,GACVxgE,GAAKwgE,EAAMviE,GAAK,GAChBD,EAAI,GAAKC,EAGb,QAAIjL,KAAKP,QAAUuN,OAGXhN,KAAK2oE,MAAM37D,GAELhC,IAIhBu9D,EAAG3oE,UAAU42E,OAAS,SAAiBp3D,GACrC0C,EAAuB,kBAAT1C,GAAqBA,GAAQ,GAC3C,IAAInU,EAAImU,EAAO,GACXpS,GAAKoS,EAAOnU,GAAK,GAIrB,GAFA6W,EAAyB,IAAlB9hB,KAAK0oE,SAAgB,2CAExB1oE,KAAKP,QAAUuN,EACjB,OAAOhN,KAQT,GALU,IAANiL,GACF+B,IAEFhN,KAAKP,OAAS0L,KAAKkD,IAAIrB,EAAGhN,KAAKP,QAErB,IAANwL,EAAS,CACX,IAAIgrE,EAAO,SAAc,WAAchrE,GAAMA,EAC7CjL,KAAK2oE,MAAM3oE,KAAKP,OAAS,IAAMw2E,EAGjC,OAAOj2E,KAAK+7E,UAIdxT,EAAG3oE,UAAU62E,MAAQ,SAAgBr3D,GACnC,OAAOpf,KAAKgjB,QAAQwzD,OAAOp3D,IAI7BmpD,EAAG3oE,UAAUssE,MAAQ,SAAgBzoD,GAGnC,OAFA3B,EAAsB,kBAAR2B,GACd3B,EAAO2B,EAAM,UACTA,EAAM,EAAUzjB,KAAK02E,OAAOjzD,GAGV,IAAlBzjB,KAAK0oE,SACa,IAAhB1oE,KAAKP,SAAiC,EAAhBO,KAAK2oE,MAAM,KAAWllD,GAC9CzjB,KAAK2oE,MAAM,GAAKllD,GAAuB,EAAhBzjB,KAAK2oE,MAAM,IAClC3oE,KAAK0oE,SAAW,EACT1oE,OAGTA,KAAK0oE,SAAW,EAChB1oE,KAAK02E,MAAMjzD,GACXzjB,KAAK0oE,SAAW,EACT1oE,MAIFA,KAAK+pE,OAAOtmD,IAGrB8kD,EAAG3oE,UAAUmqE,OAAS,SAAiBtmD,GACrCzjB,KAAK2oE,MAAM,IAAMllD,EAGjB,IAAK,IAAIlkB,EAAI,EAAGA,EAAIS,KAAKP,QAAUO,KAAK2oE,MAAMppE,IAAM,SAAWA,IAC7DS,KAAK2oE,MAAMppE,IAAM,SACbA,IAAMS,KAAKP,OAAS,EACtBO,KAAK2oE,MAAMppE,EAAI,GAAK,EAEpBS,KAAK2oE,MAAMppE,EAAI,KAKnB,OAFAS,KAAKP,OAAS0L,KAAK+C,IAAIlO,KAAKP,OAAQF,EAAI,GAEjCS,MAITuoE,EAAG3oE,UAAU82E,MAAQ,SAAgBjzD,GAGnC,GAFA3B,EAAsB,kBAAR2B,GACd3B,EAAO2B,EAAM,UACTA,EAAM,EAAG,OAAOzjB,KAAKksE,OAAOzoD,GAEhC,GAAsB,IAAlBzjB,KAAK0oE,SAIP,OAHA1oE,KAAK0oE,SAAW,EAChB1oE,KAAKksE,MAAMzoD,GACXzjB,KAAK0oE,SAAW,EACT1oE,KAKT,GAFAA,KAAK2oE,MAAM,IAAMllD,EAEG,IAAhBzjB,KAAKP,QAAgBO,KAAK2oE,MAAM,GAAK,EACvC3oE,KAAK2oE,MAAM,IAAM3oE,KAAK2oE,MAAM,GAC5B3oE,KAAK0oE,SAAW,OAGhB,IAAK,IAAInpE,EAAI,EAAGA,EAAIS,KAAKP,QAAUO,KAAK2oE,MAAMppE,GAAK,EAAGA,IACpDS,KAAK2oE,MAAMppE,IAAM,SACjBS,KAAK2oE,MAAMppE,EAAI,IAAM,EAIzB,OAAOS,KAAK+7E,UAGdxT,EAAG3oE,UAAU+2E,KAAO,SAAelzD,GACjC,OAAOzjB,KAAKgjB,QAAQkpD,MAAMzoD,IAG5B8kD,EAAG3oE,UAAUg3E,KAAO,SAAenzD,GACjC,OAAOzjB,KAAKgjB,QAAQ0zD,MAAMjzD,IAG5B8kD,EAAG3oE,UAAUi3E,KAAO,WAGlB,OAFA72E,KAAK0oE,SAAW,EAET1oE,MAGTuoE,EAAG3oE,UAAU8N,IAAM,WACjB,OAAO1N,KAAKgjB,QAAQ6zD,QAGtBtO,EAAG3oE,UAAUk3E,aAAe,SAAuBrzD,EAAKylD,EAAKj3C,GAC3D,IACI1yB,EAIA+O,EALAnM,EAAMshB,EAAIhkB,OAASwyB,EAGvBjyB,KAAKiqE,QAAQ9nE,GAGb,IAAIsoE,EAAQ,EACZ,IAAKlrE,EAAI,EAAGA,EAAIkkB,EAAIhkB,OAAQF,IAAK,CAC/B+O,GAA6B,EAAxBtO,KAAK2oE,MAAMppE,EAAI0yB,IAAcw4C,EAClC,IAAIvoC,GAAwB,EAAfze,EAAIklD,MAAMppE,IAAU2pE,EAEjCuB,IADAn8D,GAAa,SAAR4zB,IACS,KAAQA,EAAQ,SAAa,GAC3CliC,KAAK2oE,MAAMppE,EAAI0yB,GAAa,SAAJ3jB,EAE1B,KAAO/O,EAAIS,KAAKP,OAASwyB,EAAO1yB,IAE9BkrE,GADAn8D,GAA6B,EAAxBtO,KAAK2oE,MAAMppE,EAAI0yB,IAAcw4C,IACrB,GACbzqE,KAAK2oE,MAAMppE,EAAI0yB,GAAa,SAAJ3jB,EAG1B,GAAc,IAAVm8D,EAAa,OAAOzqE,KAAK+7E,SAK7B,IAFAj6D,GAAkB,IAAX2oD,GACPA,EAAQ,EACHlrE,EAAI,EAAGA,EAAIS,KAAKP,OAAQF,IAE3BkrE,GADAn8D,IAAsB,EAAhBtO,KAAK2oE,MAAMppE,IAAUkrE,IACd,GACbzqE,KAAK2oE,MAAMppE,GAAS,SAAJ+O,EAIlB,OAFAtO,KAAK0oE,SAAW,EAET1oE,KAAK+7E,UAGdxT,EAAG3oE,UAAUm3E,SAAW,SAAmBtzD,EAAKpS,GAC9C,IAAI4gB,GAAQjyB,KAAKP,OAASgkB,EAAIhkB,QAE1B8J,EAAIvJ,KAAKgjB,QACT1Y,EAAImZ,EAGJuzD,EAA8B,EAAxB1sE,EAAEq+D,MAAMr+D,EAAE7K,OAAS,GAGf,KADdwyB,EAAQ,GADMjyB,KAAK4rE,WAAWoL,MAG5B1sE,EAAIA,EAAE+rE,MAAMpkD,GACZ1oB,EAAEosE,OAAO1jD,GACT+kD,EAA8B,EAAxB1sE,EAAEq+D,MAAMr+D,EAAE7K,OAAS,IAI3B,IACIuL,EADAZ,EAAIb,EAAE9J,OAAS6K,EAAE7K,OAGrB,GAAa,QAAT4R,EAAgB,EAClBrG,EAAI,IAAIu9D,EAAG,OACT9oE,OAAS2K,EAAI,EACfY,EAAE29D,MAAQ,IAAItmE,MAAM2I,EAAEvL,QACtB,IAAK,IAAIF,EAAI,EAAGA,EAAIyL,EAAEvL,OAAQF,IAC5ByL,EAAE29D,MAAMppE,GAAK,EAIjB,IAAIqwB,EAAOrmB,EAAEyZ,QAAQ8zD,aAAaxsE,EAAG,EAAGF,GAClB,IAAlBwlB,EAAK84C,WACPn/D,EAAIqmB,EACA5kB,IACFA,EAAE29D,MAAMv+D,GAAK,IAIjB,IAAK,IAAIX,EAAIW,EAAI,EAAGX,GAAK,EAAGA,IAAK,CAC/B,IAAIwtE,EAAmC,UAAL,EAAxB1tE,EAAEo/D,MAAMr+D,EAAE7K,OAASgK,KACE,EAA5BF,EAAEo/D,MAAMr+D,EAAE7K,OAASgK,EAAI,IAO1B,IAHAwtE,EAAK9rE,KAAKkD,IAAK4oE,EAAKD,EAAO,EAAG,UAE9BztE,EAAEutE,aAAaxsE,EAAG2sE,EAAIxtE,GACA,IAAfF,EAAEm/D,UACPuO,IACA1tE,EAAEm/D,SAAW,EACbn/D,EAAEutE,aAAaxsE,EAAG,EAAGb,GAChBF,EAAEwhE,WACLxhE,EAAEm/D,UAAY,GAGd19D,IACFA,EAAE29D,MAAMl/D,GAAKwtE,GAajB,OAVIjsE,GACFA,EAAE+wE,SAEJxyE,EAAEwyE,SAGW,QAAT1qE,GAA4B,IAAV4gB,GACpB1oB,EAAEmiE,OAAOz5C,GAGJ,CACLilD,IAAKlsE,GAAK,KACVkC,IAAK3D,IAQTg/D,EAAG3oE,UAAUu3E,OAAS,SAAiB1zD,EAAKpS,EAAM+lE,GAGhD,OAFAt1D,GAAQ2B,EAAIsnD,UAER/qE,KAAK+qE,SACA,CACLmM,IAAK,IAAI3O,EAAG,GACZr7D,IAAK,IAAIq7D,EAAG,IAKM,IAAlBvoE,KAAK0oE,UAAmC,IAAjBjlD,EAAIilD,UAC7BpnD,EAAMthB,KAAKwsE,MAAM2K,OAAO1zD,EAAKpS,GAEhB,QAATA,IACF6lE,EAAM51D,EAAI41D,IAAI1K,OAGH,QAATn7D,IACFnE,EAAMoU,EAAIpU,IAAIs/D,MACV4K,GAA6B,IAAjBlqE,EAAIw7D,UAClBx7D,EAAIwgE,KAAKjqD,IAIN,CACLyzD,IAAKA,EACLhqE,IAAKA,IAIa,IAAlBlN,KAAK0oE,UAAmC,IAAjBjlD,EAAIilD,UAC7BpnD,EAAMthB,KAAKm3E,OAAO1zD,EAAI+oD,MAAOn7D,GAEhB,QAATA,IACF6lE,EAAM51D,EAAI41D,IAAI1K,OAGT,CACL0K,IAAKA,EACLhqE,IAAKoU,EAAIpU,MAI0B,KAAlClN,KAAK0oE,SAAWjlD,EAAIilD,WACvBpnD,EAAMthB,KAAKwsE,MAAM2K,OAAO1zD,EAAI+oD,MAAOn7D,GAEtB,QAATA,IACFnE,EAAMoU,EAAIpU,IAAIs/D,MACV4K,GAA6B,IAAjBlqE,EAAIw7D,UAClBx7D,EAAIygE,KAAKlqD,IAIN,CACLyzD,IAAK51D,EAAI41D,IACThqE,IAAKA,IAOLuW,EAAIhkB,OAASO,KAAKP,QAAUO,KAAKmpE,IAAI1lD,GAAO,EACvC,CACLyzD,IAAK,IAAI3O,EAAG,GACZr7D,IAAKlN,MAKU,IAAfyjB,EAAIhkB,OACO,QAAT4R,EACK,CACL6lE,IAAKl3E,KAAKq3E,KAAK5zD,EAAIklD,MAAM,IACzBz7D,IAAK,MAII,QAATmE,EACK,CACL6lE,IAAK,KACLhqE,IAAK,IAAIq7D,EAAGvoE,KAAKwnF,MAAM/jE,EAAIklD,MAAM,MAI9B,CACLuO,IAAKl3E,KAAKq3E,KAAK5zD,EAAIklD,MAAM,IACzBz7D,IAAK,IAAIq7D,EAAGvoE,KAAKwnF,MAAM/jE,EAAIklD,MAAM,MAI9B3oE,KAAK+2E,SAAStzD,EAAKpS,GAlF1B,IAAI6lE,EAAKhqE,EAAKoU,GAsFhBinD,EAAG3oE,UAAUs3E,IAAM,SAAczzD,GAC/B,OAAOzjB,KAAKm3E,OAAO1zD,EAAK,OAAO,GAAOyzD,KAIxC3O,EAAG3oE,UAAUsN,IAAM,SAAcuW,GAC/B,OAAOzjB,KAAKm3E,OAAO1zD,EAAK,OAAO,GAAOvW,KAGxCq7D,EAAG3oE,UAAU03E,KAAO,SAAe7zD,GACjC,OAAOzjB,KAAKm3E,OAAO1zD,EAAK,OAAO,GAAMvW,KAIvCq7D,EAAG3oE,UAAU23E,SAAW,SAAmB9zD,GACzC,IAAI+zD,EAAKx3E,KAAKm3E,OAAO1zD,GAGrB,GAAI+zD,EAAGtqE,IAAI69D,SAAU,OAAOyM,EAAGN,IAE/B,IAAIhqE,EAA0B,IAApBsqE,EAAGN,IAAIxO,SAAiB8O,EAAGtqE,IAAIygE,KAAKlqD,GAAO+zD,EAAGtqE,IAEpDuqE,EAAOh0D,EAAI8yD,MAAM,GACjBmB,EAAKj0D,EAAIgoD,MAAM,GACftC,EAAMj8D,EAAIi8D,IAAIsO,GAGlB,OAAItO,EAAM,GAAa,IAAPuO,GAAoB,IAARvO,EAAmBqO,EAAGN,IAGvB,IAApBM,EAAGN,IAAIxO,SAAiB8O,EAAGN,IAAIR,MAAM,GAAKc,EAAGN,IAAIhL,MAAM,IAGhE3D,EAAG3oE,UAAU4nF,MAAQ,SAAgB/jE,GACnC,IAAImkE,EAAWnkE,EAAM,EACjBmkE,IAAUnkE,GAAOA,GAErB3B,EAAO2B,GAAO,UAId,IAHA,IAAIvY,GAAK,GAAK,IAAMuY,EAEhB6O,EAAM,EACD/yB,EAAIS,KAAKP,OAAS,EAAGF,GAAK,EAAGA,IACpC+yB,GAAOpnB,EAAIonB,GAAuB,EAAhBtyB,KAAK2oE,MAAMppE,KAAWkkB,EAG1C,OAAOmkE,GAAYt1D,EAAMA,GAI3Bi2C,EAAG3oE,UAAUorE,KAAO,SAAevnD,GACjC,OAAOzjB,KAAKwnF,MAAM/jE,IAIpB8kD,EAAG3oE,UAAUqrE,MAAQ,SAAgBxnD,GACnC,IAAImkE,EAAWnkE,EAAM,EACjBmkE,IAAUnkE,GAAOA,GAErB3B,EAAO2B,GAAO,UAGd,IADA,IAAIgnD,EAAQ,EACHlrE,EAAIS,KAAKP,OAAS,EAAGF,GAAK,EAAGA,IAAK,CACzC,IAAI+O,GAAqB,EAAhBtO,KAAK2oE,MAAMppE,IAAkB,SAARkrE,EAC9BzqE,KAAK2oE,MAAMppE,GAAM+O,EAAImV,EAAO,EAC5BgnD,EAAQn8D,EAAImV,EAId,OADAzjB,KAAK+7E,SACE6L,EAAW5nF,KAAKssE,OAAStsE,MAGlCuoE,EAAG3oE,UAAUy3E,KAAO,SAAe5zD,GACjC,OAAOzjB,KAAKgjB,QAAQioD,MAAMxnD,IAG5B8kD,EAAG3oE,UAAU+3E,KAAO,SAAezsE,GACjC4W,EAAsB,IAAf5W,EAAEw9D,UACT5mD,GAAQ5W,EAAE6/D,UAEV,IAAIr8D,EAAI1O,KACJ8R,EAAI5G,EAAE8X,QAGRtU,EADiB,IAAfA,EAAEg6D,SACAh6D,EAAE4oE,KAAKpsE,GAEPwD,EAAEsU,QAaR,IATA,IAAIxU,EAAI,IAAI+5D,EAAG,GACXn1D,EAAI,IAAIm1D,EAAG,GAGX11D,EAAI,IAAI01D,EAAG,GACXh1D,EAAI,IAAIg1D,EAAG,GAEXn/D,EAAI,EAEDsF,EAAEG,UAAYiD,EAAEjD,UACrBH,EAAEg9D,OAAO,GACT55D,EAAE45D,OAAO,KACPtiE,EAMJ,IAHA,IAAIwuE,EAAK9lE,EAAEkR,QACP60D,EAAKnpE,EAAEsU,SAEHtU,EAAEq8D,UAAU,CAClB,IAAK,IAAIxrE,EAAI,EAAGu4E,EAAK,EAAyB,KAArBppE,EAAEi6D,MAAM,GAAKmP,IAAav4E,EAAI,KAAMA,EAAGu4E,IAAO,GACvE,GAAIv4E,EAAI,EAEN,IADAmP,EAAEg9D,OAAOnsE,GACFA,KAAM,IACPiP,EAAEupE,SAAW3kE,EAAE2kE,WACjBvpE,EAAEk/D,KAAKkK,GACPxkE,EAAEu6D,KAAKkK,IAGTrpE,EAAEk9D,OAAO,GACTt4D,EAAEs4D,OAAO,GAIb,IAAK,IAAIjiE,EAAI,EAAGuuE,EAAK,EAAyB,KAArBlmE,EAAE62D,MAAM,GAAKqP,IAAavuE,EAAI,KAAMA,EAAGuuE,IAAO,GACvE,GAAIvuE,EAAI,EAEN,IADAqI,EAAE45D,OAAOjiE,GACFA,KAAM,IACPoJ,EAAEklE,SAAWxkE,EAAEwkE,WACjBllE,EAAE66D,KAAKkK,GACPrkE,EAAEo6D,KAAKkK,IAGThlE,EAAE64D,OAAO,GACTn4D,EAAEm4D,OAAO,GAITh9D,EAAEy6D,IAAIr3D,IAAM,GACdpD,EAAEi/D,KAAK77D,GACPtD,EAAEm/D,KAAK96D,GACPO,EAAEu6D,KAAKp6D,KAEPzB,EAAE67D,KAAKj/D,GACPmE,EAAE86D,KAAKn/D,GACP+E,EAAEo6D,KAAKv6D,IAIX,MAAO,CACL7J,EAAGsJ,EACHvI,EAAGiJ,EACH0kE,IAAKnmE,EAAE6jE,OAAOvsE,KAOlBm/D,EAAG3oE,UAAUs4E,OAAS,SAAiBhtE,GACrC4W,EAAsB,IAAf5W,EAAEw9D,UACT5mD,GAAQ5W,EAAE6/D,UAEV,IAAIxhE,EAAIvJ,KACJsK,EAAIY,EAAE8X,QAGRzZ,EADiB,IAAfA,EAAEm/D,SACAn/D,EAAE+tE,KAAKpsE,GAEP3B,EAAEyZ,QAQR,IALA,IAuCI1B,EAvCA62D,EAAK,IAAI5P,EAAG,GACZ6P,EAAK,IAAI7P,EAAG,GAEZrV,EAAQ5oD,EAAE0Y,QAEPzZ,EAAE8uE,KAAK,GAAK,GAAK/tE,EAAE+tE,KAAK,GAAK,GAAG,CACrC,IAAK,IAAI94E,EAAI,EAAGu4E,EAAK,EAAyB,KAArBvuE,EAAEo/D,MAAM,GAAKmP,IAAav4E,EAAI,KAAMA,EAAGu4E,IAAO,GACvE,GAAIv4E,EAAI,EAEN,IADAgK,EAAEmiE,OAAOnsE,GACFA,KAAM,GACP44E,EAAGJ,SACLI,EAAGzK,KAAKxa,GAGVilB,EAAGzM,OAAO,GAId,IAAK,IAAIjiE,EAAI,EAAGuuE,EAAK,EAAyB,KAArB1tE,EAAEq+D,MAAM,GAAKqP,IAAavuE,EAAI,KAAMA,EAAGuuE,IAAO,GACvE,GAAIvuE,EAAI,EAEN,IADAa,EAAEohE,OAAOjiE,GACFA,KAAM,GACP2uE,EAAGL,SACLK,EAAG1K,KAAKxa,GAGVklB,EAAG1M,OAAO,GAIVniE,EAAE4/D,IAAI7+D,IAAM,GACdf,EAAEokE,KAAKrjE,GACP6tE,EAAGxK,KAAKyK,KAER9tE,EAAEqjE,KAAKpkE,GACP6uE,EAAGzK,KAAKwK,IAeZ,OATE72D,EADgB,IAAd/X,EAAE8uE,KAAK,GACHF,EAEAC,GAGAC,KAAK,GAAK,GAChB/2D,EAAIosD,KAAKxiE,GAGJoW,GAGTinD,EAAG3oE,UAAUq4E,IAAM,SAAcx0D,GAC/B,GAAIzjB,KAAK+qE,SAAU,OAAOtnD,EAAI/V,MAC9B,GAAI+V,EAAIsnD,SAAU,OAAO/qE,KAAK0N,MAE9B,IAAInE,EAAIvJ,KAAKgjB,QACT1Y,EAAImZ,EAAIT,QACZzZ,EAAEm/D,SAAW,EACbp+D,EAAEo+D,SAAW,EAGb,IAAK,IAAIz2C,EAAQ,EAAG1oB,EAAEsF,UAAYvE,EAAEuE,SAAUojB,IAC5C1oB,EAAEmiE,OAAO,GACTphE,EAAEohE,OAAO,GAGX,OAAG,CACD,KAAOniE,EAAEsF,UACPtF,EAAEmiE,OAAO,GAEX,KAAOphE,EAAEuE,UACPvE,EAAEohE,OAAO,GAGX,IAAIzgE,EAAI1B,EAAE4/D,IAAI7+D,GACd,GAAIW,EAAI,EAAG,CAET,IAAI2B,EAAIrD,EACRA,EAAIe,EACJA,EAAIsC,OACC,GAAU,IAAN3B,GAAyB,IAAdX,EAAE+tE,KAAK,GAC3B,MAGF9uE,EAAEokE,KAAKrjE,GAGT,OAAOA,EAAEqrE,OAAO1jD,IAIlBs2C,EAAG3oE,UAAU04E,KAAO,SAAe70D,GACjC,OAAOzjB,KAAK23E,KAAKl0D,GAAKla,EAAE+tE,KAAK7zD,IAG/B8kD,EAAG3oE,UAAUiP,OAAS,WACpB,OAA+B,KAAP,EAAhB7O,KAAK2oE,MAAM,KAGrBJ,EAAG3oE,UAAUm4E,MAAQ,WACnB,OAA+B,KAAP,EAAhB/3E,KAAK2oE,MAAM,KAIrBJ,EAAG3oE,UAAU6rE,MAAQ,SAAgBhoD,GACnC,OAAOzjB,KAAK2oE,MAAM,GAAKllD,GAIzB8kD,EAAG3oE,UAAU24E,MAAQ,SAAgB/K,GACnC1rD,EAAsB,kBAAR0rD,GACd,IAAIviE,EAAIuiE,EAAM,GACVxgE,GAAKwgE,EAAMviE,GAAK,GAChBD,EAAI,GAAKC,EAGb,GAAIjL,KAAKP,QAAUuN,EAGjB,OAFAhN,KAAKiqE,QAAQj9D,EAAI,GACjBhN,KAAK2oE,MAAM37D,IAAMhC,EACVhL,KAKT,IADA,IAAIyqE,EAAQz/D,EACHzL,EAAIyN,EAAa,IAAVy9D,GAAelrE,EAAIS,KAAKP,OAAQF,IAAK,CACnD,IAAI+O,EAAoB,EAAhBtO,KAAK2oE,MAAMppE,GAEnBkrE,GADAn8D,GAAKm8D,KACS,GACdn8D,GAAK,SACLtO,KAAK2oE,MAAMppE,GAAK+O,EAMlB,OAJc,IAAVm8D,IACFzqE,KAAK2oE,MAAMppE,GAAKkrE,EAChBzqE,KAAKP,UAEAO,MAGTuoE,EAAG3oE,UAAUmrE,OAAS,WACpB,OAAuB,IAAhB/qE,KAAKP,QAAkC,IAAlBO,KAAK2oE,MAAM,IAGzCJ,EAAG3oE,UAAUy4E,KAAO,SAAe50D,GACjC,IAOInC,EAPAonD,EAAWjlD,EAAM,EAErB,GAAsB,IAAlBzjB,KAAK0oE,WAAmBA,EAAU,OAAQ,EAC9C,GAAsB,IAAlB1oE,KAAK0oE,UAAkBA,EAAU,OAAO,EAK5C,GAHA1oE,KAAK+7E,SAGD/7E,KAAKP,OAAS,EAChB6hB,EAAM,MACD,CACDonD,IACFjlD,GAAOA,GAGT3B,EAAO2B,GAAO,SAAW,qBAEzB,IAAInV,EAAoB,EAAhBtO,KAAK2oE,MAAM,GACnBrnD,EAAMhT,IAAMmV,EAAM,EAAInV,EAAImV,GAAO,EAAI,EAEvC,OAAsB,IAAlBzjB,KAAK0oE,SAA8B,GAANpnD,EAC1BA,GAOTinD,EAAG3oE,UAAUupE,IAAM,SAAc1lD,GAC/B,GAAsB,IAAlBzjB,KAAK0oE,UAAmC,IAAjBjlD,EAAIilD,SAAgB,OAAQ,EACvD,GAAsB,IAAlB1oE,KAAK0oE,UAAmC,IAAjBjlD,EAAIilD,SAAgB,OAAO,EAEtD,IAAIpnD,EAAMthB,KAAKw4E,KAAK/0D,GACpB,OAAsB,IAAlBzjB,KAAK0oE,SAA8B,GAANpnD,EAC1BA,GAITinD,EAAG3oE,UAAU44E,KAAO,SAAe/0D,GAEjC,GAAIzjB,KAAKP,OAASgkB,EAAIhkB,OAAQ,OAAO,EACrC,GAAIO,KAAKP,OAASgkB,EAAIhkB,OAAQ,OAAQ,EAGtC,IADA,IAAI6hB,EAAM,EACD/hB,EAAIS,KAAKP,OAAS,EAAGF,GAAK,EAAGA,IAAK,CACzC,IAAIgK,EAAoB,EAAhBvJ,KAAK2oE,MAAMppE,GACf+K,EAAmB,EAAfmZ,EAAIklD,MAAMppE,GAElB,GAAIgK,IAAMe,EAAV,CACIf,EAAIe,EACNgX,GAAO,EACE/X,EAAIe,IACbgX,EAAM,GAER,OAEF,OAAOA,GAGTinD,EAAG3oE,UAAU64E,IAAM,SAAch1D,GAC/B,OAA0B,IAAnBzjB,KAAKq4E,KAAK50D,IAGnB8kD,EAAG3oE,UAAU84E,GAAK,SAAaj1D,GAC7B,OAAyB,IAAlBzjB,KAAKmpE,IAAI1lD,IAGlB8kD,EAAG3oE,UAAU+4E,KAAO,SAAel1D,GACjC,OAAOzjB,KAAKq4E,KAAK50D,IAAQ,GAG3B8kD,EAAG3oE,UAAUg5E,IAAM,SAAcn1D,GAC/B,OAAOzjB,KAAKmpE,IAAI1lD,IAAQ,GAG1B8kD,EAAG3oE,UAAUi5E,IAAM,SAAcp1D,GAC/B,OAA2B,IAApBzjB,KAAKq4E,KAAK50D,IAGnB8kD,EAAG3oE,UAAUk5E,GAAK,SAAar1D,GAC7B,OAA0B,IAAnBzjB,KAAKmpE,IAAI1lD,IAGlB8kD,EAAG3oE,UAAUm5E,KAAO,SAAet1D,GACjC,OAAOzjB,KAAKq4E,KAAK50D,IAAQ,GAG3B8kD,EAAG3oE,UAAUo5E,IAAM,SAAcv1D,GAC/B,OAAOzjB,KAAKmpE,IAAI1lD,IAAQ,GAG1B8kD,EAAG3oE,UAAUq5E,IAAM,SAAcx1D,GAC/B,OAA0B,IAAnBzjB,KAAKq4E,KAAK50D,IAGnB8kD,EAAG3oE,UAAUs5E,GAAK,SAAaz1D,GAC7B,OAAyB,IAAlBzjB,KAAKmpE,IAAI1lD,IAOlB8kD,EAAGK,IAAM,SAAcnlD,GACrB,OAAO,IAAI01D,EAAI11D,IAGjB8kD,EAAG3oE,UAAUw5E,MAAQ,SAAgBC,GAGnC,OAFAv3D,GAAQ9hB,KAAK4oE,IAAK,yCAClB9mD,EAAyB,IAAlB9hB,KAAK0oE,SAAgB,iCACrB2Q,EAAIC,UAAUt5E,MAAMu5E,UAAUF,IAGvC9Q,EAAG3oE,UAAU45E,QAAU,WAErB,OADA13D,EAAO9hB,KAAK4oE,IAAK,wDACV5oE,KAAK4oE,IAAI6Q,YAAYz5E,OAG9BuoE,EAAG3oE,UAAU25E,UAAY,SAAoBF,GAE3C,OADAr5E,KAAK4oE,IAAMyQ,EACJr5E,MAGTuoE,EAAG3oE,UAAU85E,SAAW,SAAmBL,GAEzC,OADAv3D,GAAQ9hB,KAAK4oE,IAAK,yCACX5oE,KAAKu5E,UAAUF,IAGxB9Q,EAAG3oE,UAAU+5E,OAAS,SAAiBl2D,GAErC,OADA3B,EAAO9hB,KAAK4oE,IAAK,sCACV5oE,KAAK4oE,IAAI/yB,IAAI71C,KAAMyjB,IAG5B8kD,EAAG3oE,UAAUg6E,QAAU,SAAkBn2D,GAEvC,OADA3B,EAAO9hB,KAAK4oE,IAAK,uCACV5oE,KAAK4oE,IAAI8E,KAAK1tE,KAAMyjB,IAG7B8kD,EAAG3oE,UAAUi6E,OAAS,SAAiBp2D,GAErC,OADA3B,EAAO9hB,KAAK4oE,IAAK,sCACV5oE,KAAK4oE,IAAIgF,IAAI5tE,KAAMyjB,IAG5B8kD,EAAG3oE,UAAUk6E,QAAU,SAAkBr2D,GAEvC,OADA3B,EAAO9hB,KAAK4oE,IAAK,uCACV5oE,KAAK4oE,IAAI+E,KAAK3tE,KAAMyjB,IAG7B8kD,EAAG3oE,UAAUm6E,OAAS,SAAiBt2D,GAErC,OADA3B,EAAO9hB,KAAK4oE,IAAK,sCACV5oE,KAAK4oE,IAAIoR,IAAIh6E,KAAMyjB,IAG5B8kD,EAAG3oE,UAAUq6E,OAAS,SAAiBx2D,GAGrC,OAFA3B,EAAO9hB,KAAK4oE,IAAK,sCACjB5oE,KAAK4oE,IAAIsR,SAASl6E,KAAMyjB,GACjBzjB,KAAK4oE,IAAIM,IAAIlpE,KAAMyjB,IAG5B8kD,EAAG3oE,UAAUu6E,QAAU,SAAkB12D,GAGvC,OAFA3B,EAAO9hB,KAAK4oE,IAAK,sCACjB5oE,KAAK4oE,IAAIsR,SAASl6E,KAAMyjB,GACjBzjB,KAAK4oE,IAAIgJ,KAAK5xE,KAAMyjB,IAG7B8kD,EAAG3oE,UAAUw6E,OAAS,WAGpB,OAFAt4D,EAAO9hB,KAAK4oE,IAAK,sCACjB5oE,KAAK4oE,IAAIyR,SAASr6E,MACXA,KAAK4oE,IAAI4M,IAAIx1E,OAGtBuoE,EAAG3oE,UAAU06E,QAAU,WAGrB,OAFAx4D,EAAO9hB,KAAK4oE,IAAK,uCACjB5oE,KAAK4oE,IAAIyR,SAASr6E,MACXA,KAAK4oE,IAAI6M,KAAKz1E,OAIvBuoE,EAAG3oE,UAAU26E,QAAU,WAGrB,OAFAz4D,EAAO9hB,KAAK4oE,IAAK,uCACjB5oE,KAAK4oE,IAAIyR,SAASr6E,MACXA,KAAK4oE,IAAIthC,KAAKtnC,OAGvBuoE,EAAG3oE,UAAU46E,QAAU,WAGrB,OAFA14D,EAAO9hB,KAAK4oE,IAAK,uCACjB5oE,KAAK4oE,IAAIyR,SAASr6E,MACXA,KAAK4oE,IAAI0P,KAAKt4E,OAIvBuoE,EAAG3oE,UAAU66E,OAAS,WAGpB,OAFA34D,EAAO9hB,KAAK4oE,IAAK,sCACjB5oE,KAAK4oE,IAAIyR,SAASr6E,MACXA,KAAK4oE,IAAI4D,IAAIxsE,OAGtBuoE,EAAG3oE,UAAU86E,OAAS,SAAiBj3D,GAGrC,OAFA3B,EAAO9hB,KAAK4oE,MAAQnlD,EAAImlD,IAAK,qBAC7B5oE,KAAK4oE,IAAIyR,SAASr6E,MACXA,KAAK4oE,IAAIn9D,IAAIzL,KAAMyjB,IAI5B,IAAIk3D,EAAS,CACXC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,MAIV,SAASC,EAAQ93E,EAAMgI,GAErBlL,KAAKkD,KAAOA,EACZlD,KAAKkL,EAAI,IAAIq9D,EAAGr9D,EAAG,IACnBlL,KAAK8C,EAAI9C,KAAKkL,EAAE+D,YAChBjP,KAAKmK,EAAI,IAAIo+D,EAAG,GAAGoN,OAAO31E,KAAK8C,GAAG6qE,KAAK3tE,KAAKkL,GAE5ClL,KAAKmpB,IAAMnpB,KAAKi7E,OAiDlB,SAASC,IACPF,EAAOl7E,KACLE,KACA,OACA,2EA+DJ,SAASm7E,IACPH,EAAOl7E,KACLE,KACA,OACA,kEAIJ,SAASo7E,IACPJ,EAAOl7E,KACLE,KACA,OACA,yDAIJ,SAASq7E,IAEPL,EAAOl7E,KACLE,KACA,QACA,uEA8CJ,SAASm5E,EAAK/uE,GACZ,GAAiB,kBAANA,EAAgB,CACzB,IAAIkxE,EAAQ/S,EAAGgT,OAAOnxE,GACtBpK,KAAKoK,EAAIkxE,EAAMpwE,EACflL,KAAKs7E,MAAQA,OAEbx5D,EAAO1X,EAAEquE,IAAI,GAAI,kCACjBz4E,KAAKoK,EAAIA,EACTpK,KAAKs7E,MAAQ,KAoOjB,SAASE,EAAMpxE,GACb+uE,EAAIr5E,KAAKE,KAAMoK,GAEfpK,KAAKiyB,MAAQjyB,KAAKoK,EAAE6E,YAChBjP,KAAKiyB,MAAQ,KAAO,IACtBjyB,KAAKiyB,OAAS,GAAMjyB,KAAKiyB,MAAQ,IAGnCjyB,KAAKiL,EAAI,IAAIs9D,EAAG,GAAGoN,OAAO31E,KAAKiyB,OAC/BjyB,KAAK03E,GAAK13E,KAAKy7E,KAAKz7E,KAAKiL,EAAEuqE,OAC3Bx1E,KAAK07E,KAAO17E,KAAKiL,EAAEitE,OAAOl4E,KAAKoK,GAE/BpK,KAAK27E,KAAO37E,KAAK07E,KAAKxS,IAAIlpE,KAAKiL,GAAGyrE,MAAM,GAAGQ,IAAIl3E,KAAKoK,GACpDpK,KAAK27E,KAAO37E,KAAK27E,KAAKrE,KAAKt3E,KAAKiL,GAChCjL,KAAK27E,KAAO37E,KAAKiL,EAAE2iE,IAAI5tE,KAAK27E,MA9a9BX,EAAOp7E,UAAUq7E,KAAO,WACtB,IAAI9xD,EAAM,IAAIo/C,EAAG,MAEjB,OADAp/C,EAAIw/C,MAAQ,IAAItmE,MAAM8I,KAAK0I,KAAK7T,KAAK8C,EAAI,KAClCqmB,GAGT6xD,EAAOp7E,UAAUg8E,QAAU,SAAkBn4D,GAG3C,IACIo4D,EADA5wE,EAAIwY,EAGR,GACEzjB,KAAKyZ,MAAMxO,EAAGjL,KAAKmpB,KAGnB0yD,GADA5wE,GADAA,EAAIjL,KAAK87E,MAAM7wE,IACTyiE,KAAK1tE,KAAKmpB,MACPla,kBACF4sE,EAAO77E,KAAK8C,GAErB,IAAIqmE,EAAM0S,EAAO77E,KAAK8C,GAAK,EAAImI,EAAEutE,KAAKx4E,KAAKkL,GAgB3C,OAfY,IAARi+D,GACFl+D,EAAE09D,MAAM,GAAK,EACb19D,EAAExL,OAAS,GACF0pE,EAAM,EACfl+D,EAAE0iE,KAAK3tE,KAAKkL,QAEIya,IAAZ1a,EAAEw+D,MAEJx+D,EAAEw+D,QAGFx+D,EAAE8wE,SAIC9wE,GAGT+vE,EAAOp7E,UAAU6Z,MAAQ,SAAgBmK,EAAOnC,GAC9CmC,EAAM8nD,OAAO1rE,KAAK8C,EAAG,EAAG2e,IAG1Bu5D,EAAOp7E,UAAUk8E,MAAQ,SAAgBr4D,GACvC,OAAOA,EAAImuD,KAAK5xE,KAAKmK,IASvB0V,EAASq7D,EAAMF,GAEfE,EAAKt7E,UAAU6Z,MAAQ,SAAgBmK,EAAOqjD,GAK5C,IAHA,IAAIgP,EAAO,QAEP+F,EAAS7wE,KAAKkD,IAAIuV,EAAMnkB,OAAQ,GAC3BF,EAAI,EAAGA,EAAIy8E,EAAQz8E,IAC1B0nE,EAAO0B,MAAMppE,GAAKqkB,EAAM+kD,MAAMppE,GAIhC,GAFA0nE,EAAOxnE,OAASu8E,EAEZp4D,EAAMnkB,QAAU,EAGlB,OAFAmkB,EAAM+kD,MAAM,GAAK,OACjB/kD,EAAMnkB,OAAS,GAKjB,IAAIwnB,EAAOrD,EAAM+kD,MAAM,GAGvB,IAFA1B,EAAO0B,MAAM1B,EAAOxnE,UAAYwnB,EAAOgvD,EAElC12E,EAAI,GAAIA,EAAIqkB,EAAMnkB,OAAQF,IAAK,CAClC,IAAIkE,EAAwB,EAAjBmgB,EAAM+kD,MAAMppE,GACvBqkB,EAAM+kD,MAAMppE,EAAI,KAAQkE,EAAOwyE,IAAS,EAAMhvD,IAAS,GACvDA,EAAOxjB,EAETwjB,KAAU,GACVrD,EAAM+kD,MAAMppE,EAAI,IAAM0nB,EACT,IAATA,GAAcrD,EAAMnkB,OAAS,GAC/BmkB,EAAMnkB,QAAU,GAEhBmkB,EAAMnkB,QAAU,GAIpBy7E,EAAKt7E,UAAUk8E,MAAQ,SAAgBr4D,GAErCA,EAAIklD,MAAMllD,EAAIhkB,QAAU,EACxBgkB,EAAIklD,MAAMllD,EAAIhkB,OAAS,GAAK,EAC5BgkB,EAAIhkB,QAAU,EAId,IADA,IAAI+qE,EAAK,EACAjrE,EAAI,EAAGA,EAAIkkB,EAAIhkB,OAAQF,IAAK,CACnC,IAAI+O,EAAmB,EAAfmV,EAAIklD,MAAMppE,GAClBirE,GAAU,IAAJl8D,EACNmV,EAAIklD,MAAMppE,GAAU,SAALirE,EACfA,EAAS,GAAJl8D,GAAak8D,EAAK,SAAa,GAUtC,OANkC,IAA9B/mD,EAAIklD,MAAMllD,EAAIhkB,OAAS,KACzBgkB,EAAIhkB,SAC8B,IAA9BgkB,EAAIklD,MAAMllD,EAAIhkB,OAAS,IACzBgkB,EAAIhkB,UAGDgkB,GAST5D,EAASs7D,EAAMH,GAQfn7D,EAASu7D,EAAMJ,GASfn7D,EAASw7D,EAAQL,GAEjBK,EAAOz7E,UAAUk8E,MAAQ,SAAgBr4D,GAGvC,IADA,IAAIgnD,EAAQ,EACHlrE,EAAI,EAAGA,EAAIkkB,EAAIhkB,OAAQF,IAAK,CACnC,IAAIusE,EAA0B,IAAL,EAAfroD,EAAIklD,MAAMppE,IAAiBkrE,EACjCD,EAAU,SAALsB,EACTA,KAAQ,GAERroD,EAAIklD,MAAMppE,GAAKirE,EACfC,EAAQqB,EAKV,OAHc,IAAVrB,IACFhnD,EAAIklD,MAAMllD,EAAIhkB,UAAYgrE,GAErBhnD,GAIT8kD,EAAGgT,OAAS,SAAgBr4E,GAE1B,GAAIy3E,EAAOz3E,GAAO,OAAOy3E,EAAOz3E,GAEhC,IAAIo4E,EACJ,GAAa,SAATp4E,EACFo4E,EAAQ,IAAIJ,OACP,GAAa,SAATh4E,EACTo4E,EAAQ,IAAIH,OACP,GAAa,SAATj4E,EACTo4E,EAAQ,IAAIF,MACP,IAAa,WAATl4E,EAGT,MAAM,IAAIa,MAAM,iBAAmBb,GAFnCo4E,EAAQ,IAAID,EAMd,OAFAV,EAAOz3E,GAAQo4E,EAERA,GAkBTnC,EAAIv5E,UAAUy6E,SAAW,SAAmB9wE,GAC1CuY,EAAsB,IAAfvY,EAAEm/D,SAAgB,iCACzB5mD,EAAOvY,EAAEq/D,IAAK,oCAGhBuQ,EAAIv5E,UAAUs6E,SAAW,SAAmB3wE,EAAGe,GAC7CwX,EAAqC,KAA7BvY,EAAEm/D,SAAWp+D,EAAEo+D,UAAiB,iCACxC5mD,EAAOvY,EAAEq/D,KAAOr/D,EAAEq/D,MAAQt+D,EAAEs+D,IAC1B,oCAGJuQ,EAAIv5E,UAAU67E,KAAO,SAAelyE,GAClC,OAAIvJ,KAAKs7E,MAAct7E,KAAKs7E,MAAMM,QAAQryE,GAAGgwE,UAAUv5E,OAEvDqnF,EAAK99E,EAAGA,EAAE+tE,KAAKt3E,KAAKoK,GAAGmvE,UAAUv5E,OAC1BuJ,IAGT4vE,EAAIv5E,UAAU4sE,IAAM,SAAcjjE,GAChC,OAAIA,EAAEwhE,SACGxhE,EAAEyZ,QAGJhjB,KAAKoK,EAAEwjE,IAAIrkE,GAAGgwE,UAAUv5E,OAGjCm5E,EAAIv5E,UAAUi2C,IAAM,SAActsC,EAAGe,GACnCtK,KAAKk6E,SAAS3wE,EAAGe,GAEjB,IAAIgX,EAAM/X,EAAEssC,IAAIvrC,GAIhB,OAHIgX,EAAI6nD,IAAInpE,KAAKoK,IAAM,GACrBkX,EAAIqsD,KAAK3tE,KAAKoK,GAETkX,EAAIi4D,UAAUv5E,OAGvBm5E,EAAIv5E,UAAU8tE,KAAO,SAAenkE,EAAGe,GACrCtK,KAAKk6E,SAAS3wE,EAAGe,GAEjB,IAAIgX,EAAM/X,EAAEmkE,KAAKpjE,GAIjB,OAHIgX,EAAI6nD,IAAInpE,KAAKoK,IAAM,GACrBkX,EAAIqsD,KAAK3tE,KAAKoK,GAETkX,GAGT63D,EAAIv5E,UAAUguE,IAAM,SAAcrkE,EAAGe,GACnCtK,KAAKk6E,SAAS3wE,EAAGe,GAEjB,IAAIgX,EAAM/X,EAAEqkE,IAAItjE,GAIhB,OAHIgX,EAAI+2D,KAAK,GAAK,GAChB/2D,EAAIosD,KAAK1tE,KAAKoK,GAETkX,EAAIi4D,UAAUv5E,OAGvBm5E,EAAIv5E,UAAU+tE,KAAO,SAAepkE,EAAGe,GACrCtK,KAAKk6E,SAAS3wE,EAAGe,GAEjB,IAAIgX,EAAM/X,EAAEokE,KAAKrjE,GAIjB,OAHIgX,EAAI+2D,KAAK,GAAK,GAChB/2D,EAAIosD,KAAK1tE,KAAKoK,GAETkX,GAGT63D,EAAIv5E,UAAUo6E,IAAM,SAAczwE,EAAGka,GAEnC,OADAzjB,KAAKq6E,SAAS9wE,GACPvJ,KAAKy7E,KAAKlyE,EAAE8sE,MAAM5yD,KAG3B01D,EAAIv5E,UAAUgyE,KAAO,SAAeroE,EAAGe,GAErC,OADAtK,KAAKk6E,SAAS3wE,EAAGe,GACVtK,KAAKy7E,KAAKlyE,EAAEqoE,KAAKtnE,KAG1B6uE,EAAIv5E,UAAUspE,IAAM,SAAc3/D,EAAGe,GAEnC,OADAtK,KAAKk6E,SAAS3wE,EAAGe,GACVtK,KAAKy7E,KAAKlyE,EAAE2/D,IAAI5+D,KAGzB6uE,EAAIv5E,UAAU61E,KAAO,SAAelsE,GAClC,OAAOvJ,KAAK4xE,KAAKroE,EAAGA,EAAEyZ,UAGxBm2D,EAAIv5E,UAAU41E,IAAM,SAAcjsE,GAChC,OAAOvJ,KAAKkpE,IAAI3/D,EAAGA,IAGrB4vE,EAAIv5E,UAAU0nC,KAAO,SAAe/9B,GAClC,GAAIA,EAAEwhE,SAAU,OAAOxhE,EAAEyZ,QAEzB,IAAIi5D,EAAOj8E,KAAKoK,EAAEqhE,MAAM,GAIxB,GAHA3pD,EAAOm6D,EAAO,IAAM,GAGP,IAATA,EAAY,CACd,IAAIxwE,EAAMzL,KAAKoK,EAAEyrC,IAAI,IAAI0yB,EAAG,IAAImD,OAAO,GACvC,OAAO1rE,KAAKyL,IAAIlC,EAAGkC,GAQrB,IAFA,IAAIT,EAAIhL,KAAKoK,EAAEwsE,KAAK,GAChB5pE,EAAI,GACAhC,EAAE+/D,UAA2B,IAAf//D,EAAEygE,MAAM,IAC5Bz+D,IACAhC,EAAE0gE,OAAO,GAEX5pD,GAAQ9W,EAAE+/D,UAEV,IAAImR,EAAM,IAAI3T,EAAG,GAAG6Q,MAAMp5E,MACtBm8E,EAAOD,EAAIzB,SAIX2B,EAAOp8E,KAAKoK,EAAEwsE,KAAK,GAAGlL,OAAO,GAC7Bj9D,EAAIzO,KAAKoK,EAAE6E,YAGf,IAFAR,EAAI,IAAI85D,EAAG,EAAI95D,EAAIA,GAAG2qE,MAAMp5E,MAEW,IAAhCA,KAAKyL,IAAIgD,EAAG2tE,GAAMjT,IAAIgT,IAC3B1tE,EAAEmrE,QAAQuC,GAOZ,IAJA,IAAI3yE,EAAIxJ,KAAKyL,IAAIgD,EAAGzD,GAChBC,EAAIjL,KAAKyL,IAAIlC,EAAGyB,EAAE2rE,KAAK,GAAGjL,OAAO,IACjC9+D,EAAI5M,KAAKyL,IAAIlC,EAAGyB,GAChBZ,EAAI4C,EACc,IAAfJ,EAAEu8D,IAAI+S,IAAY,CAEvB,IADA,IAAI/yD,EAAMvc,EACDrN,EAAI,EAAoB,IAAjB4pB,EAAIggD,IAAI+S,GAAY38E,IAClC4pB,EAAMA,EAAIixD,SAEZt4D,EAAOviB,EAAI6K,GACX,IAAIE,EAAItK,KAAKyL,IAAIjC,EAAG,IAAI++D,EAAG,GAAGoN,OAAOvrE,EAAI7K,EAAI,IAE7C0L,EAAIA,EAAEgvE,OAAO3vE,GACbd,EAAIc,EAAE8vE,SACNxtE,EAAIA,EAAEqtE,OAAOzwE,GACbY,EAAI7K,EAGN,OAAO0L,GAGTkuE,EAAIv5E,UAAU04E,KAAO,SAAe/uE,GAClC,IAAI8yE,EAAM9yE,EAAE2uE,OAAOl4E,KAAKoK,GACxB,OAAqB,IAAjBiyE,EAAI3T,UACN2T,EAAI3T,SAAW,EACR1oE,KAAKy7E,KAAKY,GAAK5B,UAEfz6E,KAAKy7E,KAAKY,IAIrBlD,EAAIv5E,UAAU6L,IAAM,SAAclC,EAAGka,GACnC,GAAIA,EAAIsnD,SAAU,OAAO,IAAIxC,EAAG,GAAG6Q,MAAMp5E,MACzC,GAAoB,IAAhByjB,EAAI40D,KAAK,GAAU,OAAO9uE,EAAEyZ,QAEhC,IACIs5D,EAAM,IAAIj6E,MAAM,IACpBi6E,EAAI,GAAK,IAAI/T,EAAG,GAAG6Q,MAAMp5E,MACzBs8E,EAAI,GAAK/yE,EACT,IAAK,IAAIhK,EAAI,EAAGA,EAAI+8E,EAAI78E,OAAQF,IAC9B+8E,EAAI/8E,GAAKS,KAAKkpE,IAAIoT,EAAI/8E,EAAI,GAAIgK,GAGhC,IAAI+X,EAAMg7D,EAAI,GACVz4E,EAAU,EACV04E,EAAa,EACb/3D,EAAQf,EAAIxU,YAAc,GAK9B,IAJc,IAAVuV,IACFA,EAAQ,IAGLjlB,EAAIkkB,EAAIhkB,OAAS,EAAGF,GAAK,EAAGA,IAAK,CAEpC,IADA,IAAIsqE,EAAOpmD,EAAIklD,MAAMppE,GACZkK,EAAI+a,EAAQ,EAAG/a,GAAK,EAAGA,IAAK,CACnC,IAAI+jE,EAAO3D,GAAQpgE,EAAK,EACpB6X,IAAQg7D,EAAI,KACdh7D,EAAMthB,KAAKw1E,IAAIl0D,IAGL,IAARksD,GAAyB,IAAZ3pE,GAKjBA,IAAY,EACZA,GAAW2pE,GA9BE,MA+Bb+O,GACwC,IAANh9E,GAAiB,IAANkK,KAE7C6X,EAAMthB,KAAKkpE,IAAI5nD,EAAKg7D,EAAIz4E,IACxB04E,EAAa,EACb14E,EAAU,IAXR04E,EAAa,EAajB/3D,EAAQ,GAGV,OAAOlD,GAGT63D,EAAIv5E,UAAU05E,UAAY,SAAoB71D,GAC5C,IAAIxY,EAAIwY,EAAI6zD,KAAKt3E,KAAKoK,GAEtB,OAAOa,IAAMwY,EAAMxY,EAAE+X,QAAU/X,GAGjCkuE,EAAIv5E,UAAU65E,YAAc,SAAsBh2D,GAChD,IAAInC,EAAMmC,EAAIT,QAEd,OADA1B,EAAIsnD,IAAM,KACHtnD,GAOTinD,EAAGiU,KAAO,SAAe/4D,GACvB,OAAO,IAAI+3D,EAAK/3D,IAmBlB5D,EAAS27D,EAAMrC,GAEfqC,EAAK57E,UAAU05E,UAAY,SAAoB71D,GAC7C,OAAOzjB,KAAKy7E,KAAKh4D,EAAI4yD,MAAMr2E,KAAKiyB,SAGlCupD,EAAK57E,UAAU65E,YAAc,SAAsBh2D,GACjD,IAAIxY,EAAIjL,KAAKy7E,KAAKh4D,EAAIylD,IAAIlpE,KAAK07E,OAE/B,OADAzwE,EAAE29D,IAAM,KACD39D,GAGTuwE,EAAK57E,UAAUgyE,KAAO,SAAeroE,EAAGe,GACtC,GAAIf,EAAEwhE,UAAYzgE,EAAEygE,SAGlB,OAFAxhE,EAAEo/D,MAAM,GAAK,EACbp/D,EAAE9J,OAAS,EACJ8J,EAGT,IAAIqD,EAAIrD,EAAEqoE,KAAKtnE,GACXd,EAAIoD,EAAE6pE,MAAMz2E,KAAKiyB,OAAOi3C,IAAIlpE,KAAK27E,MAAMnF,OAAOx2E,KAAKiyB,OAAOi3C,IAAIlpE,KAAKoK,GACnEuE,EAAI/B,EAAE+gE,KAAKnkE,GAAGkiE,OAAO1rE,KAAKiyB,OAC1B3Q,EAAM3S,EAQV,OANIA,EAAEw6D,IAAInpE,KAAKoK,IAAM,EACnBkX,EAAM3S,EAAEg/D,KAAK3tE,KAAKoK,GACTuE,EAAE0pE,KAAK,GAAK,IACrB/2D,EAAM3S,EAAE++D,KAAK1tE,KAAKoK,IAGbkX,EAAIi4D,UAAUv5E,OAGvBw7E,EAAK57E,UAAUspE,IAAM,SAAc3/D,EAAGe,GACpC,GAAIf,EAAEwhE,UAAYzgE,EAAEygE,SAAU,OAAO,IAAIxC,EAAG,GAAGgR,UAAUv5E,MAEzD,IAAI4M,EAAIrD,EAAE2/D,IAAI5+D,GACVd,EAAIoD,EAAE6pE,MAAMz2E,KAAKiyB,OAAOi3C,IAAIlpE,KAAK27E,MAAMnF,OAAOx2E,KAAKiyB,OAAOi3C,IAAIlpE,KAAKoK,GACnEuE,EAAI/B,EAAE+gE,KAAKnkE,GAAGkiE,OAAO1rE,KAAKiyB,OAC1B3Q,EAAM3S,EAOV,OANIA,EAAEw6D,IAAInpE,KAAKoK,IAAM,EACnBkX,EAAM3S,EAAEg/D,KAAK3tE,KAAKoK,GACTuE,EAAE0pE,KAAK,GAAK,IACrB/2D,EAAM3S,EAAE++D,KAAK1tE,KAAKoK,IAGbkX,EAAIi4D,UAAUv5E,OAGvBw7E,EAAK57E,UAAU04E,KAAO,SAAe/uE,GAGnC,OADUvJ,KAAKy7E,KAAKlyE,EAAE2uE,OAAOl4E,KAAKoK,GAAG8+D,IAAIlpE,KAAK03E,KACnC6B,UAAUv5E,OAx9GzB,YA09G4CA,yBC19G5CiH,EAAOC,QAAU,SAAcqC,EAAGe,GAIhC,IAHA,IAAI7K,EAAS0L,KAAKkD,IAAI9E,EAAE9J,OAAQ6K,EAAE7K,QAC9BoK,EAAS,IAAI4W,OAAOhhB,GAEfF,EAAI,EAAGA,EAAIE,IAAUF,EAC5BsK,EAAOtK,GAAKgK,EAAEhK,GAAK+K,EAAE/K,GAGvB,OAAOsK,uCCET,MAAMkL,EAAS,EAAQ,OACjBi2E,EAAU,EAAQ,OAClBC,EACe,oBAAXvoF,QAAkD,oBAAlBA,OAAY,IAChDA,OAAY,IAAE,8BACd,KAENwE,EAAQuZ,OAASA,EACjBvZ,EAAQgkF,WAyTR,SAAqBzrF,IACdA,GAAUA,IACbA,EAAS,GAEX,OAAOghB,EAAOiB,OAAOjiB,IA5TvByH,EAAQikF,kBAAoB,GAE5B,MAAMC,EAAe,WAwDrB,SAASC,EAAc5rF,GACrB,GAAIA,EAAS2rF,EACX,MAAM,IAAIE,WAAW,cAAgB7rF,EAAS,kCAGhD,MAAMuoB,EAAM,IAAI/e,WAAWxJ,GAE3B,OADAL,OAAOy4B,eAAe7P,EAAKvH,EAAO7gB,WAC3BooB,EAaT,SAASvH,EAAQ8C,EAAKgoE,EAAkB9rF,GAEtC,GAAmB,kBAAR8jB,EAAkB,CAC3B,GAAgC,kBAArBgoE,EACT,MAAM,IAAI/nF,UACR,sEAGJ,OAAOi8E,EAAYl8D,GAErB,OAAOpgB,EAAKogB,EAAKgoE,EAAkB9rF,GAKrC,SAAS0D,EAAMI,EAAOgoF,EAAkB9rF,GACtC,GAAqB,kBAAV8D,EACT,OAqHJ,SAAqB4E,EAAQqjF,GACH,kBAAbA,GAAsC,KAAbA,IAClCA,EAAW,QAGb,IAAK/qE,EAAOgrE,WAAWD,GACrB,MAAM,IAAIhoF,UAAU,qBAAuBgoF,GAG7C,MAAM/rF,EAAwC,EAA/BqK,EAAW3B,EAAQqjF,GAClC,IAAIxjE,EAAMqjE,EAAa5rF,GAEvB,MAAMisF,EAAS1jE,EAAIrG,MAAMxZ,EAAQqjF,GAE7BE,IAAWjsF,IAIbuoB,EAAMA,EAAIhlB,MAAM,EAAG0oF,IAGrB,OAAO1jE,EA1IErd,CAAWpH,EAAOgoF,GAG3B,GAAII,YAAYC,OAAOroF,GACrB,OAkJJ,SAAwBsoF,GACtB,GAAIC,EAAWD,EAAW5iF,YAAa,CACrC,MAAM2Y,EAAO,IAAI3Y,WAAW4iF,GAC5B,OAAOE,EAAgBnqE,EAAK/X,OAAQ+X,EAAKoqE,WAAYpqE,EAAK9X,YAE5D,OAAOmiF,EAAcJ,GAvJZK,CAAc3oF,GAGvB,GAAa,MAATA,EACF,MAAM,IAAIC,UACR,yHACiDD,GAIrD,GAAIuoF,EAAWvoF,EAAOooF,cACjBpoF,GAASuoF,EAAWvoF,EAAMsG,OAAQ8hF,aACrC,OAAOI,EAAgBxoF,EAAOgoF,EAAkB9rF,GAGlD,GAAiC,qBAAtB0sF,oBACNL,EAAWvoF,EAAO4oF,oBAClB5oF,GAASuoF,EAAWvoF,EAAMsG,OAAQsiF,oBACrC,OAAOJ,EAAgBxoF,EAAOgoF,EAAkB9rF,GAGlD,GAAqB,kBAAV8D,EACT,MAAM,IAAIC,UACR,yEAIJ,MAAM2P,EAAU5P,EAAM4P,SAAW5P,EAAM4P,UACvC,GAAe,MAAXA,GAAmBA,IAAY5P,EACjC,OAAOkd,EAAOtd,KAAKgQ,EAASo4E,EAAkB9rF,GAGhD,MAAM6K,EAkJR,SAAqBkY,GACnB,GAAI/B,EAAOE,SAAS6B,GAAM,CACxB,MAAMrgB,EAA4B,EAAtB4iD,EAAQviC,EAAI/iB,QAClBuoB,EAAMqjE,EAAalpF,GAEzB,OAAmB,IAAf6lB,EAAIvoB,QAIR+iB,EAAIZ,KAAKoG,EAAK,EAAG,EAAG7lB,GAHX6lB,EAOX,QAAmBrC,IAAfnD,EAAI/iB,OACN,MAA0B,kBAAf+iB,EAAI/iB,QAAuB2sF,EAAY5pE,EAAI/iB,QAC7C4rF,EAAa,GAEfY,EAAczpE,GAGvB,GAAiB,WAAbA,EAAIhe,MAAqBnC,MAAMO,QAAQ4f,EAAI/M,MAC7C,OAAOw2E,EAAczpE,EAAI/M,MAvKjB42E,CAAW9oF,GACrB,GAAI+G,EAAG,OAAOA,EAEd,GAAsB,qBAAX5H,QAAgD,MAAtBA,OAAO4pF,aACH,oBAA9B/oF,EAAMb,OAAO4pF,aACtB,OAAO7rE,EAAOtd,KAAKI,EAAMb,OAAO4pF,aAAa,UAAWf,EAAkB9rF,GAG5E,MAAM,IAAI+D,UACR,yHACiDD,GAqBrD,SAASgpF,EAAYhiE,GACnB,GAAoB,kBAATA,EACT,MAAM,IAAI/mB,UAAU,0CACf,GAAI+mB,EAAO,EAChB,MAAM,IAAI+gE,WAAW,cAAgB/gE,EAAO,kCA4BhD,SAASk1D,EAAal1D,GAEpB,OADAgiE,EAAWhiE,GACJ8gE,EAAa9gE,EAAO,EAAI,EAAoB,EAAhBw6B,EAAQx6B,IAwC7C,SAAS0hE,EAAepkF,GACtB,MAAMpI,EAASoI,EAAMpI,OAAS,EAAI,EAA4B,EAAxBslD,EAAQl9C,EAAMpI,QAC9CuoB,EAAMqjE,EAAa5rF,GACzB,IAAK,IAAIF,EAAI,EAAGA,EAAIE,EAAQF,GAAK,EAC/ByoB,EAAIzoB,GAAgB,IAAXsI,EAAMtI,GAEjB,OAAOyoB,EAWT,SAAS+jE,EAAiBlkF,EAAOmkF,EAAYvsF,GAC3C,GAAIusF,EAAa,GAAKnkF,EAAMiC,WAAakiF,EACvC,MAAM,IAAIV,WAAW,wCAGvB,GAAIzjF,EAAMiC,WAAakiF,GAAcvsF,GAAU,GAC7C,MAAM,IAAI6rF,WAAW,wCAGvB,IAAItjE,EAYJ,OAVEA,OADiBrC,IAAfqmE,QAAuCrmE,IAAXlmB,EACxB,IAAIwJ,WAAWpB,QACD8d,IAAXlmB,EACH,IAAIwJ,WAAWpB,EAAOmkF,GAEtB,IAAI/iF,WAAWpB,EAAOmkF,EAAYvsF,GAI1CL,OAAOy4B,eAAe7P,EAAKvH,EAAO7gB,WAE3BooB,EA4BT,SAAS+8B,EAAStlD,GAGhB,GAAIA,GAAU2rF,EACZ,MAAM,IAAIE,WAAW,0DACaF,EAAaroF,SAAS,IAAM,UAEhE,OAAgB,EAATtD,EAuGT,SAASqK,EAAY3B,EAAQqjF,GAC3B,GAAI/qE,EAAOE,SAASxY,GAClB,OAAOA,EAAO1I,OAEhB,GAAIksF,YAAYC,OAAOzjF,IAAW2jF,EAAW3jF,EAAQwjF,aACnD,OAAOxjF,EAAO2B,WAEhB,GAAsB,kBAAX3B,EACT,MAAM,IAAI3E,UACR,kGAC0B2E,GAI9B,MAAMhG,EAAMgG,EAAO1I,OACb+sF,EAAahtF,UAAUC,OAAS,IAAsB,IAAjBD,UAAU,GACrD,IAAKgtF,GAAqB,IAARrqF,EAAW,OAAO,EAGpC,IAAIsqF,GAAc,EAClB,OACE,OAAQjB,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOrpF,EACT,IAAK,OACL,IAAK,QACH,OAAOuqF,EAAYvkF,GAAQ1I,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAa,EAAN0C,EACT,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAOwqF,EAAcxkF,GAAQ1I,OAC/B,QACE,GAAIgtF,EACF,OAAOD,GAAa,EAAIE,EAAYvkF,GAAQ1I,OAE9C+rF,GAAY,GAAKA,GAAU/xC,cAC3BgzC,GAAc,GAMtB,SAASG,EAAcpB,EAAUhnE,EAAOsF,GACtC,IAAI2iE,GAAc,EAclB,SALc9mE,IAAVnB,GAAuBA,EAAQ,KACjCA,EAAQ,GAINA,EAAQxkB,KAAKP,OACf,MAAO,GAOT,SAJYkmB,IAARmE,GAAqBA,EAAM9pB,KAAKP,UAClCqqB,EAAM9pB,KAAKP,QAGTqqB,GAAO,EACT,MAAO,GAOT,IAHAA,KAAS,KACTtF,KAAW,GAGT,MAAO,GAKT,IAFKgnE,IAAUA,EAAW,UAGxB,OAAQA,GACN,IAAK,MACH,OAAOqB,EAAS7sF,KAAMwkB,EAAOsF,GAE/B,IAAK,OACL,IAAK,QACH,OAAOgjE,EAAU9sF,KAAMwkB,EAAOsF,GAEhC,IAAK,QACH,OAAOijE,EAAW/sF,KAAMwkB,EAAOsF,GAEjC,IAAK,SACL,IAAK,SACH,OAAOkjE,EAAYhtF,KAAMwkB,EAAOsF,GAElC,IAAK,SACH,OAAOmjE,EAAYjtF,KAAMwkB,EAAOsF,GAElC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOojE,EAAaltF,KAAMwkB,EAAOsF,GAEnC,QACE,GAAI2iE,EAAa,MAAM,IAAIjpF,UAAU,qBAAuBgoF,GAC5DA,GAAYA,EAAW,IAAI/xC,cAC3BgzC,GAAc,GAatB,SAASU,EAAM7iF,EAAGxH,EAAGsH,GACnB,MAAM7K,EAAI+K,EAAExH,GACZwH,EAAExH,GAAKwH,EAAEF,GACTE,EAAEF,GAAK7K,EA4IT,SAAS6tF,EAAsBvjF,EAAQkS,EAAKiwE,EAAYR,EAAU6B,GAEhE,GAAsB,IAAlBxjF,EAAOpK,OAAc,OAAQ,EAmBjC,GAhB0B,kBAAfusF,GACTR,EAAWQ,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAGZI,EADJJ,GAAcA,KAGZA,EAAaqB,EAAM,EAAKxjF,EAAOpK,OAAS,GAItCusF,EAAa,IAAGA,EAAaniF,EAAOpK,OAASusF,GAC7CA,GAAcniF,EAAOpK,OAAQ,CAC/B,GAAI4tF,EAAK,OAAQ,EACZrB,EAAaniF,EAAOpK,OAAS,OAC7B,GAAIusF,EAAa,EAAG,CACzB,IAAIqB,EACC,OAAQ,EADJrB,EAAa,EAUxB,GALmB,kBAARjwE,IACTA,EAAM0E,EAAOtd,KAAK4Y,EAAKyvE,IAIrB/qE,EAAOE,SAAS5E,GAElB,OAAmB,IAAfA,EAAItc,QACE,EAEH6tF,EAAazjF,EAAQkS,EAAKiwE,EAAYR,EAAU6B,GAClD,GAAmB,kBAARtxE,EAEhB,OADAA,GAAY,IACgC,oBAAjC9S,WAAWrJ,UAAUmB,QAC1BssF,EACKpkF,WAAWrJ,UAAUmB,QAAQjB,KAAK+J,EAAQkS,EAAKiwE,GAE/C/iF,WAAWrJ,UAAU2tF,YAAYztF,KAAK+J,EAAQkS,EAAKiwE,GAGvDsB,EAAazjF,EAAQ,CAACkS,GAAMiwE,EAAYR,EAAU6B,GAG3D,MAAM,IAAI7pF,UAAU,wCAGtB,SAAS8pF,EAAcprF,EAAK6Z,EAAKiwE,EAAYR,EAAU6B,GACrD,IA0BI9tF,EA1BAiuF,EAAY,EACZC,EAAYvrF,EAAIzC,OAChBiuF,EAAY3xE,EAAItc,OAEpB,QAAiBkmB,IAAb6lE,IAEe,UADjBA,EAAWn3E,OAAOm3E,GAAU/xC,gBACY,UAAb+xC,GACV,YAAbA,GAAuC,aAAbA,GAAyB,CACrD,GAAItpF,EAAIzC,OAAS,GAAKsc,EAAItc,OAAS,EACjC,OAAQ,EAEV+tF,EAAY,EACZC,GAAa,EACbC,GAAa,EACb1B,GAAc,EAIlB,SAAS1tC,EAAMt2B,EAAKzoB,GAClB,OAAkB,IAAdiuF,EACKxlE,EAAIzoB,GAEJyoB,EAAIS,aAAalpB,EAAIiuF,GAKhC,GAAIH,EAAK,CACP,IAAIM,GAAc,EAClB,IAAKpuF,EAAIysF,EAAYzsF,EAAIkuF,EAAWluF,IAClC,GAAI++C,EAAKp8C,EAAK3C,KAAO++C,EAAKviC,GAAqB,IAAhB4xE,EAAoB,EAAIpuF,EAAIouF,IAEzD,IADoB,IAAhBA,IAAmBA,EAAapuF,GAChCA,EAAIouF,EAAa,IAAMD,EAAW,OAAOC,EAAaH,OAEtC,IAAhBG,IAAmBpuF,GAAKA,EAAIouF,GAChCA,GAAc,OAKlB,IADI3B,EAAa0B,EAAYD,IAAWzB,EAAayB,EAAYC,GAC5DnuF,EAAIysF,EAAYzsF,GAAK,EAAGA,IAAK,CAChC,IAAIquF,GAAQ,EACZ,IAAK,IAAInkF,EAAI,EAAGA,EAAIikF,EAAWjkF,IAC7B,GAAI60C,EAAKp8C,EAAK3C,EAAIkK,KAAO60C,EAAKviC,EAAKtS,GAAI,CACrCmkF,GAAQ,EACR,MAGJ,GAAIA,EAAO,OAAOruF,EAItB,OAAQ,EAeV,SAASsuF,EAAU7lE,EAAK7f,EAAQyY,EAAQnhB,GACtCmhB,EAASktE,OAAOltE,IAAW,EAC3B,MAAMmtE,EAAY/lE,EAAIvoB,OAASmhB,EAC1BnhB,GAGHA,EAASquF,OAAOruF,IACHsuF,IACXtuF,EAASsuF,GAJXtuF,EAASsuF,EAQX,MAAMC,EAAS7lF,EAAO1I,OAKtB,IAAIF,EACJ,IAJIE,EAASuuF,EAAS,IACpBvuF,EAASuuF,EAAS,GAGfzuF,EAAI,EAAGA,EAAIE,IAAUF,EAAG,CAC3B,MAAM+jE,EAAS7yD,SAAStI,EAAO0M,OAAW,EAAJtV,EAAO,GAAI,IACjD,GAAI6sF,EAAY9oB,GAAS,OAAO/jE,EAChCyoB,EAAIpH,EAASrhB,GAAK+jE,EAEpB,OAAO/jE,EAGT,SAAS0uF,EAAWjmE,EAAK7f,EAAQyY,EAAQnhB,GACvC,OAAOyuF,EAAWxB,EAAYvkF,EAAQ6f,EAAIvoB,OAASmhB,GAASoH,EAAKpH,EAAQnhB,GAG3E,SAAS0uF,EAAYnmE,EAAK7f,EAAQyY,EAAQnhB,GACxC,OAAOyuF,EAypCT,SAAuBxnE,GACrB,MAAM0nE,EAAY,GAClB,IAAK,IAAI7uF,EAAI,EAAGA,EAAImnB,EAAIjnB,SAAUF,EAEhC6uF,EAAUt7E,KAAyB,IAApB4T,EAAIxc,WAAW3K,IAEhC,OAAO6uF,EA/pCWC,CAAalmF,GAAS6f,EAAKpH,EAAQnhB,GAGvD,SAAS6uF,EAAatmE,EAAK7f,EAAQyY,EAAQnhB,GACzC,OAAOyuF,EAAWvB,EAAcxkF,GAAS6f,EAAKpH,EAAQnhB,GAGxD,SAAS8uF,EAAWvmE,EAAK7f,EAAQyY,EAAQnhB,GACvC,OAAOyuF,EA0pCT,SAAyBxnE,EAAK8nE,GAC5B,IAAIhlF,EAAGsiE,EAAItB,EACX,MAAM4jB,EAAY,GAClB,IAAK,IAAI7uF,EAAI,EAAGA,EAAImnB,EAAIjnB,WACjB+uF,GAAS,GAAK,KADajvF,EAGhCiK,EAAIkd,EAAIxc,WAAW3K,GACnBusE,EAAKtiE,GAAK,EACVghE,EAAKhhE,EAAI,IACT4kF,EAAUt7E,KAAK03D,GACf4jB,EAAUt7E,KAAKg5D,GAGjB,OAAOsiB,EAvqCWK,CAAetmF,EAAQ6f,EAAIvoB,OAASmhB,GAASoH,EAAKpH,EAAQnhB,GA+E9E,SAASwtF,EAAajlE,EAAKxD,EAAOsF,GAChC,OAAc,IAAVtF,GAAesF,IAAQ9B,EAAIvoB,OACtBsV,EAAO0xD,cAAcz+C,GAErBjT,EAAO0xD,cAAcz+C,EAAIhlB,MAAMwhB,EAAOsF,IAIjD,SAASgjE,EAAW9kE,EAAKxD,EAAOsF,GAC9BA,EAAM3e,KAAKkD,IAAI2Z,EAAIvoB,OAAQqqB,GAC3B,MAAMxI,EAAM,GAEZ,IAAI/hB,EAAIilB,EACR,KAAOjlB,EAAIuqB,GAAK,CACd,MAAM4kE,EAAY1mE,EAAIzoB,GACtB,IAAIovF,EAAY,KACZC,EAAoBF,EAAY,IAChC,EACCA,EAAY,IACT,EACCA,EAAY,IACT,EACA,EAEZ,GAAInvF,EAAIqvF,GAAoB9kE,EAAK,CAC/B,IAAI+kE,EAAYC,EAAWC,EAAYC,EAEvC,OAAQJ,GACN,KAAK,EACCF,EAAY,MACdC,EAAYD,GAEd,MACF,KAAK,EACHG,EAAa7mE,EAAIzoB,EAAI,GACO,OAAV,IAAbsvF,KACHG,GAA6B,GAAZN,IAAqB,EAAoB,GAAbG,EACzCG,EAAgB,MAClBL,EAAYK,IAGhB,MACF,KAAK,EACHH,EAAa7mE,EAAIzoB,EAAI,GACrBuvF,EAAY9mE,EAAIzoB,EAAI,GACQ,OAAV,IAAbsvF,IAAsD,OAAV,IAAZC,KACnCE,GAA6B,GAAZN,IAAoB,IAAoB,GAAbG,IAAsB,EAAmB,GAAZC,EACrEE,EAAgB,OAAUA,EAAgB,OAAUA,EAAgB,SACtEL,EAAYK,IAGhB,MACF,KAAK,EACHH,EAAa7mE,EAAIzoB,EAAI,GACrBuvF,EAAY9mE,EAAIzoB,EAAI,GACpBwvF,EAAa/mE,EAAIzoB,EAAI,GACO,OAAV,IAAbsvF,IAAsD,OAAV,IAAZC,IAAsD,OAAV,IAAbC,KAClEC,GAA6B,GAAZN,IAAoB,IAAqB,GAAbG,IAAsB,IAAmB,GAAZC,IAAqB,EAAoB,GAAbC,EAClGC,EAAgB,OAAUA,EAAgB,UAC5CL,EAAYK,KAMJ,OAAdL,GAGFA,EAAY,MACZC,EAAmB,GACVD,EAAY,QAErBA,GAAa,MACbrtE,EAAIxO,KAAK67E,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAAqB,KAAZA,GAGvBrtE,EAAIxO,KAAK67E,GACTpvF,GAAKqvF,EAGP,OAQF,SAAgCK,GAC9B,MAAM9sF,EAAM8sF,EAAWxvF,OACvB,GAAI0C,GAAO+sF,EACT,OAAO76E,OAAOC,aAAavU,MAAMsU,OAAQ46E,GAI3C,IAAI3tE,EAAM,GACN/hB,EAAI,EACR,KAAOA,EAAI4C,GACTmf,GAAOjN,OAAOC,aAAavU,MACzBsU,OACA46E,EAAWjsF,MAAMzD,EAAGA,GAAK2vF,IAG7B,OAAO5tE,EAvBA6tE,CAAsB7tE,GA1+B/Bpa,EAAQkoF,WAAahE,EAgBrB3qE,EAAO4uE,oBAUP,WAEE,IACE,MAAMntF,EAAM,IAAI+G,WAAW,GACrBqmF,EAAQ,CAAEC,IAAK,WAAc,OAAO,KAG1C,OAFAnwF,OAAOy4B,eAAey3D,EAAOrmF,WAAWrJ,WACxCR,OAAOy4B,eAAe31B,EAAKotF,GACN,KAAdptF,EAAIqtF,MACX,MAAOjmF,GACP,OAAO,GAnBkBkmF,GAExB/uE,EAAO4uE,qBAA0C,qBAAZn3E,SACb,oBAAlBA,QAAQpU,OACjBoU,QAAQpU,MACN,iJAkBJ1E,OAAOk4B,eAAe7W,EAAO7gB,UAAW,SAAU,CAChDq3B,YAAY,EACZrJ,IAAK,WACH,GAAKnN,EAAOE,SAAS3gB,MACrB,OAAOA,KAAK6J,UAIhBzK,OAAOk4B,eAAe7W,EAAO7gB,UAAW,SAAU,CAChDq3B,YAAY,EACZrJ,IAAK,WACH,GAAKnN,EAAOE,SAAS3gB,MACrB,OAAOA,KAAKgsF,cAqChBvrE,EAAOgvE,SAAW,KA8DlBhvE,EAAOtd,KAAO,SAAUI,EAAOgoF,EAAkB9rF,GAC/C,OAAO0D,EAAKI,EAAOgoF,EAAkB9rF,IAKvCL,OAAOy4B,eAAepX,EAAO7gB,UAAWqJ,WAAWrJ,WACnDR,OAAOy4B,eAAepX,EAAQxX,YA8B9BwX,EAAOiB,MAAQ,SAAU6I,EAAM4I,EAAMq4D,GACnC,OArBF,SAAgBjhE,EAAM4I,EAAMq4D,GAE1B,OADAe,EAAWhiE,GACPA,GAAQ,EACH8gE,EAAa9gE,QAET5E,IAATwN,EAIyB,kBAAbq4D,EACVH,EAAa9gE,GAAM4I,KAAKA,EAAMq4D,GAC9BH,EAAa9gE,GAAM4I,KAAKA,GAEvBk4D,EAAa9gE,GAQb7I,CAAM6I,EAAM4I,EAAMq4D,IAW3B/qE,EAAOg/D,YAAc,SAAUl1D,GAC7B,OAAOk1D,EAAYl1D,IAKrB9J,EAAOivE,gBAAkB,SAAUnlE,GACjC,OAAOk1D,EAAYl1D,IA8GrB9J,EAAOE,SAAW,SAAmBrW,GACnC,OAAY,MAALA,IAA6B,IAAhBA,EAAEqlF,WACpBrlF,IAAMmW,EAAO7gB,WAGjB6gB,EAAOmvE,QAAU,SAAkBrmF,EAAGe,GAGpC,GAFIwhF,EAAWviF,EAAGN,cAAaM,EAAIkX,EAAOtd,KAAKoG,EAAGA,EAAEqX,OAAQrX,EAAEO,aAC1DgiF,EAAWxhF,EAAGrB,cAAaqB,EAAImW,EAAOtd,KAAKmH,EAAGA,EAAEsW,OAAQtW,EAAER,cACzD2W,EAAOE,SAASpX,KAAOkX,EAAOE,SAASrW,GAC1C,MAAM,IAAI9G,UACR,yEAIJ,GAAI+F,IAAMe,EAAG,OAAO,EAEpB,IAAIoE,EAAInF,EAAE9J,OACNqS,EAAIxH,EAAE7K,OAEV,IAAK,IAAIF,EAAI,EAAG4C,EAAMgJ,KAAKkD,IAAIK,EAAGoD,GAAIvS,EAAI4C,IAAO5C,EAC/C,GAAIgK,EAAEhK,KAAO+K,EAAE/K,GAAI,CACjBmP,EAAInF,EAAEhK,GACNuS,EAAIxH,EAAE/K,GACN,MAIJ,OAAImP,EAAIoD,GAAW,EACfA,EAAIpD,EAAU,EACX,GAGT+R,EAAOgrE,WAAa,SAAqBD,GACvC,OAAQn3E,OAAOm3E,GAAU/xC,eACvB,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,EACT,QACE,OAAO,IAIbh5B,EAAOpN,OAAS,SAAiBue,EAAMnyB,GACrC,IAAK4C,MAAMO,QAAQgvB,GACjB,MAAM,IAAIpuB,UAAU,+CAGtB,GAAoB,IAAhBouB,EAAKnyB,OACP,OAAOghB,EAAOiB,MAAM,GAGtB,IAAIniB,EACJ,QAAeomB,IAAXlmB,EAEF,IADAA,EAAS,EACJF,EAAI,EAAGA,EAAIqyB,EAAKnyB,SAAUF,EAC7BE,GAAUmyB,EAAKryB,GAAGE,OAItB,MAAMoK,EAAS4W,EAAOg/D,YAAYhgF,GAClC,IAAIowF,EAAM,EACV,IAAKtwF,EAAI,EAAGA,EAAIqyB,EAAKnyB,SAAUF,EAAG,CAChC,IAAIyoB,EAAM4J,EAAKryB,GACf,GAAIusF,EAAW9jE,EAAK/e,YACd4mF,EAAM7nE,EAAIvoB,OAASoK,EAAOpK,QACvBghB,EAAOE,SAASqH,KAAMA,EAAMvH,EAAOtd,KAAK6kB,IAC7CA,EAAIpG,KAAK/X,EAAQgmF,IAEjB5mF,WAAWrJ,UAAUmK,IAAIjK,KACvB+J,EACAme,EACA6nE,OAGC,KAAKpvE,EAAOE,SAASqH,GAC1B,MAAM,IAAIxkB,UAAU,+CAEpBwkB,EAAIpG,KAAK/X,EAAQgmF,GAEnBA,GAAO7nE,EAAIvoB,OAEb,OAAOoK,GAkDT4W,EAAO3W,WAAaA,EA8EpB2W,EAAO7gB,UAAU+vF,WAAY,EAQ7BlvE,EAAO7gB,UAAUkwF,OAAS,WACxB,MAAM3tF,EAAMnC,KAAKP,OACjB,GAAI0C,EAAM,IAAM,EACd,MAAM,IAAImpF,WAAW,6CAEvB,IAAK,IAAI/rF,EAAI,EAAGA,EAAI4C,EAAK5C,GAAK,EAC5B4tF,EAAKntF,KAAMT,EAAGA,EAAI,GAEpB,OAAOS,MAGTygB,EAAO7gB,UAAUmwF,OAAS,WACxB,MAAM5tF,EAAMnC,KAAKP,OACjB,GAAI0C,EAAM,IAAM,EACd,MAAM,IAAImpF,WAAW,6CAEvB,IAAK,IAAI/rF,EAAI,EAAGA,EAAI4C,EAAK5C,GAAK,EAC5B4tF,EAAKntF,KAAMT,EAAGA,EAAI,GAClB4tF,EAAKntF,KAAMT,EAAI,EAAGA,EAAI,GAExB,OAAOS,MAGTygB,EAAO7gB,UAAUowF,OAAS,WACxB,MAAM7tF,EAAMnC,KAAKP,OACjB,GAAI0C,EAAM,IAAM,EACd,MAAM,IAAImpF,WAAW,6CAEvB,IAAK,IAAI/rF,EAAI,EAAGA,EAAI4C,EAAK5C,GAAK,EAC5B4tF,EAAKntF,KAAMT,EAAGA,EAAI,GAClB4tF,EAAKntF,KAAMT,EAAI,EAAGA,EAAI,GACtB4tF,EAAKntF,KAAMT,EAAI,EAAGA,EAAI,GACtB4tF,EAAKntF,KAAMT,EAAI,EAAGA,EAAI,GAExB,OAAOS,MAGTygB,EAAO7gB,UAAUmD,SAAW,WAC1B,MAAMtD,EAASO,KAAKP,OACpB,OAAe,IAAXA,EAAqB,GACA,IAArBD,UAAUC,OAAqBqtF,EAAU9sF,KAAM,EAAGP,GAC/CmtF,EAAa7sF,MAAMC,KAAMR,YAGlCihB,EAAO7gB,UAAUqwF,eAAiBxvE,EAAO7gB,UAAUmD,SAEnD0d,EAAO7gB,UAAU6jF,OAAS,SAAiBn5E,GACzC,IAAKmW,EAAOE,SAASrW,GAAI,MAAM,IAAI9G,UAAU,6BAC7C,OAAIxD,OAASsK,GACsB,IAA5BmW,EAAOmvE,QAAQ5vF,KAAMsK,IAG9BmW,EAAO7gB,UAAUuqE,QAAU,WACzB,IAAIzjD,EAAM,GACV,MAAMxY,EAAMhH,EAAQikF,kBAGpB,OAFAzkE,EAAM1mB,KAAK+C,SAAS,MAAO,EAAGmL,GAAK4G,QAAQ,UAAW,OAAO+a,OACzD7vB,KAAKP,OAASyO,IAAKwY,GAAO,SACvB,WAAaA,EAAM,KAExBukE,IACFxqE,EAAO7gB,UAAUqrF,GAAuBxqE,EAAO7gB,UAAUuqE,SAG3D1pD,EAAO7gB,UAAUgwF,QAAU,SAAkBtwF,EAAQklB,EAAOsF,EAAKomE,EAAWC,GAI1E,GAHIrE,EAAWxsF,EAAQ2J,cACrB3J,EAASmhB,EAAOtd,KAAK7D,EAAQA,EAAOshB,OAAQthB,EAAOwK,cAEhD2W,EAAOE,SAASrhB,GACnB,MAAM,IAAIkE,UACR,wFAC2BlE,GAiB/B,QAbcqmB,IAAVnB,IACFA,EAAQ,QAEEmB,IAARmE,IACFA,EAAMxqB,EAASA,EAAOG,OAAS,QAEfkmB,IAAduqE,IACFA,EAAY,QAEEvqE,IAAZwqE,IACFA,EAAUnwF,KAAKP,QAGb+kB,EAAQ,GAAKsF,EAAMxqB,EAAOG,QAAUywF,EAAY,GAAKC,EAAUnwF,KAAKP,OACtE,MAAM,IAAI6rF,WAAW,sBAGvB,GAAI4E,GAAaC,GAAW3rE,GAASsF,EACnC,OAAO,EAET,GAAIomE,GAAaC,EACf,OAAQ,EAEV,GAAI3rE,GAASsF,EACX,OAAO,EAQT,GAAI9pB,OAASV,EAAQ,OAAO,EAE5B,IAAIoP,GAJJyhF,KAAa,IADbD,KAAe,GAMXp+E,GAPJgY,KAAS,IADTtF,KAAW,GASX,MAAMriB,EAAMgJ,KAAKkD,IAAIK,EAAGoD,GAElBs+E,EAAWpwF,KAAKgD,MAAMktF,EAAWC,GACjCE,EAAa/wF,EAAO0D,MAAMwhB,EAAOsF,GAEvC,IAAK,IAAIvqB,EAAI,EAAGA,EAAI4C,IAAO5C,EACzB,GAAI6wF,EAAS7wF,KAAO8wF,EAAW9wF,GAAI,CACjCmP,EAAI0hF,EAAS7wF,GACbuS,EAAIu+E,EAAW9wF,GACf,MAIJ,OAAImP,EAAIoD,GAAW,EACfA,EAAIpD,EAAU,EACX,GA4HT+R,EAAO7gB,UAAU4kD,SAAW,SAAmBzoC,EAAKiwE,EAAYR,GAC9D,OAAoD,IAA7CxrF,KAAKe,QAAQgb,EAAKiwE,EAAYR,IAGvC/qE,EAAO7gB,UAAUmB,QAAU,SAAkBgb,EAAKiwE,EAAYR,GAC5D,OAAO4B,EAAqBptF,KAAM+b,EAAKiwE,EAAYR,GAAU,IAG/D/qE,EAAO7gB,UAAU2tF,YAAc,SAAsBxxE,EAAKiwE,EAAYR,GACpE,OAAO4B,EAAqBptF,KAAM+b,EAAKiwE,EAAYR,GAAU,IA6C/D/qE,EAAO7gB,UAAU+hB,MAAQ,SAAgBxZ,EAAQyY,EAAQnhB,EAAQ+rF,GAE/D,QAAe7lE,IAAX/E,EACF4qE,EAAW,OACX/rF,EAASO,KAAKP,OACdmhB,EAAS,OAEJ,QAAe+E,IAAXlmB,GAA0C,kBAAXmhB,EACxC4qE,EAAW5qE,EACXnhB,EAASO,KAAKP,OACdmhB,EAAS,MAEJ,KAAI0vE,SAAS1vE,GAUlB,MAAM,IAAI7c,MACR,2EAVF6c,KAAoB,EAChB0vE,SAAS7wF,IACXA,KAAoB,OACHkmB,IAAb6lE,IAAwBA,EAAW,UAEvCA,EAAW/rF,EACXA,OAASkmB,GAQb,MAAMooE,EAAY/tF,KAAKP,OAASmhB,EAGhC,SAFe+E,IAAXlmB,GAAwBA,EAASsuF,KAAWtuF,EAASsuF,GAEpD5lF,EAAO1I,OAAS,IAAMA,EAAS,GAAKmhB,EAAS,IAAOA,EAAS5gB,KAAKP,OACrE,MAAM,IAAI6rF,WAAW,0CAGlBE,IAAUA,EAAW,QAE1B,IAAIiB,GAAc,EAClB,OACE,OAAQjB,GACN,IAAK,MACH,OAAOqC,EAAS7tF,KAAMmI,EAAQyY,EAAQnhB,GAExC,IAAK,OACL,IAAK,QACH,OAAOwuF,EAAUjuF,KAAMmI,EAAQyY,EAAQnhB,GAEzC,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAO0uF,EAAWnuF,KAAMmI,EAAQyY,EAAQnhB,GAE1C,IAAK,SAEH,OAAO6uF,EAAYtuF,KAAMmI,EAAQyY,EAAQnhB,GAE3C,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO8uF,EAAUvuF,KAAMmI,EAAQyY,EAAQnhB,GAEzC,QACE,GAAIgtF,EAAa,MAAM,IAAIjpF,UAAU,qBAAuBgoF,GAC5DA,GAAY,GAAKA,GAAU/xC,cAC3BgzC,GAAc,IAKtBhsE,EAAO7gB,UAAUurE,OAAS,WACxB,MAAO,CACL3mE,KAAM,SACNiR,KAAMpT,MAAMzC,UAAUoD,MAAMlD,KAAKE,KAAKm5B,MAAQn5B,KAAM,KA2FxD,MAAMkvF,EAAuB,KAoB7B,SAASnC,EAAY/kE,EAAKxD,EAAOsF,GAC/B,IAAI4I,EAAM,GACV5I,EAAM3e,KAAKkD,IAAI2Z,EAAIvoB,OAAQqqB,GAE3B,IAAK,IAAIvqB,EAAIilB,EAAOjlB,EAAIuqB,IAAOvqB,EAC7BmzB,GAAOre,OAAOC,aAAsB,IAAT0T,EAAIzoB,IAEjC,OAAOmzB,EAGT,SAASs6D,EAAahlE,EAAKxD,EAAOsF,GAChC,IAAI4I,EAAM,GACV5I,EAAM3e,KAAKkD,IAAI2Z,EAAIvoB,OAAQqqB,GAE3B,IAAK,IAAIvqB,EAAIilB,EAAOjlB,EAAIuqB,IAAOvqB,EAC7BmzB,GAAOre,OAAOC,aAAa0T,EAAIzoB,IAEjC,OAAOmzB,EAGT,SAASm6D,EAAU7kE,EAAKxD,EAAOsF,GAC7B,MAAM3nB,EAAM6lB,EAAIvoB,SAEX+kB,GAASA,EAAQ,KAAGA,EAAQ,KAC5BsF,GAAOA,EAAM,GAAKA,EAAM3nB,KAAK2nB,EAAM3nB,GAExC,IAAIsf,EAAM,GACV,IAAK,IAAIliB,EAAIilB,EAAOjlB,EAAIuqB,IAAOvqB,EAC7BkiB,GAAO8uE,EAAoBvoE,EAAIzoB,IAEjC,OAAOkiB,EAGT,SAASyrE,EAAcllE,EAAKxD,EAAOsF,GACjC,MAAMhQ,EAAQkO,EAAIhlB,MAAMwhB,EAAOsF,GAC/B,IAAIxI,EAAM,GAEV,IAAK,IAAI/hB,EAAI,EAAGA,EAAIua,EAAMra,OAAS,EAAGF,GAAK,EACzC+hB,GAAOjN,OAAOC,aAAawF,EAAMva,GAAqB,IAAfua,EAAMva,EAAI,IAEnD,OAAO+hB,EAkCT,SAASkvE,EAAa5vE,EAAQ6vE,EAAKhxF,GACjC,GAAKmhB,EAAS,IAAO,GAAKA,EAAS,EAAG,MAAM,IAAI0qE,WAAW,sBAC3D,GAAI1qE,EAAS6vE,EAAMhxF,EAAQ,MAAM,IAAI6rF,WAAW,yCA0QlD,SAASoF,EAAU1oE,EAAKzkB,EAAOqd,EAAQ6vE,EAAKviF,EAAKG,GAC/C,IAAKoS,EAAOE,SAASqH,GAAM,MAAM,IAAIxkB,UAAU,+CAC/C,GAAID,EAAQ2K,GAAO3K,EAAQ8K,EAAK,MAAM,IAAIi9E,WAAW,qCACrD,GAAI1qE,EAAS6vE,EAAMzoE,EAAIvoB,OAAQ,MAAM,IAAI6rF,WAAW,sBAgGtD,SAASqF,EAAgB3oE,EAAKzkB,EAAOqd,EAAQvS,EAAKH,GAChD0iF,EAAWrtF,EAAO8K,EAAKH,EAAK8Z,EAAKpH,EAAQ,GAEzC,IAAI4pD,EAAKsjB,OAAOvqF,EAAQstF,OAAO,aAC/B7oE,EAAIpH,KAAY4pD,EAChBA,IAAW,EACXxiD,EAAIpH,KAAY4pD,EAChBA,IAAW,EACXxiD,EAAIpH,KAAY4pD,EAChBA,IAAW,EACXxiD,EAAIpH,KAAY4pD,EAChB,IAAIsB,EAAKgiB,OAAOvqF,GAASstF,OAAO,IAAMA,OAAO,aAQ7C,OAPA7oE,EAAIpH,KAAYkrD,EAChBA,IAAW,EACX9jD,EAAIpH,KAAYkrD,EAChBA,IAAW,EACX9jD,EAAIpH,KAAYkrD,EAChBA,IAAW,EACX9jD,EAAIpH,KAAYkrD,EACTlrD,EAGT,SAASkwE,EAAgB9oE,EAAKzkB,EAAOqd,EAAQvS,EAAKH,GAChD0iF,EAAWrtF,EAAO8K,EAAKH,EAAK8Z,EAAKpH,EAAQ,GAEzC,IAAI4pD,EAAKsjB,OAAOvqF,EAAQstF,OAAO,aAC/B7oE,EAAIpH,EAAS,GAAK4pD,EAClBA,IAAW,EACXxiD,EAAIpH,EAAS,GAAK4pD,EAClBA,IAAW,EACXxiD,EAAIpH,EAAS,GAAK4pD,EAClBA,IAAW,EACXxiD,EAAIpH,EAAS,GAAK4pD,EAClB,IAAIsB,EAAKgiB,OAAOvqF,GAASstF,OAAO,IAAMA,OAAO,aAQ7C,OAPA7oE,EAAIpH,EAAS,GAAKkrD,EAClBA,IAAW,EACX9jD,EAAIpH,EAAS,GAAKkrD,EAClBA,IAAW,EACX9jD,EAAIpH,EAAS,GAAKkrD,EAClBA,IAAW,EACX9jD,EAAIpH,GAAUkrD,EACPlrD,EAAS,EAmHlB,SAASmwE,EAAc/oE,EAAKzkB,EAAOqd,EAAQ6vE,EAAKviF,EAAKG,GACnD,GAAIuS,EAAS6vE,EAAMzoE,EAAIvoB,OAAQ,MAAM,IAAI6rF,WAAW,sBACpD,GAAI1qE,EAAS,EAAG,MAAM,IAAI0qE,WAAW,sBAGvC,SAAS0F,EAAYhpE,EAAKzkB,EAAOqd,EAAQ4qD,EAAcylB,GAOrD,OANA1tF,GAASA,EACTqd,KAAoB,EACfqwE,GACHF,EAAa/oE,EAAKzkB,EAAOqd,EAAQ,GAEnCoqE,EAAQrpE,MAAMqG,EAAKzkB,EAAOqd,EAAQ4qD,EAAc,GAAI,GAC7C5qD,EAAS,EAWlB,SAASswE,EAAalpE,EAAKzkB,EAAOqd,EAAQ4qD,EAAcylB,GAOtD,OANA1tF,GAASA,EACTqd,KAAoB,EACfqwE,GACHF,EAAa/oE,EAAKzkB,EAAOqd,EAAQ,GAEnCoqE,EAAQrpE,MAAMqG,EAAKzkB,EAAOqd,EAAQ4qD,EAAc,GAAI,GAC7C5qD,EAAS,EAxkBlBH,EAAO7gB,UAAUoD,MAAQ,SAAgBwhB,EAAOsF,GAC9C,MAAM3nB,EAAMnC,KAAKP,QACjB+kB,IAAUA,GAGE,GACVA,GAASriB,GACG,IAAGqiB,EAAQ,GACdA,EAAQriB,IACjBqiB,EAAQriB,IANV2nB,OAAcnE,IAARmE,EAAoB3nB,IAAQ2nB,GASxB,GACRA,GAAO3nB,GACG,IAAG2nB,EAAM,GACVA,EAAM3nB,IACf2nB,EAAM3nB,GAGJ2nB,EAAMtF,IAAOsF,EAAMtF,GAEvB,MAAM2sE,EAASnxF,KAAK4J,SAAS4a,EAAOsF,GAIpC,OAFA1qB,OAAOy4B,eAAes5D,EAAQ1wE,EAAO7gB,WAE9BuxF,GAWT1wE,EAAO7gB,UAAUwxF,WACjB3wE,EAAO7gB,UAAUyxF,WAAa,SAAqBzwE,EAAQ9W,EAAYmnF,GACrErwE,KAAoB,EACpB9W,KAA4B,EACvBmnF,GAAUT,EAAY5vE,EAAQ9W,EAAY9J,KAAKP,QAEpD,IAAIsc,EAAM/b,KAAK4gB,GACXsoD,EAAM,EACN3pE,EAAI,EACR,OAASA,EAAIuK,IAAeo/D,GAAO,MACjCntD,GAAO/b,KAAK4gB,EAASrhB,GAAK2pE,EAG5B,OAAOntD,GAGT0E,EAAO7gB,UAAU0xF,WACjB7wE,EAAO7gB,UAAU2xF,WAAa,SAAqB3wE,EAAQ9W,EAAYmnF,GACrErwE,KAAoB,EACpB9W,KAA4B,EACvBmnF,GACHT,EAAY5vE,EAAQ9W,EAAY9J,KAAKP,QAGvC,IAAIsc,EAAM/b,KAAK4gB,IAAW9W,GACtBo/D,EAAM,EACV,KAAOp/D,EAAa,IAAMo/D,GAAO,MAC/BntD,GAAO/b,KAAK4gB,IAAW9W,GAAco/D,EAGvC,OAAOntD,GAGT0E,EAAO7gB,UAAU4xF,UACjB/wE,EAAO7gB,UAAUwhB,UAAY,SAAoBR,EAAQqwE,GAGvD,OAFArwE,KAAoB,EACfqwE,GAAUT,EAAY5vE,EAAQ,EAAG5gB,KAAKP,QACpCO,KAAK4gB,IAGdH,EAAO7gB,UAAU6xF,aACjBhxE,EAAO7gB,UAAU8xF,aAAe,SAAuB9wE,EAAQqwE,GAG7D,OAFArwE,KAAoB,EACfqwE,GAAUT,EAAY5vE,EAAQ,EAAG5gB,KAAKP,QACpCO,KAAK4gB,GAAW5gB,KAAK4gB,EAAS,IAAM,GAG7CH,EAAO7gB,UAAU+xF,aACjBlxE,EAAO7gB,UAAU6oB,aAAe,SAAuB7H,EAAQqwE,GAG7D,OAFArwE,KAAoB,EACfqwE,GAAUT,EAAY5vE,EAAQ,EAAG5gB,KAAKP,QACnCO,KAAK4gB,IAAW,EAAK5gB,KAAK4gB,EAAS,IAG7CH,EAAO7gB,UAAUgyF,aACjBnxE,EAAO7gB,UAAUiyF,aAAe,SAAuBjxE,EAAQqwE,GAI7D,OAHArwE,KAAoB,EACfqwE,GAAUT,EAAY5vE,EAAQ,EAAG5gB,KAAKP,SAElCO,KAAK4gB,GACT5gB,KAAK4gB,EAAS,IAAM,EACpB5gB,KAAK4gB,EAAS,IAAM,IACD,SAAnB5gB,KAAK4gB,EAAS,IAGrBH,EAAO7gB,UAAUkyF,aACjBrxE,EAAO7gB,UAAUo9E,aAAe,SAAuBp8D,EAAQqwE,GAI7D,OAHArwE,KAAoB,EACfqwE,GAAUT,EAAY5vE,EAAQ,EAAG5gB,KAAKP,QAEpB,SAAfO,KAAK4gB,IACT5gB,KAAK4gB,EAAS,IAAM,GACrB5gB,KAAK4gB,EAAS,IAAM,EACrB5gB,KAAK4gB,EAAS,KAGlBH,EAAO7gB,UAAUmyF,gBAAkBC,GAAmB,SAA0BpxE,GAE9EqxE,EADArxE,KAAoB,EACG,UACvB,MAAMqI,EAAQjpB,KAAK4gB,GACbm9B,EAAO/9C,KAAK4gB,EAAS,QACb+E,IAAVsD,QAAgCtD,IAATo4B,GACzBm0C,EAAYtxE,EAAQ5gB,KAAKP,OAAS,GAGpC,MAAM+qE,EAAKvhD,EACQ,IAAjBjpB,OAAO4gB,GACU,MAAjB5gB,OAAO4gB,GACP5gB,OAAO4gB,GAAU,GAAK,GAElBkrD,EAAK9rE,OAAO4gB,GACC,IAAjB5gB,OAAO4gB,GACU,MAAjB5gB,OAAO4gB,GACPm9B,EAAO,GAAK,GAEd,OAAO8yC,OAAOrmB,IAAOqmB,OAAO/kB,IAAO+kB,OAAO,QAG5CpwE,EAAO7gB,UAAUuyF,gBAAkBH,GAAmB,SAA0BpxE,GAE9EqxE,EADArxE,KAAoB,EACG,UACvB,MAAMqI,EAAQjpB,KAAK4gB,GACbm9B,EAAO/9C,KAAK4gB,EAAS,QACb+E,IAAVsD,QAAgCtD,IAATo4B,GACzBm0C,EAAYtxE,EAAQ5gB,KAAKP,OAAS,GAGpC,MAAMqsE,EAAK7iD,EAAQ,GAAK,GACL,MAAjBjpB,OAAO4gB,GACU,IAAjB5gB,OAAO4gB,GACP5gB,OAAO4gB,GAEH4pD,EAAKxqE,OAAO4gB,GAAU,GAAK,GACd,MAAjB5gB,OAAO4gB,GACU,IAAjB5gB,OAAO4gB,GACPm9B,EAEF,OAAQ8yC,OAAO/kB,IAAO+kB,OAAO,KAAOA,OAAOrmB,MAG7C/pD,EAAO7gB,UAAUwyF,UAAY,SAAoBxxE,EAAQ9W,EAAYmnF,GACnErwE,KAAoB,EACpB9W,KAA4B,EACvBmnF,GAAUT,EAAY5vE,EAAQ9W,EAAY9J,KAAKP,QAEpD,IAAIsc,EAAM/b,KAAK4gB,GACXsoD,EAAM,EACN3pE,EAAI,EACR,OAASA,EAAIuK,IAAeo/D,GAAO,MACjCntD,GAAO/b,KAAK4gB,EAASrhB,GAAK2pE,EAM5B,OAJAA,GAAO,IAEHntD,GAAOmtD,IAAKntD,GAAO5Q,KAAKM,IAAI,EAAG,EAAI3B,IAEhCiS,GAGT0E,EAAO7gB,UAAUyyF,UAAY,SAAoBzxE,EAAQ9W,EAAYmnF,GACnErwE,KAAoB,EACpB9W,KAA4B,EACvBmnF,GAAUT,EAAY5vE,EAAQ9W,EAAY9J,KAAKP,QAEpD,IAAIF,EAAIuK,EACJo/D,EAAM,EACNntD,EAAM/b,KAAK4gB,IAAWrhB,GAC1B,KAAOA,EAAI,IAAM2pE,GAAO,MACtBntD,GAAO/b,KAAK4gB,IAAWrhB,GAAK2pE,EAM9B,OAJAA,GAAO,IAEHntD,GAAOmtD,IAAKntD,GAAO5Q,KAAKM,IAAI,EAAG,EAAI3B,IAEhCiS,GAGT0E,EAAO7gB,UAAU0yF,SAAW,SAAmB1xE,EAAQqwE,GAGrD,OAFArwE,KAAoB,EACfqwE,GAAUT,EAAY5vE,EAAQ,EAAG5gB,KAAKP,QACtB,IAAfO,KAAK4gB,IAC0B,GAA5B,IAAO5gB,KAAK4gB,GAAU,GADK5gB,KAAK4gB,IAI3CH,EAAO7gB,UAAU2yF,YAAc,SAAsB3xE,EAAQqwE,GAC3DrwE,KAAoB,EACfqwE,GAAUT,EAAY5vE,EAAQ,EAAG5gB,KAAKP,QAC3C,MAAMsc,EAAM/b,KAAK4gB,GAAW5gB,KAAK4gB,EAAS,IAAM,EAChD,OAAc,MAAN7E,EAAsB,WAANA,EAAmBA,GAG7C0E,EAAO7gB,UAAU4yF,YAAc,SAAsB5xE,EAAQqwE,GAC3DrwE,KAAoB,EACfqwE,GAAUT,EAAY5vE,EAAQ,EAAG5gB,KAAKP,QAC3C,MAAMsc,EAAM/b,KAAK4gB,EAAS,GAAM5gB,KAAK4gB,IAAW,EAChD,OAAc,MAAN7E,EAAsB,WAANA,EAAmBA,GAG7C0E,EAAO7gB,UAAU6yF,YAAc,SAAsB7xE,EAAQqwE,GAI3D,OAHArwE,KAAoB,EACfqwE,GAAUT,EAAY5vE,EAAQ,EAAG5gB,KAAKP,QAEnCO,KAAK4gB,GACV5gB,KAAK4gB,EAAS,IAAM,EACpB5gB,KAAK4gB,EAAS,IAAM,GACpB5gB,KAAK4gB,EAAS,IAAM,IAGzBH,EAAO7gB,UAAU8yF,YAAc,SAAsB9xE,EAAQqwE,GAI3D,OAHArwE,KAAoB,EACfqwE,GAAUT,EAAY5vE,EAAQ,EAAG5gB,KAAKP,QAEnCO,KAAK4gB,IAAW,GACrB5gB,KAAK4gB,EAAS,IAAM,GACpB5gB,KAAK4gB,EAAS,IAAM,EACpB5gB,KAAK4gB,EAAS,IAGnBH,EAAO7gB,UAAU+yF,eAAiBX,GAAmB,SAAyBpxE,GAE5EqxE,EADArxE,KAAoB,EACG,UACvB,MAAMqI,EAAQjpB,KAAK4gB,GACbm9B,EAAO/9C,KAAK4gB,EAAS,QACb+E,IAAVsD,QAAgCtD,IAATo4B,GACzBm0C,EAAYtxE,EAAQ5gB,KAAKP,OAAS,GAGpC,MAAMsc,EAAM/b,KAAK4gB,EAAS,GACL,IAAnB5gB,KAAK4gB,EAAS,GACK,MAAnB5gB,KAAK4gB,EAAS,IACbm9B,GAAQ,IAEX,OAAQ8yC,OAAO90E,IAAQ80E,OAAO,KAC5BA,OAAO5nE,EACU,IAAjBjpB,OAAO4gB,GACU,MAAjB5gB,OAAO4gB,GACP5gB,OAAO4gB,GAAU,GAAK,OAG1BH,EAAO7gB,UAAUgzF,eAAiBZ,GAAmB,SAAyBpxE,GAE5EqxE,EADArxE,KAAoB,EACG,UACvB,MAAMqI,EAAQjpB,KAAK4gB,GACbm9B,EAAO/9C,KAAK4gB,EAAS,QACb+E,IAAVsD,QAAgCtD,IAATo4B,GACzBm0C,EAAYtxE,EAAQ5gB,KAAKP,OAAS,GAGpC,MAAMsc,GAAOkN,GAAS,IACH,MAAjBjpB,OAAO4gB,GACU,IAAjB5gB,OAAO4gB,GACP5gB,OAAO4gB,GAET,OAAQiwE,OAAO90E,IAAQ80E,OAAO,KAC5BA,OAAO7wF,OAAO4gB,GAAU,GAAK,GACZ,MAAjB5gB,OAAO4gB,GACU,IAAjB5gB,OAAO4gB,GACPm9B,MAGJt9B,EAAO7gB,UAAUizF,YAAc,SAAsBjyE,EAAQqwE,GAG3D,OAFArwE,KAAoB,EACfqwE,GAAUT,EAAY5vE,EAAQ,EAAG5gB,KAAKP,QACpCurF,EAAQ1sC,KAAKt+C,KAAM4gB,GAAQ,EAAM,GAAI,IAG9CH,EAAO7gB,UAAUkzF,YAAc,SAAsBlyE,EAAQqwE,GAG3D,OAFArwE,KAAoB,EACfqwE,GAAUT,EAAY5vE,EAAQ,EAAG5gB,KAAKP,QACpCurF,EAAQ1sC,KAAKt+C,KAAM4gB,GAAQ,EAAO,GAAI,IAG/CH,EAAO7gB,UAAUmzF,aAAe,SAAuBnyE,EAAQqwE,GAG7D,OAFArwE,KAAoB,EACfqwE,GAAUT,EAAY5vE,EAAQ,EAAG5gB,KAAKP,QACpCurF,EAAQ1sC,KAAKt+C,KAAM4gB,GAAQ,EAAM,GAAI,IAG9CH,EAAO7gB,UAAUozF,aAAe,SAAuBpyE,EAAQqwE,GAG7D,OAFArwE,KAAoB,EACfqwE,GAAUT,EAAY5vE,EAAQ,EAAG5gB,KAAKP,QACpCurF,EAAQ1sC,KAAKt+C,KAAM4gB,GAAQ,EAAO,GAAI,IAS/CH,EAAO7gB,UAAUqzF,YACjBxyE,EAAO7gB,UAAUszF,YAAc,SAAsB3vF,EAAOqd,EAAQ9W,EAAYmnF,GAI9E,GAHA1tF,GAASA,EACTqd,KAAoB,EACpB9W,KAA4B,GACvBmnF,EAAU,CAEbP,EAAS1wF,KAAMuD,EAAOqd,EAAQ9W,EADbqB,KAAKM,IAAI,EAAG,EAAI3B,GAAc,EACK,GAGtD,IAAIo/D,EAAM,EACN3pE,EAAI,EAER,IADAS,KAAK4gB,GAAkB,IAARrd,IACNhE,EAAIuK,IAAeo/D,GAAO,MACjClpE,KAAK4gB,EAASrhB,GAAMgE,EAAQ2lE,EAAO,IAGrC,OAAOtoD,EAAS9W,GAGlB2W,EAAO7gB,UAAUuzF,YACjB1yE,EAAO7gB,UAAU6gF,YAAc,SAAsBl9E,EAAOqd,EAAQ9W,EAAYmnF,GAI9E,GAHA1tF,GAASA,EACTqd,KAAoB,EACpB9W,KAA4B,GACvBmnF,EAAU,CAEbP,EAAS1wF,KAAMuD,EAAOqd,EAAQ9W,EADbqB,KAAKM,IAAI,EAAG,EAAI3B,GAAc,EACK,GAGtD,IAAIvK,EAAIuK,EAAa,EACjBo/D,EAAM,EAEV,IADAlpE,KAAK4gB,EAASrhB,GAAa,IAARgE,IACVhE,GAAK,IAAM2pE,GAAO,MACzBlpE,KAAK4gB,EAASrhB,GAAMgE,EAAQ2lE,EAAO,IAGrC,OAAOtoD,EAAS9W,GAGlB2W,EAAO7gB,UAAUwzF,WACjB3yE,EAAO7gB,UAAU+jF,WAAa,SAAqBpgF,EAAOqd,EAAQqwE,GAKhE,OAJA1tF,GAASA,EACTqd,KAAoB,EACfqwE,GAAUP,EAAS1wF,KAAMuD,EAAOqd,EAAQ,EAAG,IAAM,GACtD5gB,KAAK4gB,GAAmB,IAARrd,EACTqd,EAAS,GAGlBH,EAAO7gB,UAAUyzF,cACjB5yE,EAAO7gB,UAAU0zF,cAAgB,SAAwB/vF,EAAOqd,EAAQqwE,GAMtE,OALA1tF,GAASA,EACTqd,KAAoB,EACfqwE,GAAUP,EAAS1wF,KAAMuD,EAAOqd,EAAQ,EAAG,MAAQ,GACxD5gB,KAAK4gB,GAAmB,IAARrd,EAChBvD,KAAK4gB,EAAS,GAAMrd,IAAU,EACvBqd,EAAS,GAGlBH,EAAO7gB,UAAU2zF,cACjB9yE,EAAO7gB,UAAUyqB,cAAgB,SAAwB9mB,EAAOqd,EAAQqwE,GAMtE,OALA1tF,GAASA,EACTqd,KAAoB,EACfqwE,GAAUP,EAAS1wF,KAAMuD,EAAOqd,EAAQ,EAAG,MAAQ,GACxD5gB,KAAK4gB,GAAWrd,IAAU,EAC1BvD,KAAK4gB,EAAS,GAAc,IAARrd,EACbqd,EAAS,GAGlBH,EAAO7gB,UAAU4zF,cACjB/yE,EAAO7gB,UAAU6zF,cAAgB,SAAwBlwF,EAAOqd,EAAQqwE,GAQtE,OAPA1tF,GAASA,EACTqd,KAAoB,EACfqwE,GAAUP,EAAS1wF,KAAMuD,EAAOqd,EAAQ,EAAG,WAAY,GAC5D5gB,KAAK4gB,EAAS,GAAMrd,IAAU,GAC9BvD,KAAK4gB,EAAS,GAAMrd,IAAU,GAC9BvD,KAAK4gB,EAAS,GAAMrd,IAAU,EAC9BvD,KAAK4gB,GAAmB,IAARrd,EACTqd,EAAS,GAGlBH,EAAO7gB,UAAU8zF,cACjBjzE,EAAO7gB,UAAU8/E,cAAgB,SAAwBn8E,EAAOqd,EAAQqwE,GAQtE,OAPA1tF,GAASA,EACTqd,KAAoB,EACfqwE,GAAUP,EAAS1wF,KAAMuD,EAAOqd,EAAQ,EAAG,WAAY,GAC5D5gB,KAAK4gB,GAAWrd,IAAU,GAC1BvD,KAAK4gB,EAAS,GAAMrd,IAAU,GAC9BvD,KAAK4gB,EAAS,GAAMrd,IAAU,EAC9BvD,KAAK4gB,EAAS,GAAc,IAARrd,EACbqd,EAAS,GA+ClBH,EAAO7gB,UAAU+zF,iBAAmB3B,GAAmB,SAA2BzuF,EAAOqd,EAAS,GAChG,OAAO+vE,EAAe3wF,KAAMuD,EAAOqd,EAAQiwE,OAAO,GAAIA,OAAO,0BAG/DpwE,EAAO7gB,UAAUg0F,iBAAmB5B,GAAmB,SAA2BzuF,EAAOqd,EAAS,GAChG,OAAOkwE,EAAe9wF,KAAMuD,EAAOqd,EAAQiwE,OAAO,GAAIA,OAAO,0BAG/DpwE,EAAO7gB,UAAUi0F,WAAa,SAAqBtwF,EAAOqd,EAAQ9W,EAAYmnF,GAG5E,GAFA1tF,GAASA,EACTqd,KAAoB,GACfqwE,EAAU,CACb,MAAM6C,EAAQ3oF,KAAKM,IAAI,EAAI,EAAI3B,EAAc,GAE7C4mF,EAAS1wF,KAAMuD,EAAOqd,EAAQ9W,EAAYgqF,EAAQ,GAAIA,GAGxD,IAAIv0F,EAAI,EACJ2pE,EAAM,EACN0E,EAAM,EAEV,IADA5tE,KAAK4gB,GAAkB,IAARrd,IACNhE,EAAIuK,IAAeo/D,GAAO,MAC7B3lE,EAAQ,GAAa,IAARqqE,GAAsC,IAAzB5tE,KAAK4gB,EAASrhB,EAAI,KAC9CquE,EAAM,GAER5tE,KAAK4gB,EAASrhB,IAAOgE,EAAQ2lE,GAAQ,GAAK0E,EAAM,IAGlD,OAAOhtD,EAAS9W,GAGlB2W,EAAO7gB,UAAUm0F,WAAa,SAAqBxwF,EAAOqd,EAAQ9W,EAAYmnF,GAG5E,GAFA1tF,GAASA,EACTqd,KAAoB,GACfqwE,EAAU,CACb,MAAM6C,EAAQ3oF,KAAKM,IAAI,EAAI,EAAI3B,EAAc,GAE7C4mF,EAAS1wF,KAAMuD,EAAOqd,EAAQ9W,EAAYgqF,EAAQ,GAAIA,GAGxD,IAAIv0F,EAAIuK,EAAa,EACjBo/D,EAAM,EACN0E,EAAM,EAEV,IADA5tE,KAAK4gB,EAASrhB,GAAa,IAARgE,IACVhE,GAAK,IAAM2pE,GAAO,MACrB3lE,EAAQ,GAAa,IAARqqE,GAAsC,IAAzB5tE,KAAK4gB,EAASrhB,EAAI,KAC9CquE,EAAM,GAER5tE,KAAK4gB,EAASrhB,IAAOgE,EAAQ2lE,GAAQ,GAAK0E,EAAM,IAGlD,OAAOhtD,EAAS9W,GAGlB2W,EAAO7gB,UAAUo0F,UAAY,SAAoBzwF,EAAOqd,EAAQqwE,GAM9D,OALA1tF,GAASA,EACTqd,KAAoB,EACfqwE,GAAUP,EAAS1wF,KAAMuD,EAAOqd,EAAQ,EAAG,KAAO,KACnDrd,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtCvD,KAAK4gB,GAAmB,IAARrd,EACTqd,EAAS,GAGlBH,EAAO7gB,UAAUq0F,aAAe,SAAuB1wF,EAAOqd,EAAQqwE,GAMpE,OALA1tF,GAASA,EACTqd,KAAoB,EACfqwE,GAAUP,EAAS1wF,KAAMuD,EAAOqd,EAAQ,EAAG,OAAS,OACzD5gB,KAAK4gB,GAAmB,IAARrd,EAChBvD,KAAK4gB,EAAS,GAAMrd,IAAU,EACvBqd,EAAS,GAGlBH,EAAO7gB,UAAUs0F,aAAe,SAAuB3wF,EAAOqd,EAAQqwE,GAMpE,OALA1tF,GAASA,EACTqd,KAAoB,EACfqwE,GAAUP,EAAS1wF,KAAMuD,EAAOqd,EAAQ,EAAG,OAAS,OACzD5gB,KAAK4gB,GAAWrd,IAAU,EAC1BvD,KAAK4gB,EAAS,GAAc,IAARrd,EACbqd,EAAS,GAGlBH,EAAO7gB,UAAUu0F,aAAe,SAAuB5wF,EAAOqd,EAAQqwE,GAQpE,OAPA1tF,GAASA,EACTqd,KAAoB,EACfqwE,GAAUP,EAAS1wF,KAAMuD,EAAOqd,EAAQ,EAAG,YAAa,YAC7D5gB,KAAK4gB,GAAmB,IAARrd,EAChBvD,KAAK4gB,EAAS,GAAMrd,IAAU,EAC9BvD,KAAK4gB,EAAS,GAAMrd,IAAU,GAC9BvD,KAAK4gB,EAAS,GAAMrd,IAAU,GACvBqd,EAAS,GAGlBH,EAAO7gB,UAAUw0F,aAAe,SAAuB7wF,EAAOqd,EAAQqwE,GASpE,OARA1tF,GAASA,EACTqd,KAAoB,EACfqwE,GAAUP,EAAS1wF,KAAMuD,EAAOqd,EAAQ,EAAG,YAAa,YACzDrd,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5CvD,KAAK4gB,GAAWrd,IAAU,GAC1BvD,KAAK4gB,EAAS,GAAMrd,IAAU,GAC9BvD,KAAK4gB,EAAS,GAAMrd,IAAU,EAC9BvD,KAAK4gB,EAAS,GAAc,IAARrd,EACbqd,EAAS,GAGlBH,EAAO7gB,UAAUy0F,gBAAkBrC,GAAmB,SAA0BzuF,EAAOqd,EAAS,GAC9F,OAAO+vE,EAAe3wF,KAAMuD,EAAOqd,GAASiwE,OAAO,sBAAuBA,OAAO,0BAGnFpwE,EAAO7gB,UAAU00F,gBAAkBtC,GAAmB,SAA0BzuF,EAAOqd,EAAS,GAC9F,OAAOkwE,EAAe9wF,KAAMuD,EAAOqd,GAASiwE,OAAO,sBAAuBA,OAAO,0BAkBnFpwE,EAAO7gB,UAAU20F,aAAe,SAAuBhxF,EAAOqd,EAAQqwE,GACpE,OAAOD,EAAWhxF,KAAMuD,EAAOqd,GAAQ,EAAMqwE,IAG/CxwE,EAAO7gB,UAAU40F,aAAe,SAAuBjxF,EAAOqd,EAAQqwE,GACpE,OAAOD,EAAWhxF,KAAMuD,EAAOqd,GAAQ,EAAOqwE,IAahDxwE,EAAO7gB,UAAU60F,cAAgB,SAAwBlxF,EAAOqd,EAAQqwE,GACtE,OAAOC,EAAYlxF,KAAMuD,EAAOqd,GAAQ,EAAMqwE,IAGhDxwE,EAAO7gB,UAAU80F,cAAgB,SAAwBnxF,EAAOqd,EAAQqwE,GACtE,OAAOC,EAAYlxF,KAAMuD,EAAOqd,GAAQ,EAAOqwE,IAIjDxwE,EAAO7gB,UAAUgiB,KAAO,SAAetiB,EAAQq1F,EAAanwE,EAAOsF,GACjE,IAAKrJ,EAAOE,SAASrhB,GAAS,MAAM,IAAIkE,UAAU,+BAQlD,GAPKghB,IAAOA,EAAQ,GACfsF,GAAe,IAARA,IAAWA,EAAM9pB,KAAKP,QAC9Bk1F,GAAer1F,EAAOG,SAAQk1F,EAAcr1F,EAAOG,QAClDk1F,IAAaA,EAAc,GAC5B7qE,EAAM,GAAKA,EAAMtF,IAAOsF,EAAMtF,GAG9BsF,IAAQtF,EAAO,OAAO,EAC1B,GAAsB,IAAlBllB,EAAOG,QAAgC,IAAhBO,KAAKP,OAAc,OAAO,EAGrD,GAAIk1F,EAAc,EAChB,MAAM,IAAIrJ,WAAW,6BAEvB,GAAI9mE,EAAQ,GAAKA,GAASxkB,KAAKP,OAAQ,MAAM,IAAI6rF,WAAW,sBAC5D,GAAIxhE,EAAM,EAAG,MAAM,IAAIwhE,WAAW,2BAG9BxhE,EAAM9pB,KAAKP,SAAQqqB,EAAM9pB,KAAKP,QAC9BH,EAAOG,OAASk1F,EAAc7qE,EAAMtF,IACtCsF,EAAMxqB,EAAOG,OAASk1F,EAAcnwE,GAGtC,MAAMriB,EAAM2nB,EAAMtF,EAalB,OAXIxkB,OAASV,GAAqD,oBAApC2J,WAAWrJ,UAAUg1F,WAEjD50F,KAAK40F,WAAWD,EAAanwE,EAAOsF,GAEpC7gB,WAAWrJ,UAAUmK,IAAIjK,KACvBR,EACAU,KAAK4J,SAAS4a,EAAOsF,GACrB6qE,GAIGxyF,GAOTse,EAAO7gB,UAAUuzB,KAAO,SAAepX,EAAKyI,EAAOsF,EAAK0hE,GAEtD,GAAmB,kBAARzvE,EAAkB,CAS3B,GARqB,kBAAVyI,GACTgnE,EAAWhnE,EACXA,EAAQ,EACRsF,EAAM9pB,KAAKP,QACa,kBAARqqB,IAChB0hE,EAAW1hE,EACXA,EAAM9pB,KAAKP,aAEIkmB,IAAb6lE,GAA8C,kBAAbA,EACnC,MAAM,IAAIhoF,UAAU,6BAEtB,GAAwB,kBAAbgoF,IAA0B/qE,EAAOgrE,WAAWD,GACrD,MAAM,IAAIhoF,UAAU,qBAAuBgoF,GAE7C,GAAmB,IAAfzvE,EAAItc,OAAc,CACpB,MAAMunE,EAAOjrD,EAAI7R,WAAW,IACV,SAAbshF,GAAuBxkB,EAAO,KAClB,WAAbwkB,KAEFzvE,EAAMirD,QAGc,kBAARjrD,EAChBA,GAAY,IACY,mBAARA,IAChBA,EAAM+xE,OAAO/xE,IAIf,GAAIyI,EAAQ,GAAKxkB,KAAKP,OAAS+kB,GAASxkB,KAAKP,OAASqqB,EACpD,MAAM,IAAIwhE,WAAW,sBAGvB,GAAIxhE,GAAOtF,EACT,OAAOxkB,KAQT,IAAIT,EACJ,GANAilB,KAAkB,EAClBsF,OAAcnE,IAARmE,EAAoB9pB,KAAKP,OAASqqB,IAAQ,EAE3C/N,IAAKA,EAAM,GAGG,kBAARA,EACT,IAAKxc,EAAIilB,EAAOjlB,EAAIuqB,IAAOvqB,EACzBS,KAAKT,GAAKwc,MAEP,CACL,MAAMjC,EAAQ2G,EAAOE,SAAS5E,GAC1BA,EACA0E,EAAOtd,KAAK4Y,EAAKyvE,GACfrpF,EAAM2X,EAAMra,OAClB,GAAY,IAAR0C,EACF,MAAM,IAAIqB,UAAU,cAAgBuY,EAClC,qCAEJ,IAAKxc,EAAI,EAAGA,EAAIuqB,EAAMtF,IAASjlB,EAC7BS,KAAKT,EAAIilB,GAAS1K,EAAMva,EAAI4C,GAIhC,OAAOnC,MAOT,MAAM+Z,EAAS,GACf,SAAShH,EAAGgkB,EAAK89D,EAAY70E,GAC3BjG,EAAOgd,GAAO,cAAwB/W,EACpC/c,cACE6xF,QAEA11F,OAAOk4B,eAAet3B,KAAM,UAAW,CACrCuD,MAAOsxF,EAAW90F,MAAMC,KAAMR,WAC9Bm4B,UAAU,EACVD,cAAc,IAIhB13B,KAAKkD,KAAO,GAAGlD,KAAKkD,SAAS6zB,KAG7B/2B,KAAKonB,aAEEpnB,KAAKkD,KAGV8jE,WACF,OAAOjwC,EAGLiwC,SAAMzjE,GACRnE,OAAOk4B,eAAet3B,KAAM,OAAQ,CAClC03B,cAAc,EACdT,YAAY,EACZ1zB,MAAAA,EACAo0B,UAAU,IAId50B,WACE,MAAO,GAAG/C,KAAKkD,SAAS6zB,OAAS/2B,KAAK0R,YAkC5C,SAASqjF,EAAuBh5E,GAC9B,IAAIuF,EAAM,GACN/hB,EAAIwc,EAAItc,OACZ,MAAM+kB,EAAmB,MAAXzI,EAAI,GAAa,EAAI,EACnC,KAAOxc,GAAKilB,EAAQ,EAAGjlB,GAAK,EAC1B+hB,EAAM,IAAIvF,EAAI/Y,MAAMzD,EAAI,EAAGA,KAAK+hB,IAElC,MAAO,GAAGvF,EAAI/Y,MAAM,EAAGzD,KAAK+hB,IAa9B,SAASsvE,EAAYrtF,EAAO8K,EAAKH,EAAK8Z,EAAKpH,EAAQ9W,GACjD,GAAIvG,EAAQ2K,GAAO3K,EAAQ8K,EAAK,CAC9B,MAAMvL,EAAmB,kBAARuL,EAAmB,IAAM,GAC1C,IAAIk3D,EAWJ,MARIA,EAFAz7D,EAAa,EACH,IAARuE,GAAaA,IAAQwiF,OAAO,GACtB,OAAO/tF,YAAYA,QAA2B,GAAlBgH,EAAa,KAAShH,IAElD,SAASA,QAA2B,GAAlBgH,EAAa,GAAS,IAAIhH,iBACtB,GAAlBgH,EAAa,GAAS,IAAIhH,IAGhC,MAAMuL,IAAMvL,YAAYoL,IAAMpL,IAElC,IAAIiX,EAAOi7E,iBAAiB,QAASzvB,EAAOhiE,IArBtD,SAAsBykB,EAAKpH,EAAQ9W,GACjCmoF,EAAerxE,EAAQ,eACH+E,IAAhBqC,EAAIpH,SAAsD+E,IAA7BqC,EAAIpH,EAAS9W,IAC5CooF,EAAYtxE,EAAQoH,EAAIvoB,QAAUqK,EAAa,IAoBjDmrF,CAAYjtE,EAAKpH,EAAQ9W,GAG3B,SAASmoF,EAAgB1uF,EAAOL,GAC9B,GAAqB,kBAAVK,EACT,MAAM,IAAIwW,EAAOm7E,qBAAqBhyF,EAAM,SAAUK,GAI1D,SAAS2uF,EAAa3uF,EAAO9D,EAAQ+E,GACnC,GAAI2G,KAAKC,MAAM7H,KAAWA,EAExB,MADA0uF,EAAe1uF,EAAOiB,GAChB,IAAIuV,EAAOi7E,iBAAiBxwF,GAAQ,SAAU,aAAcjB,GAGpE,GAAI9D,EAAS,EACX,MAAM,IAAIsa,EAAOo7E,yBAGnB,MAAM,IAAIp7E,EAAOi7E,iBAAiBxwF,GAAQ,SACR,MAAMA,EAAO,EAAI,YAAY/E,IAC7B8D,GAtFpCwP,EAAE,4BACA,SAAU7P,GACR,OAAIA,EACK,GAAGA,gCAGL,mDACNooF,YACLv4E,EAAE,wBACA,SAAU7P,EAAMwoF,GACd,MAAO,QAAQxoF,4DAA+DwoF,MAC7EloF,WACLuP,EAAE,oBACA,SAAU2T,EAAK6+C,EAAO3hD,GACpB,IAAIiD,EAAM,iBAAiBH,sBACvB0uE,EAAWxxE,EAWf,OAVIkqE,OAAOuH,UAAUzxE,IAAUzY,KAAKuC,IAAIkW,GAAS,GAAK,GACpDwxE,EAAWL,EAAsB1gF,OAAOuP,IACd,kBAAVA,IAChBwxE,EAAW/gF,OAAOuP,IACdA,EAAQitE,OAAO,IAAMA,OAAO,KAAOjtE,IAAUitE,OAAO,IAAMA,OAAO,QACnEuE,EAAWL,EAAsBK,IAEnCA,GAAY,KAEdvuE,GAAO,eAAe0+C,eAAmB6vB,IAClCvuE,IACNykE,YAiEL,MAAMgK,EAAoB,oBAgB1B,SAAS5I,EAAavkF,EAAQqmF,GAE5B,IAAIG,EADJH,EAAQA,GAASl+D,EAAAA,EAEjB,MAAM7wB,EAAS0I,EAAO1I,OACtB,IAAI81F,EAAgB,KACpB,MAAMz7E,EAAQ,GAEd,IAAK,IAAIva,EAAI,EAAGA,EAAIE,IAAUF,EAAG,CAI/B,GAHAovF,EAAYxmF,EAAO+B,WAAW3K,GAG1BovF,EAAY,OAAUA,EAAY,MAAQ,CAE5C,IAAK4G,EAAe,CAElB,GAAI5G,EAAY,MAAQ,EAEjBH,GAAS,IAAM,GAAG10E,EAAMhH,KAAK,IAAM,IAAM,KAC9C,SACK,GAAIvT,EAAI,IAAME,EAAQ,EAEtB+uF,GAAS,IAAM,GAAG10E,EAAMhH,KAAK,IAAM,IAAM,KAC9C,SAIFyiF,EAAgB5G,EAEhB,SAIF,GAAIA,EAAY,MAAQ,EACjBH,GAAS,IAAM,GAAG10E,EAAMhH,KAAK,IAAM,IAAM,KAC9CyiF,EAAgB5G,EAChB,SAIFA,EAAkE,OAArD4G,EAAgB,OAAU,GAAK5G,EAAY,YAC/C4G,IAEJ/G,GAAS,IAAM,GAAG10E,EAAMhH,KAAK,IAAM,IAAM,KAMhD,GAHAyiF,EAAgB,KAGZ5G,EAAY,IAAM,CACpB,IAAKH,GAAS,GAAK,EAAG,MACtB10E,EAAMhH,KAAK67E,QACN,GAAIA,EAAY,KAAO,CAC5B,IAAKH,GAAS,GAAK,EAAG,MACtB10E,EAAMhH,KACJ67E,GAAa,EAAM,IACP,GAAZA,EAAmB,UAEhB,GAAIA,EAAY,MAAS,CAC9B,IAAKH,GAAS,GAAK,EAAG,MACtB10E,EAAMhH,KACJ67E,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,SAEhB,MAAIA,EAAY,SASrB,MAAM,IAAI5qF,MAAM,sBARhB,IAAKyqF,GAAS,GAAK,EAAG,MACtB10E,EAAMhH,KACJ67E,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,MAOzB,OAAO70E,EA4BT,SAAS6yE,EAAejmE,GACtB,OAAO3R,EAAOqxD,YAxHhB,SAAsB1/C,GAMpB,IAFAA,GAFAA,EAAMA,EAAIjN,MAAM,KAAK,IAEXoW,OAAO/a,QAAQwgF,EAAmB,KAEpC71F,OAAS,EAAG,MAAO,GAE3B,KAAOinB,EAAIjnB,OAAS,IAAM,GACxBinB,GAAY,IAEd,OAAOA,EA6GmB8uE,CAAY9uE,IAGxC,SAASwnE,EAAYptD,EAAK20D,EAAK70E,EAAQnhB,GACrC,IAAIF,EACJ,IAAKA,EAAI,EAAGA,EAAIE,KACTF,EAAIqhB,GAAU60E,EAAIh2F,QAAYF,GAAKuhC,EAAIrhC,UADpBF,EAExBk2F,EAAIl2F,EAAIqhB,GAAUkgB,EAAIvhC,GAExB,OAAOA,EAMT,SAASusF,EAAYtpE,EAAKhe,GACxB,OAAOge,aAAehe,GACZ,MAAPge,GAAkC,MAAnBA,EAAIvf,aAA+C,MAAxBuf,EAAIvf,YAAYC,MACzDsf,EAAIvf,YAAYC,OAASsB,EAAKtB,KAEpC,SAASkpF,EAAa5pE,GAEpB,OAAOA,IAAQA,EAKjB,MAAM+tE,EAAsB,WAC1B,MAAMmF,EAAW,mBACXC,EAAQ,IAAItzF,MAAM,KACxB,IAAK,IAAI9C,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,MAAMq2F,EAAU,GAAJr2F,EACZ,IAAK,IAAIkK,EAAI,EAAGA,EAAI,KAAMA,EACxBksF,EAAMC,EAAMnsF,GAAKisF,EAASn2F,GAAKm2F,EAASjsF,GAG5C,OAAOksF,EATmB,GAa5B,SAAS3D,EAAoB5hE,GAC3B,MAAyB,qBAAXygE,OAAyBgF,EAAyBzlE,EAGlE,SAASylE,IACP,MAAM,IAAI9xF,MAAM,6DCtjElBkD,EAAOC,QAAU,CACfe,OAAQ,EAAQ,MAChB6tF,eAAgB,EAAQ,OACxBC,gBAAiB,EAAQ,OACzBC,eAAgB,EAAQ,OACxBC,IAAK,EAAQ,KACbC,WAAY,EAAQ,OACpBC,eAAgB,EAAQ,2CCP1B,IAAIC,EAAS,EAAQ,OACjBC,EAAe,EAAQ,OAE3B,SAASC,EAAaC,EAAMC,EAAoBC,GAC9C,MAAO,CAACF,KAAMA,EAAMC,mBAAoBA,EAAoBC,QAASA,GAqDvExvF,EAAOC,QAlDP,SAAoB3D,EAAOsX,GACzB,IAAI67E,EAAgBC,EAA8BF,EAASl3F,EAAGq3F,EAQ9D,GANA/7E,EAAUA,GAAW,GAEA,kBAAVtX,IACTA,EAAQ8Q,OAAO9Q,IAGI,kBAAVA,EAAsB,OAAO+yF,EAAa,MAAM,GAAO,GAIlE,GAFA/yF,EAAQA,EAAMuR,QAAQ,SAAU,KAE3B,QAAQ1R,KAAKG,GAAU,OAAO+yF,EAAa,MAAM,GAAO,GAI7D,GAA8B,KAF9BI,EAAiBL,EAAa9yF,IAEX9D,OACjB,OAAO62F,EAAa,MAAM,GAAO,GAC5B,GAA8B,IAA1BI,EAAej3F,OACxB,OAAO62F,EAAa,MAAM,GAAM,GAKlC,GAFAK,EAAWD,EAAe,GAEtB77E,EAAQ+7E,WAAarzF,EAAM9D,OAASob,EAAQ+7E,UAC9C,OAAON,EAAaK,GAAU,GAAO,GAcvC,IAVEF,EADEE,EAASnyF,OAAS6xF,EAAa96B,MAAMs7B,WAA6C,IAAjCh8E,EAAQi8E,sBAGjDV,EAAO7yF,GAGnBqzF,EAAYzrF,KAAK+C,IAAInO,MAAM,KAAM42F,EAASI,SACtCl8E,EAAQ+7E,YACVA,EAAYzrF,KAAKkD,IAAIwM,EAAQ+7E,UAAWA,IAGrCr3F,EAAI,EAAGA,EAAIo3F,EAASI,QAAQt3F,OAAQF,IACvC,GAAIo3F,EAASI,QAAQx3F,KAAOgE,EAAM9D,OAEhC,OAAO62F,EAAaK,EADCpzF,EAAM9D,OAASm3F,GAAaH,EACCA,GAItD,OAAOH,EAAaK,EAAUpzF,EAAM9D,OAASm3F,GAAW,kCC/B1D,SAASN,EAAaG,EAASD,GAC7B,MAAO,CAACC,QAASA,EAASD,mBAAoBA,GAgBhDvvF,EAAOC,QAbP,SAAa3D,EAAOqzF,GAIlB,OAFAA,GADAA,EAAYA,GA5BO,aA6Bcv0F,MAAQu0F,EAAY,CAACA,GAEjC,kBAAVrzF,EAA6B+yF,GAAa,GAAO,GACvD,QAAQlzF,KAAKG,GA9BpB,SAAkBsE,EAAOo7E,GAGvB,IAFA,IAAI1jF,EAAI,EAEDA,EAAIsI,EAAMpI,OAAQF,IACvB,GAAI0jF,IAAUp7E,EAAMtI,GAAM,OAAO,EAGnC,OAAO,EAwBHilD,CAASoyC,EAAWrzF,EAAM9D,QAAkB62F,GAAa,GAAM,GAC/D/yF,EAAM9D,OAAS0L,KAAKkD,IAAItO,MAAM,KAAM62F,GAAqBN,GAAa,GAAO,GAC7E/yF,EAAM9D,OAvBZ,SAAaoI,GAIX,IAHA,IAAImvF,EAbe,EAcfz3F,EAAI,EAEDA,EAAIsI,EAAMpI,OAAQF,IACvBy3F,EAAUnvF,EAAMtI,GAAKy3F,EAAUnvF,EAAMtI,GAAKy3F,EAG5C,OAAOA,EAeY9oF,CAAI0oF,GAAqBN,GAAa,GAAO,GAEzDA,GAAa,GAAM,GALSA,GAAa,GAAO,wCChCzD,IAAIW,EAAY,EAAQ,OACpBlB,EAAkB,EAAQ,OAC1BC,EAAiB,EAAQ,OAE7B,SAASM,EAAaG,EAASD,EAAoBv4E,EAAO/B,GACxD,MAAO,CACLu6E,QAASA,EACTD,mBAAoBA,EACpBv4E,MAAOA,EACP/B,KAAMA,GAwCVjV,EAAOC,QApCP,SAAwB3D,EAAO2zF,GAC7B,IAAIxsE,EAAMysE,EAAYC,EAAWC,EAEjC,GAAqB,kBAAV9zF,EACTA,EAAQA,EAAMuR,QAAQ,yBAA0B,SAChD4V,EAAOusE,EAAU1zF,OACZ,IAAc,OAAVA,GAAmC,kBAAVA,EAMlC,OAAO+yF,GAAa,GAAO,EAAO,KAAM,MALxC5rE,EAAO,CACLzM,MAAO5J,OAAO9Q,EAAM0a,OACpB/B,KAAM7H,OAAO9Q,EAAM2Y,OASvB,GAHAi7E,EAAapB,EAAgBrrE,EAAKzM,OAClCm5E,EAAYpB,EAAetrE,EAAKxO,KAAMg7E,GAElCC,EAAWV,QAAS,CACtB,GAAIW,EAAUE,cAEZ,OAAOhB,EADPe,EAAqBF,EAAWE,mBACQA,EAAoB3sE,EAAKzM,MAAOyM,EAAKxO,MAG/E,GAAIk7E,EAAUX,QACZ,OAAOH,GAAa,GAAM,EAAM5rE,EAAKzM,MAAOyM,EAAKxO,MAIrD,OAAIi7E,EAAWX,oBAAsBY,EAAUZ,mBACtCF,GAAa,GAAO,EAAM,KAAM,MAGlCA,GAAa,GAAO,EAAO,KAAM,uCC9C1C,SAASA,EAAaG,EAASD,EAAoBa,GACjD,MAAO,CACLZ,QAASA,EACTD,mBAAoBA,EACpBa,mBAAoBA,IAAsB,GA6B9CpwF,EAAOC,QAzBP,SAAyB3D,GACvB,IAAI0a,EAAOU,EACP44E,GAAe,IAAI/nF,MAAOgoF,WAAa,EAE3C,MAAqB,kBAAVj0F,EACF+yF,GAAa,GAAO,GAEI,KAA7B/yF,EAAMuR,QAAQ,MAAO,KAAwB,MAAVvR,EAC9B+yF,GAAa,GAAO,GAExB,QAAQlzF,KAAKG,IAIlB0a,EAAQxN,SAASlN,EAAO,IAEpBgY,MAAMhY,GACD+yF,GAAa,GAAO,GAKtBA,EAFP33E,EAASV,EAAQ,GAAKA,EAAQ,GAEFU,EAAQA,GAAUV,GAASs5E,IAX9CjB,GAAa,GAAO,oCCjB/B,SAASA,EAAaG,EAASD,EAAoBc,GACjD,MAAO,CACLb,QAASA,EACTD,mBAAoBA,EACpBc,cAAeA,IAAiB,GAoDpCrwF,EAAOC,QAhDP,SAAwB3D,EAAO2zF,GAC7B,IAAqB/6E,EAAuBha,EAAKs1F,EAAcl5E,EAAO+4E,EAItE,OAFAJ,EAAiBA,GAb+B,GAe3B,kBAAV3zF,EACF+yF,GAAa,GAAO,GAEI,KAA7B/yF,EAAMuR,QAAQ,MAAO,IAChBwhF,GAAa,GAAO,GAExB,QAAQlzF,KAAKG,IAIlBpB,EAAMoB,EAAM9D,QAEF,EACD62F,GAAa,GAAO,IAG7Bn6E,GAAc,IAAI3M,MAAO4M,cAEb,IAARja,EAIKm0F,GAAa,EAFT/yF,EAAMP,MAAM,EAAG,KACRqR,OAAO8H,GAAanZ,MAAM,EAAG,IAI7Cb,EAAM,EACDm0F,GAAa,GAAO,IAG7B/yF,EAAQkN,SAASlN,EAAO,IACxBk0F,EAAe3J,OAAOz5E,OAAO8H,GAAatH,OAAO,EAAG,IAExC,IAAR1S,GACFm1F,EAAgBG,IAAiBl0F,EACjCgb,EAAQhb,GAASk0F,GAAgBl0F,GAASk0F,EAAeP,GACxC,IAAR/0F,IACTm1F,EAAgBn7E,IAAgB5Y,EAChCgb,EAAQhb,GAAS4Y,GAAe5Y,GAAS4Y,EAAc+6E,GAGlDZ,EAAa/3E,EAAOA,EAAO+4E,KAjCzBhB,GAAa,GAAO,oCCpB/BrvF,EAAOC,QAAU7E,MAAMO,SAAW,SAAU2gB,GAC1C,MAA+C,mBAAxCnkB,OAAOQ,UAAUmD,SAASjD,KAAKyjB,oCC6CxCtc,EAAOC,QA1BP,SAAgBymC,GAMd,IALA,IAGIlqB,EAHA/H,EAAM,EACN+vB,GAAM,EACNlsC,EAAIouC,EAAWluC,OAAS,EAGrBF,GAAK,GACVkkB,EAAMhT,SAASk9B,EAAWtjC,OAAO9K,GAAI,IAEjCksC,IACFhoB,GAAO,GACG,IACRA,EAAOA,EAAM,GAAM,GAIvBgoB,GAAOA,EAEP/vB,GAAO+H,EAEPlkB,IAGF,OAAOmc,EAAM,KAAO,uCC7CtB,IAAIs6E,EAAiB,EAAQ,OACzBpzF,EAAU,EAAQ,OAoCtBqE,EAAOC,QAlCP,SAAmB3D,GACjB,IAAI0a,EAAO9b,EAAK+Z,EAQhB,MANI,KAAK9Y,KAAKG,GACZA,EAAQA,EAAMkW,MAAM,aACX,KAAKrW,KAAKG,KACnBA,EAAQA,EAAMkW,MAAM,QAGlB7W,EAAQW,GACH,CACL0a,MAAO1a,EAAM,GACb2Y,KAAM3Y,EAAMP,MAAM,GAAGwX,SAIzBrY,EAAmB,MAAboB,EAAM,IAAcA,EAAM9D,OAAS,EAAI,EAAI,EAEhC,MAAb8D,EAAM,KACR2Y,EAAO3Y,EAAMsR,OAAO,GACRmhF,EAAe95E,GACZs6E,qBACbr0F,EAAM,IAMH,CACL8b,MAHFA,EAAQ1a,EAAMsR,OAAO,EAAG1S,GAItB+Z,KAAM3Y,EAAMsR,OAAOoJ,EAAMxe,2CC/B7B,SAAS62F,EAAaG,EAASD,GAC7B,MAAO,CAACC,QAASA,EAASD,mBAAoBA,GAmBhDvvF,EAAOC,QAhBP,SAAoB3D,EAAOsX,GACzB,IAAI68E,EAMJ,OAFAA,GAFA78E,EAAUA,GAAW,IAED68E,WAXe,EAad,kBAAVn0F,EACF+yF,GAAa,GAAO,GAClB/yF,EAAM9D,OAASi4F,EACjBpB,GAAa,GAAO,GAGtBA,GAAa,GAAM,2BCrB5B,IAAI71E,EAAS,gBACTq/D,EAAY,mBACZ6X,EAAgB,WAGpB,SAASjS,EAAYkS,GACnB9X,EAAUhgF,KAAKE,MACfA,KAAK43F,SAA+B,kBAAbA,EACnB53F,KAAK43F,SACP53F,KAAK43F,GAAY53F,KAAK63F,eAEtB73F,KAAKuhF,MAAQvhF,KAAK63F,eAEhB73F,KAAKshF,SACPthF,KAAK83F,QAAU93F,KAAKshF,OACpBthF,KAAKshF,OAAS,MAEhBthF,KAAK+3F,SAAW,KAChB/3F,KAAKg4F,UAAY,KAfJ,EAAQ,MAiBvBn4E,CAAS6lE,EAAY5F,GAErB4F,EAAW9lF,UAAUkG,OAAS,SAAU2P,EAAMwiF,EAAUC,GAClC,kBAATziF,IACTA,EAAOgL,EAAOtd,KAAKsS,EAAMwiF,IAG3B,IAAIE,EAAUn4F,KAAKmhF,QAAQ1rE,GAC3B,OAAIzV,KAAK43F,SAAiB53F,MAEtBk4F,IACFC,EAAUn4F,KAAKo4F,UAAUD,EAASD,IAG7BC,IAGTzS,EAAW9lF,UAAUyjF,eAAiB,aACtCqC,EAAW9lF,UAAU6hF,WAAa,WAChC,MAAM,IAAI19E,MAAM,gDAGlB2hF,EAAW9lF,UAAU8hF,WAAa,WAChC,MAAM,IAAI39E,MAAM,gDAGlB2hF,EAAW9lF,UAAU+hF,OAAS,WAC5B,MAAM,IAAI59E,MAAM,2CAGlB2hF,EAAW9lF,UAAUy4F,WAAa,SAAU5iF,EAAM2W,EAAG3oB,GACnD,IAAIgE,EACJ,IACMzH,KAAK43F,SACP53F,KAAKmhF,QAAQ1rE,GAEbzV,KAAK8S,KAAK9S,KAAKmhF,QAAQ1rE,IAEzB,MAAOnM,GACP7B,EAAM6B,EACN,QACA7F,EAAKgE,KAGTi+E,EAAW9lF,UAAU04F,OAAS,SAAUh1F,GACtC,IAAImE,EACJ,IACEzH,KAAK8S,KAAK9S,KAAK83F,WACf,MAAOxuF,GACP7B,EAAM6B,EAGRhG,EAAKmE,IAEPi+E,EAAW9lF,UAAUi4F,eAAiB,SAAUK,GAC9C,IAAIC,EAAUn4F,KAAK83F,WAAar3E,EAAOiB,MAAM,GAI7C,OAHIw2E,IACFC,EAAUn4F,KAAKo4F,UAAUD,EAASD,GAAW,IAExCC,GAGTzS,EAAW9lF,UAAUw4F,UAAY,SAAU70F,EAAO8c,EAAKk4E,GAMrD,GALKv4F,KAAK+3F,WACR/3F,KAAK+3F,SAAW,IAAIJ,EAAct3E,GAClCrgB,KAAKg4F,UAAY33E,GAGfrgB,KAAKg4F,YAAc33E,EAAK,MAAM,IAAItc,MAAM,0BAE5C,IAAI0d,EAAMzhB,KAAK+3F,SAASp2E,MAAMpe,GAK9B,OAJIg1F,IACF92E,GAAOzhB,KAAK+3F,SAASjuE,OAGhBrI,GAGTxa,EAAOC,QAAUw+E,uBClGjB,OAOC,WACA,aAEA,IAAI8S,EAAS,GAAG34F,eAEhB,SAAS01C,IAGR,IAFA,IAAIkjD,EAAU,GAELl5F,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAC1C,IAAIgkB,EAAM/jB,UAAUD,GACpB,GAAKgkB,EAAL,CAEA,IAAIm1E,SAAiBn1E,EAErB,GAAgB,WAAZm1E,GAAoC,WAAZA,EAC3BD,EAAQ3lF,KAAKyQ,QACP,GAAIlhB,MAAMO,QAAQ2gB,IACxB,GAAIA,EAAI9jB,OAAQ,CACf,IAAIk5F,EAAQpjD,EAAWx1C,MAAM,KAAMwjB,GAC/Bo1E,GACHF,EAAQ3lF,KAAK6lF,SAGT,GAAgB,WAAZD,EACV,GAAIn1E,EAAIxgB,WAAa3D,OAAOQ,UAAUmD,SACrC,IAAK,IAAIpD,KAAO4jB,EACXi1E,EAAO14F,KAAKyjB,EAAK5jB,IAAQ4jB,EAAI5jB,IAChC84F,EAAQ3lF,KAAKnT,QAIf84F,EAAQ3lF,KAAKyQ,EAAIxgB,aAKpB,OAAO01F,EAAQj+E,KAAK,KAGgBvT,EAAOC,SAC3CquC,EAAW9F,QAAU8F,EACrBtuC,EAAOC,QAAUquC,QAKhB,KAFwB,EAAF,WACtB,OAAOA,GACP,QAFoB,OAEpB,aA9CH,uCCPA,SAASqjD,EAAMC,GACd,IAAI1uF,EAAG2H,EAAG4U,EAAI,GAEd,GAAmB,kBAARmyE,GAAmC,kBAARA,EACrCnyE,GAAOmyE,OACD,GAAmB,kBAARA,EACjB,GAAIx2F,MAAMO,QAAQi2F,GACjB,IAAK1uF,EAAE,EAAGA,EAAI0uF,EAAIp5F,OAAQ0K,IACrB0uF,EAAI1uF,KACH2H,EAAI8mF,EAAMC,EAAI1uF,OACjBuc,IAAQA,GAAO,KACfA,GAAO5U,QAKV,IAAK3H,KAAK0uF,EACLA,EAAI1uF,KACPuc,IAAQA,GAAO,KACfA,GAAOvc,GAMX,OAAOuc,EAGO,SAAS,IAEvB,IADA,IAASyC,EAAKza,EAAVnP,EAAE,EAAWmnB,EAAI,GACdnnB,EAAIC,UAAUC,SAChB0pB,EAAM3pB,UAAUD,QACfmP,EAAIkqF,EAAMzvE,MACbzC,IAAQA,GAAO,KACfA,GAAOhY,GAIV,OAAOgY,yDCtCR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,KACR,qCCjBA,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,uCCZA,EAAQ,OACR,EAAQ,MACRzf,EAAOC,QAAU,EAAjB,wCCFA,EAAQ,OACR,EAAQ,OACRD,EAAOC,QAAU,EAAjB,8BCFA,EAAQ,OACR,EAAQ,OACRD,EAAOC,QAAU,EAAjB,8BCFA,EAAQ,OACRD,EAAOC,QAAU,EAAjB,4CCDA,EAAQ,OACR,IAAI4xF,EAAU,gBACd7xF,EAAOC,QAAU,SAAgBwL,EAAGa,GAClC,OAAOulF,EAAQ/mE,OAAOrf,EAAGa,2BCH3B,EAAQ,OACR,IAAIulF,EAAU,gBACd7xF,EAAOC,QAAU,SAAwBzE,EAAI9C,EAAKo5F,GAChD,OAAOD,EAAQxhE,eAAe70B,EAAI9C,EAAKo5F,2BCHzC,EAAQ,OACR,IAAID,EAAU,gBACd7xF,EAAOC,QAAU,SAAkCzE,EAAI9C,GACrD,OAAOm5F,EAAQ9hE,yBAAyBv0B,EAAI9C,2BCH9C,EAAQ,OACRsH,EAAOC,QAAU,EAAjB,oDCDA,EAAQ,OACRD,EAAOC,QAAU,EAAjB,0CCDA,EAAQ,OACRD,EAAOC,QAAU,EAAjB,oDCDA,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACRD,EAAOC,QAAU,EAAjB,sCCNA,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACRD,EAAOC,QAAU,EAAjB,qCCJA,EAAQ,OACR,EAAQ,OACRD,EAAOC,QAAU,WAAoC,+BCFrDD,EAAOC,QAAU,SAAUzE,GACzB,GAAiB,mBAANA,EAAkB,MAAMe,UAAUf,EAAK,uBAClD,OAAOA,sBCFTwE,EAAOC,QAAU,gCCAjBD,EAAOC,QAAU,SAAUzE,EAAIq4B,EAAa53B,EAAM81F,GAChD,KAAMv2F,aAAcq4B,SAAoCnV,IAAnBqzE,GAAgCA,KAAkBv2F,EACrF,MAAMe,UAAUN,EAAO,2BACvB,OAAOT,0BCHX,IAAIw2F,EAAW,EAAQ,OACvBhyF,EAAOC,QAAU,SAAUzE,GACzB,IAAKw2F,EAASx2F,GAAK,MAAMe,UAAUf,EAAK,sBACxC,OAAOA,0BCDT,IAAIy2F,EAAY,EAAQ,MACpBC,EAAW,EAAQ,OACnBC,EAAkB,EAAQ,OAC9BnyF,EAAOC,QAAU,SAAUmyF,GACzB,OAAO,SAAUC,EAAOxiD,EAAIyiD,GAC1B,IAGIh2F,EAHAqP,EAAIsmF,EAAUI,GACd75F,EAAS05F,EAASvmF,EAAEnT,QACpBunB,EAAQoyE,EAAgBG,EAAW95F,GAIvC,GAAI45F,GAAeviD,GAAMA,GAAI,KAAOr3C,EAASunB,GAG3C,IAFAzjB,EAAQqP,EAAEoU,OAEGzjB,EAAO,OAAO,OAEtB,KAAM9D,EAASunB,EAAOA,IAAS,IAAIqyE,GAAeryE,KAASpU,IAC5DA,EAAEoU,KAAW8vB,EAAI,OAAOuiD,GAAeryE,GAAS,EACpD,OAAQqyE,IAAgB,2BCnB9B,IAAIG,EAAM,EAAQ,OACdC,EAAM,EAAQ,MAAR,CAAkB,eAExBC,EAAkD,aAA5CF,EAAI,WAAc,OAAOh6F,UAArB,IASdyH,EAAOC,QAAU,SAAUzE,GACzB,IAAImQ,EAAGL,EAAGa,EACV,YAAcuS,IAAPljB,EAAmB,YAAqB,OAAPA,EAAc,OAEN,iBAApC8P,EAVD,SAAU9P,EAAI9C,GACzB,IACE,OAAO8C,EAAG9C,GACV,MAAO2J,KAOOqwF,CAAO/mF,EAAIxT,OAAOqD,GAAKg3F,IAAoBlnF,EAEvDmnF,EAAMF,EAAI5mF,GAEM,WAAfQ,EAAIomF,EAAI5mF,KAAsC,mBAAZA,EAAEgnF,OAAuB,YAAcxmF,sBCrBhF,IAAIrQ,EAAW,GAAGA,SAElBkE,EAAOC,QAAU,SAAUzE,GACzB,OAAOM,EAASjD,KAAK2C,GAAIO,MAAM,GAAI,uBCHrC,IAAI62F,EAAO5yF,EAAOC,QAAU,CAAE6T,QAAS,UACrB,iBAAP++E,MAAiBA,IAAMD,uCCAlC,IAAIE,EAAkB,EAAQ,MAC1BC,EAAa,EAAQ,OAEzB/yF,EAAOC,QAAU,SAAUgB,EAAQ8e,EAAOzjB,GACpCyjB,KAAS9e,EAAQ6xF,EAAgB1wF,EAAEnB,EAAQ8e,EAAOgzE,EAAW,EAAGz2F,IAC/D2E,EAAO8e,GAASzjB,0BCLvB,IAAI02F,EAAY,EAAQ,OACxBhzF,EAAOC,QAAU,SAAUkpB,EAAI8pE,EAAMz6F,GAEnC,GADAw6F,EAAU7pE,QACGzK,IAATu0E,EAAoB,OAAO9pE,EAC/B,OAAQ3wB,GACN,KAAK,EAAG,OAAO,SAAU8J,GACvB,OAAO6mB,EAAGtwB,KAAKo6F,EAAM3wF,IAEvB,KAAK,EAAG,OAAO,SAAUA,EAAGe,GAC1B,OAAO8lB,EAAGtwB,KAAKo6F,EAAM3wF,EAAGe,IAE1B,KAAK,EAAG,OAAO,SAAUf,EAAGe,EAAGd,GAC7B,OAAO4mB,EAAGtwB,KAAKo6F,EAAM3wF,EAAGe,EAAGd,IAG/B,OAAO,WACL,OAAO4mB,EAAGrwB,MAAMm6F,EAAM16F,+BChB1ByH,EAAOC,QAAU,SAAUzE,GACzB,QAAUkjB,GAANljB,EAAiB,MAAMe,UAAU,yBAA2Bf,GAChE,OAAOA,0BCFTwE,EAAOC,SAAW,EAAQ,KAAR,EAAoB,WACpC,OAA+E,GAAxE9H,OAAOk4B,eAAe,GAAI,IAAK,CAAE1J,IAAK,WAAc,OAAO,KAAQrkB,4BCF5E,IAAI0vF,EAAW,EAAQ,OACnBl3F,EAAW,kBAEXo4F,EAAKlB,EAASl3F,IAAak3F,EAASl3F,EAASd,eACjDgG,EAAOC,QAAU,SAAUzE,GACzB,OAAO03F,EAAKp4F,EAASd,cAAcwB,GAAM,uBCJ3CwE,EAAOC,QAAU,gGAEfuS,MAAM,4BCFR,IAAI2gF,EAAU,EAAQ,OAClBC,EAAO,EAAQ,OACfC,EAAM,EAAQ,OAClBrzF,EAAOC,QAAU,SAAUzE,GACzB,IAAIkc,EAASy7E,EAAQ33F,GACjB83F,EAAaF,EAAKhxF,EACtB,GAAIkxF,EAKF,IAJA,IAGI56F,EAHAm3B,EAAUyjE,EAAW93F,GACrB+3F,EAASF,EAAIjxF,EACb9J,EAAI,EAEDu3B,EAAQr3B,OAASF,GAAOi7F,EAAO16F,KAAK2C,EAAI9C,EAAMm3B,EAAQv3B,OAAOof,EAAO7L,KAAKnT,GAChF,OAAOgf,0BCbX,IAAIsb,EAAS,EAAQ,OACjB4/D,EAAO,EAAQ,OACfxgB,EAAM,EAAQ,OACdvjC,EAAO,EAAQ,OACfvkB,EAAM,EAAQ,OAGdkpE,EAAU,SAAUj2F,EAAMtB,EAAMxD,GAClC,IASIC,EAAK+6F,EAAKj5E,EATVk5E,EAAYn2F,EAAOi2F,EAAQnkF,EAC3BskF,EAAYp2F,EAAOi2F,EAAQxkF,EAC3B4kF,EAAYr2F,EAAOi2F,EAAQ3tF,EAC3BguF,EAAWt2F,EAAOi2F,EAAQ/nF,EAC1BqoF,EAAUv2F,EAAOi2F,EAAQrnF,EACzB4nF,EAAUx2F,EAAOi2F,EAAQroF,EACzBlL,EAAU0zF,EAAYf,EAAOA,EAAK32F,KAAU22F,EAAK32F,GAAQ,IACzD+3F,EAAW/zF,EAAiB,UAC5B5H,EAASs7F,EAAY3gE,EAAS4gE,EAAY5gE,EAAO/2B,IAAS+2B,EAAO/2B,IAAS,IAAa,UAG3F,IAAKvD,KADDi7F,IAAWl7F,EAASwD,GACZxD,GAEVg7F,GAAOC,GAAar7F,QAA0BqmB,IAAhBrmB,EAAOK,KAC1B4xB,EAAIrqB,EAASvH,KAExB8hB,EAAMi5E,EAAMp7F,EAAOK,GAAOD,EAAOC,GAEjCuH,EAAQvH,GAAOi7F,GAAmC,mBAAft7F,EAAOK,GAAqBD,EAAOC,GAEpEo7F,GAAWL,EAAMrhB,EAAI53D,EAAKwY,GAE1B+gE,GAAW17F,EAAOK,IAAQ8hB,EAAM,SAAW5O,GAC3C,IAAIyD,EAAI,SAAU/M,EAAGe,EAAGd,GACtB,GAAIxJ,gBAAgB6S,EAAG,CACrB,OAAQrT,UAAUC,QAChB,KAAK,EAAG,OAAO,IAAIoT,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAEtJ,GACrB,KAAK,EAAG,OAAO,IAAIsJ,EAAEtJ,EAAGe,GACxB,OAAO,IAAIuI,EAAEtJ,EAAGe,EAAGd,GACrB,OAAOqJ,EAAE9S,MAAMC,KAAMR,YAGzB,OADA8W,EAAW,UAAIzD,EAAW,UACnByD,EAXyB,CAa/BmL,GAAOq5E,GAA0B,mBAAPr5E,EAAoB43D,EAAI6hB,SAASp7F,KAAM2hB,GAAOA,EAEvEq5E,KACD5zF,EAAQi0F,UAAYj0F,EAAQi0F,QAAU,KAAKx7F,GAAO8hB,EAE/Cjd,EAAOi2F,EAAQjoF,GAAKyoF,IAAaA,EAASt7F,IAAMm2C,EAAKmlD,EAAUt7F,EAAK8hB,MAK9Eg5E,EAAQnkF,EAAI,EACZmkF,EAAQxkF,EAAI,EACZwkF,EAAQ3tF,EAAI,EACZ2tF,EAAQ/nF,EAAI,EACZ+nF,EAAQrnF,EAAI,GACZqnF,EAAQroF,EAAI,GACZqoF,EAAQnoF,EAAI,GACZmoF,EAAQjoF,EAAI,IACZvL,EAAOC,QAAUuzF,oBC7DjBxzF,EAAOC,QAAU,SAAUi0C,GACzB,IACE,QAASA,IACT,MAAO7xC,GACP,OAAO,2BCJX,IAAI+vE,EAAM,EAAQ,OACdv5E,EAAO,EAAQ,OACfs7F,EAAc,EAAQ,OACtBC,EAAW,EAAQ,OACnBlC,EAAW,EAAQ,OACnBmC,EAAY,EAAQ,OACpBC,EAAQ,GACRC,EAAS,GACTt0F,EAAUD,EAAOC,QAAU,SAAUu0F,EAAU/xC,EAASt5B,EAAI8pE,EAAMwB,GACpE,IAGIj8F,EAAQusB,EAAMrpB,EAAUgc,EAHxBg9E,EAASD,EAAW,WAAc,OAAOD,GAAcH,EAAUG,GACjEpyF,EAAIgwE,EAAIjpD,EAAI8pE,EAAMxwC,EAAU,EAAI,GAChC1iC,EAAQ,EAEZ,GAAqB,mBAAV20E,EAAsB,MAAMn4F,UAAUi4F,EAAW,qBAE5D,GAAIL,EAAYO,IAAS,IAAKl8F,EAAS05F,EAASsC,EAASh8F,QAASA,EAASunB,EAAOA,IAEhF,IADArI,EAAS+qC,EAAUrgD,EAAEgyF,EAASrvE,EAAOyvE,EAASz0E,IAAQ,GAAIgF,EAAK,IAAM3iB,EAAEoyF,EAASz0E,OACjEu0E,GAAS58E,IAAW68E,EAAQ,OAAO78E,OAC7C,IAAKhc,EAAWg5F,EAAO77F,KAAK27F,KAAazvE,EAAOrpB,EAASc,QAAQH,MAEtE,IADAqb,EAAS7e,EAAK6C,EAAU0G,EAAG2iB,EAAKzoB,MAAOmmD,MACxB6xC,GAAS58E,IAAW68E,EAAQ,OAAO78E,GAGtDzX,EAAQq0F,MAAQA,EAChBr0F,EAAQs0F,OAASA,qBCvBjB,IAAIvhE,EAAShzB,EAAOC,QAA2B,oBAAVpF,QAAyBA,OAAOqJ,MAAQA,KACzErJ,OAAwB,oBAARytB,MAAuBA,KAAKpkB,MAAQA,KAAOokB,KAE3D2rE,SAAS,cAATA,GACc,iBAAPU,MAAiBA,IAAM3hE,sBCLlC,IAAIp6B,EAAiB,GAAGA,eACxBoH,EAAOC,QAAU,SAAUzE,EAAI9C,GAC7B,OAAOE,EAAeC,KAAK2C,EAAI9C,2BCFjC,IAAIk8F,EAAK,EAAQ,MACb7B,EAAa,EAAQ,OACzB/yF,EAAOC,QAAU,EAAQ,OAAoB,SAAUgB,EAAQvI,EAAK4D,GAClE,OAAOs4F,EAAGxyF,EAAEnB,EAAQvI,EAAKq6F,EAAW,EAAGz2F,KACrC,SAAU2E,EAAQvI,EAAK4D,GAEzB,OADA2E,EAAOvI,GAAO4D,EACP2E,0BCNT,IAAInG,EAAW,kBACfkF,EAAOC,QAAUnF,GAAYA,EAASoY,uCCDtClT,EAAOC,SAAW,EAAQ,SAAsB,EAAQ,KAAR,EAAoB,WAClE,OAA4G,GAArG9H,OAAOk4B,eAAe,EAAQ,MAAR,CAAyB,OAAQ,IAAK,CAAE1J,IAAK,WAAc,OAAO,KAAQrkB,wBCAzGtC,EAAOC,QAAU,SAAUkpB,EAAIhO,EAAM83E,GACnC,IAAI4B,OAAcn2E,IAATu0E,EACT,OAAQ93E,EAAK3iB,QACX,KAAK,EAAG,OAAOq8F,EAAK1rE,IACAA,EAAGtwB,KAAKo6F,GAC5B,KAAK,EAAG,OAAO4B,EAAK1rE,EAAGhO,EAAK,IACRgO,EAAGtwB,KAAKo6F,EAAM93E,EAAK,IACvC,KAAK,EAAG,OAAO05E,EAAK1rE,EAAGhO,EAAK,GAAIA,EAAK,IACjBgO,EAAGtwB,KAAKo6F,EAAM93E,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAO05E,EAAK1rE,EAAGhO,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1BgO,EAAGtwB,KAAKo6F,EAAM93E,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACzD,KAAK,EAAG,OAAO05E,EAAK1rE,EAAGhO,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACnCgO,EAAGtwB,KAAKo6F,EAAM93E,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAClE,OAAOgO,EAAGrwB,MAAMm6F,EAAM93E,2BCb1B,IAAIo3E,EAAM,EAAQ,OAElBvyF,EAAOC,QAAU9H,OAAO,KAAK28F,qBAAqB,GAAK38F,OAAS,SAAUqD,GACxE,MAAkB,UAAX+2F,EAAI/2F,GAAkBA,EAAGgX,MAAM,IAAMra,OAAOqD,2BCHrD,IAAIu5F,EAAY,EAAQ,OACpBN,EAAW,EAAQ,MAAR,CAAkB,YAC7BO,EAAa55F,MAAMzC,UAEvBqH,EAAOC,QAAU,SAAUzE,GACzB,YAAckjB,IAAPljB,IAAqBu5F,EAAU35F,QAAUI,GAAMw5F,EAAWP,KAAcj5F,2BCLjF,IAAI+2F,EAAM,EAAQ,OAClBvyF,EAAOC,QAAU7E,MAAMO,SAAW,SAAiB2gB,GACjD,MAAmB,SAAZi2E,EAAIj2E,uBCHbtc,EAAOC,QAAU,SAAUzE,GACzB,MAAqB,kBAAPA,EAAyB,OAAPA,EAA4B,oBAAPA,0BCAvD,IAAI44F,EAAW,EAAQ,OACvBp0F,EAAOC,QAAU,SAAUvE,EAAUytB,EAAI7sB,EAAOmmD,GAC9C,IACE,OAAOA,EAAUt5B,EAAGirE,EAAS93F,GAAO,GAAIA,EAAM,IAAM6sB,EAAG7sB,GAEvD,MAAO+F,GACP,IAAIopB,EAAM/vB,EAAiB,OAE3B,WADYgjB,IAAR+M,GAAmB2oE,EAAS3oE,EAAI5yB,KAAK6C,IACnC2G,wCCRV,IAAIyoB,EAAS,EAAQ,OACjB0F,EAAa,EAAQ,OACrBykE,EAAiB,EAAQ,OACzBC,EAAoB,GAGxB,EAAQ,MAAR,CAAmBA,EAAmB,EAAQ,MAAR,CAAkB,aAAa,WAAc,OAAOn8F,QAE1FiH,EAAOC,QAAU,SAAU4zB,EAAashE,EAAM34F,GAC5Cq3B,EAAYl7B,UAAYmyB,EAAOoqE,EAAmB,CAAE14F,KAAMg0B,EAAW,EAAGh0B,KACxEy4F,EAAephE,EAAashE,EAAO,kDCVrC,IAAIC,EAAU,EAAQ,OAClB5B,EAAU,EAAQ,OAClB6B,EAAW,EAAQ,OACnBxmD,EAAO,EAAQ,OACfkmD,EAAY,EAAQ,OACpBO,EAAc,EAAQ,OACtBL,EAAiB,EAAQ,OACzBpkE,EAAiB,EAAQ,OACzB4jE,EAAW,EAAQ,MAAR,CAAkB,YAC7Bc,IAAU,GAAG17F,MAAQ,QAAU,GAAGA,QAElC05B,EAAO,OACPiiE,EAAS,SAETC,EAAa,WAAc,OAAO18F,MAEtCiH,EAAOC,QAAU,SAAU8Y,EAAMo8E,EAAMthE,EAAar3B,EAAMk5F,EAASC,EAAQC,GACzEN,EAAYzhE,EAAashE,EAAM34F,GAC/B,IAeIue,EAASriB,EAAKw8F,EAfdW,EAAY,SAAUC,GACxB,IAAKP,GAASO,KAAQzN,EAAO,OAAOA,EAAMyN,GAC1C,OAAQA,GACN,KAAKviE,EACL,KAAKiiE,EAAQ,OAAO,WAAoB,OAAO,IAAI3hE,EAAY96B,KAAM+8F,IACrE,OAAO,WAAqB,OAAO,IAAIjiE,EAAY96B,KAAM+8F,KAEzDtD,EAAM2C,EAAO,YACbY,EAAaL,GAAWF,EACxBQ,GAAa,EACb3N,EAAQtvE,EAAKpgB,UACbs9F,EAAU5N,EAAMoM,IAAapM,EAnBjB,eAmBuCqN,GAAWrN,EAAMqN,GACpEQ,EAAWD,GAAWJ,EAAUH,GAChCS,EAAWT,EAAWK,EAAwBF,EAAU,WAArBK,OAAkCx3E,EACrE03E,EAAqB,SAARjB,GAAkB9M,EAAM5lC,SAAqBwzC,EAwB9D,GArBIG,IACFlB,EAAoBrkE,EAAeulE,EAAWv9F,KAAK,IAAIkgB,OAC7B5gB,OAAOQ,WAAau8F,EAAkB14F,OAE9Dy4F,EAAeC,EAAmB1C,GAAK,GAElC4C,GAAiD,mBAA/BF,EAAkBT,IAAyB5lD,EAAKqmD,EAAmBT,EAAUgB,IAIpGM,GAAcE,GAAWA,EAAQh6F,OAASu5F,IAC5CQ,GAAa,EACbE,EAAW,WAAoB,OAAOD,EAAQp9F,KAAKE,QAG/Cq8F,IAAWQ,IAAYL,IAASS,GAAe3N,EAAMoM,IACzD5lD,EAAKw5C,EAAOoM,EAAUyB,GAGxBnB,EAAUI,GAAQe,EAClBnB,EAAUvC,GAAOiD,EACbC,EAMF,GALA36E,EAAU,CACR4G,OAAQo0E,EAAaG,EAAWL,EAAUL,GAC1C37F,KAAM87F,EAASO,EAAWL,EAAUtiE,GACpCkvB,QAAS0zC,GAEPP,EAAQ,IAAKl9F,KAAOqiB,EAChBriB,KAAO2vF,GAAQgN,EAAShN,EAAO3vF,EAAKqiB,EAAQriB,SAC7C86F,EAAQA,EAAQ/nF,EAAI+nF,EAAQnkF,GAAKkmF,GAASS,GAAab,EAAMp6E,GAEtE,OAAOA,0BCnET,IAAI05E,EAAW,EAAQ,MAAR,CAAkB,YAC7B4B,GAAe,EAEnB,IACE,IAAIC,EAAQ,CAAC,GAAG7B,KAChB6B,EAAc,OAAI,WAAcD,GAAe,GAE/Cj7F,MAAMc,KAAKo6F,GAAO,WAAc,MAAM,KACtC,MAAOj0F,IAETrC,EAAOC,QAAU,SAAUi0C,EAAMqiD,GAC/B,IAAKA,IAAgBF,EAAc,OAAO,EAC1C,IAAIG,GAAO,EACX,IACE,IAAIv7F,EAAM,CAAC,GACPoW,EAAOpW,EAAIw5F,KACfpjF,EAAK7U,KAAO,WAAc,MAAO,CAAEH,KAAMm6F,GAAO,IAChDv7F,EAAIw5F,GAAY,WAAc,OAAOpjF,GACrC6iC,EAAKj5C,GACL,MAAOoH,IACT,OAAOm0F,sBCpBTx2F,EAAOC,QAAU,SAAU5D,EAAMC,GAC/B,MAAO,CAAEA,MAAOA,EAAOD,OAAQA,uBCDjC2D,EAAOC,QAAU,sBCAjBD,EAAOC,SAAU,yBCAjB,IAAIw2F,EAAO,EAAQ,MAAR,CAAkB,QACzBzE,EAAW,EAAQ,OACnB1nE,EAAM,EAAQ,OACdosE,EAAU,UACVrzE,EAAK,EACLszE,EAAex+F,OAAOw+F,cAAgB,WACxC,OAAO,GAELC,GAAU,EAAQ,KAAR,EAAoB,WAChC,OAAOD,EAAax+F,OAAO0+F,kBAAkB,QAE3CC,EAAU,SAAUt7F,GACtBk7F,EAAQl7F,EAAIi7F,EAAM,CAAEn6F,MAAO,CACzBhE,EAAG,OAAQ+qB,EACXhc,EAAG,OAgCH0vF,EAAO/2F,EAAOC,QAAU,CAC1B+2F,IAAKP,EACLQ,MAAM,EACNC,QAhCY,SAAU17F,EAAIsvB,GAE1B,IAAKknE,EAASx2F,GAAK,MAAoB,iBAANA,EAAiBA,GAAmB,iBAANA,EAAiB,IAAM,KAAOA,EAC7F,IAAK8uB,EAAI9uB,EAAIi7F,GAAO,CAElB,IAAKE,EAAan7F,GAAK,MAAO,IAE9B,IAAKsvB,EAAQ,MAAO,IAEpBgsE,EAAQt7F,GAER,OAAOA,EAAGi7F,GAAMn+F,GAsBlB6+F,QApBY,SAAU37F,EAAIsvB,GAC1B,IAAKR,EAAI9uB,EAAIi7F,GAAO,CAElB,IAAKE,EAAan7F,GAAK,OAAO,EAE9B,IAAKsvB,EAAQ,OAAO,EAEpBgsE,EAAQt7F,GAER,OAAOA,EAAGi7F,GAAMpvF,GAYlB+vF,SATa,SAAU57F,GAEvB,OADIo7F,GAAUG,EAAKE,MAAQN,EAAan7F,KAAQ8uB,EAAI9uB,EAAIi7F,IAAOK,EAAQt7F,GAChEA,2BC5CT,IAAIw3B,EAAS,EAAQ,OACjBqkE,EAAY,aACZC,EAAWtkE,EAAOukE,kBAAoBvkE,EAAOwkE,uBAC7ClwE,EAAU0L,EAAO1L,QACjB3C,EAAUqO,EAAOrO,QACjBm2C,EAAuC,WAA9B,EAAQ,MAAR,CAAkBxzC,GAE/BtnB,EAAOC,QAAU,WACf,IAAIiqB,EAAM4sB,EAAM2gD,EAEZxb,EAAQ,WACV,IAAIjhE,EAAQmO,EAEZ,IADI2xC,IAAW9/C,EAASsM,EAAQowE,SAAS18E,EAAO28E,OACzCztE,GAAM,CACXf,EAAKe,EAAKf,GACVe,EAAOA,EAAK1tB,KACZ,IACE2sB,IACA,MAAO9mB,GAGP,MAFI6nB,EAAMutE,IACL3gD,OAAOp4B,EACNrc,GAERy0C,OAAOp4B,EACL1D,GAAQA,EAAO48E,SAIrB,GAAI98B,EACF28B,EAAS,WACPnwE,EAAQuwE,SAAS5b,SAGd,IAAIqb,GAActkE,EAAOpvB,WAAaovB,EAAOpvB,UAAUk0F,WAQvD,GAAInzE,GAAWA,EAAQC,QAAS,CAErC,IAAImzE,EAAUpzE,EAAQC,aAAQlG,GAC9B+4E,EAAS,WACPM,EAAQ9yE,KAAKg3D,SASfwb,EAAS,WAEPJ,EAAUx+F,KAAKm6B,EAAQipD,QAvBgD,CACzE,IAAI+b,GAAS,EACTj6F,EAAOjD,SAASstD,eAAe,IACnC,IAAIkvC,EAASrb,GAAOgc,QAAQl6F,EAAM,CAAEm6F,eAAe,IACnDT,EAAS,WACP15F,EAAKyQ,KAAOwpF,GAAUA,GAsB1B,OAAO,SAAU7uE,GACf,IAAIgvE,EAAO,CAAEhvE,GAAIA,EAAI3sB,UAAMkiB,GACvBo4B,IAAMA,EAAKt6C,KAAO27F,GACjBjuE,IACHA,EAAOiuE,EACPV,KACA3gD,EAAOqhD,wCChEb,IAAInF,EAAY,EAAQ,OAExB,SAASoF,EAAkBxsF,GACzB,IAAIgZ,EAASC,EACb9rB,KAAKg/F,QAAU,IAAInsF,GAAE,SAAUysF,EAAWC,GACxC,QAAgB55E,IAAZkG,QAAoClG,IAAXmG,EAAsB,MAAMtoB,UAAU,2BACnEqoB,EAAUyzE,EACVxzE,EAASyzE,KAEXv/F,KAAK6rB,QAAUouE,EAAUpuE,GACzB7rB,KAAK8rB,OAASmuE,EAAUnuE,GAG1B7kB,EAAOC,QAAQmC,EAAI,SAAUwJ,GAC3B,OAAO,IAAIwsF,EAAkBxsF,wCCd/B,IAAI2sF,EAAc,EAAQ,OACtBpF,EAAU,EAAQ,OAClBC,EAAO,EAAQ,OACfC,EAAM,EAAQ,OACdl4B,EAAW,EAAQ,OACnBq9B,EAAU,EAAQ,OAClBC,EAAUtgG,OAAOC,OAGrB4H,EAAOC,SAAWw4F,GAAW,EAAQ,KAAR,EAAoB,WAC/C,IAAIlxF,EAAI,GACJ4E,EAAI,GAEJtG,EAAIpK,SACJ6T,EAAI,uBAGR,OAFA/H,EAAE1B,GAAK,EACPyJ,EAAEkD,MAAM,IAAIlT,SAAQ,SAAU4D,GAAKiJ,EAAEjJ,GAAKA,KACd,GAArBu1F,EAAQ,GAAIlxF,GAAG1B,IAAW1N,OAAO0B,KAAK4+F,EAAQ,GAAItsF,IAAIoH,KAAK,KAAOjE,KACtE,SAAgBjX,EAAQI,GAM3B,IALA,IAAI6S,EAAI6vD,EAAS9iE,GACbqgG,EAAOngG,UAAUC,OACjBunB,EAAQ,EACRuzE,EAAaF,EAAKhxF,EAClBmxF,EAASF,EAAIjxF,EACVs2F,EAAO34E,GAMZ,IALA,IAIIrnB,EAJAmN,EAAI2yF,EAAQjgG,UAAUwnB,MACtBlmB,EAAOy5F,EAAaH,EAAQttF,GAAGuG,OAAOknF,EAAWztF,IAAMstF,EAAQttF,GAC/DrN,EAASqB,EAAKrB,OACdgK,EAAI,EAEDhK,EAASgK,GACd9J,EAAMmB,EAAK2I,KACN+1F,IAAehF,EAAO16F,KAAKgN,EAAGnN,KAAM4S,EAAE5S,GAAOmN,EAAEnN,IAEtD,OAAO4S,GACPmtF,yBCpCJ,IAAIrE,EAAW,EAAQ,OACnBuE,EAAM,EAAQ,OACdC,EAAc,EAAQ,OACtBC,EAAW,EAAQ,MAAR,CAAyB,YACpCC,EAAQ,aAIRC,EAAa,WAEf,IAIIC,EAJAC,EAAS,EAAQ,MAAR,CAAyB,UAClC3gG,EAAIsgG,EAAYpgG,OAcpB,IAVAygG,EAAOx/F,MAAMy/F,QAAU,OACvB,qBAA+BD,GAC/BA,EAAOp/D,IAAM,eAGbm/D,EAAiBC,EAAOz1C,cAAc1oD,UACvBgyC,OACfksD,EAAet+E,MAAMm3D,uCACrBmnB,EAAe1rD,QACfyrD,EAAaC,EAAe3pF,EACrB/W,YAAYygG,EAAoB,UAAEH,EAAYtgG,IACrD,OAAOygG,KAGT/4F,EAAOC,QAAU9H,OAAO2yB,QAAU,SAAgBnf,EAAGwtF,GACnD,IAAIzhF,EAQJ,OAPU,OAAN/L,GACFmtF,EAAe,UAAI1E,EAASzoF,GAC5B+L,EAAS,IAAIohF,EACbA,EAAe,UAAI,KAEnBphF,EAAOmhF,GAAYltF,GACd+L,EAASqhF,SACMr6E,IAAfy6E,EAA2BzhF,EAASihF,EAAIjhF,EAAQyhF,0BCvCzD,IAAI/E,EAAW,EAAQ,OACnBgF,EAAiB,EAAQ,OACzB/T,EAAc,EAAQ,OACtBuP,EAAKz8F,OAAOk4B,eAEhBpwB,EAAQmC,EAAI,EAAQ,OAAoBjK,OAAOk4B,eAAiB,SAAwB1kB,EAAGF,EAAG4tF,GAI5F,GAHAjF,EAASzoF,GACTF,EAAI45E,EAAY55E,GAAG,GACnB2oF,EAASiF,GACLD,EAAgB,IAClB,OAAOxE,EAAGjpF,EAAGF,EAAG4tF,GAChB,MAAOh3F,IACT,GAAI,QAASg3F,GAAc,QAASA,EAAY,MAAM98F,UAAU,4BAEhE,MADI,UAAW88F,IAAY1tF,EAAEF,GAAK4tF,EAAW/8F,OACtCqP,0BCdT,IAAIipF,EAAK,EAAQ,MACbR,EAAW,EAAQ,OACnBjB,EAAU,EAAQ,OAEtBnzF,EAAOC,QAAU,EAAQ,OAAoB9H,OAAOi4B,iBAAmB,SAA0BzkB,EAAGwtF,GAClG/E,EAASzoF,GAKT,IAJA,IAGIF,EAHA5R,EAAOs5F,EAAQgG,GACf3gG,EAASqB,EAAKrB,OACdF,EAAI,EAEDE,EAASF,GAAGs8F,EAAGxyF,EAAEuJ,EAAGF,EAAI5R,EAAKvB,KAAM6gG,EAAW1tF,IACrD,OAAOE,0BCXT,IAAI0nF,EAAM,EAAQ,OACdN,EAAa,EAAQ,OACrBd,EAAY,EAAQ,MACpB5M,EAAc,EAAQ,OACtB/6D,EAAM,EAAQ,OACd8uE,EAAiB,EAAQ,OACzBE,EAAOnhG,OAAO43B,yBAElB9vB,EAAQmC,EAAI,EAAQ,OAAoBk3F,EAAO,SAAkC3tF,EAAGF,GAGlF,GAFAE,EAAIsmF,EAAUtmF,GACdF,EAAI45E,EAAY55E,GAAG,GACf2tF,EAAgB,IAClB,OAAOE,EAAK3tF,EAAGF,GACf,MAAOpJ,IACT,GAAIioB,EAAI3e,EAAGF,GAAI,OAAOsnF,GAAYM,EAAIjxF,EAAEvJ,KAAK8S,EAAGF,GAAIE,EAAEF,4BCbxD,IAAIwmF,EAAY,EAAQ,MACpBsH,EAAO,WACPz9F,EAAW,GAAGA,SAEd09F,EAA+B,iBAAV3+F,QAAsBA,QAAU1C,OAAOshG,oBAC5DthG,OAAOshG,oBAAoB5+F,QAAU,GAUzCmF,EAAOC,QAAQmC,EAAI,SAA6B5G,GAC9C,OAAOg+F,GAAoC,mBAArB19F,EAASjD,KAAK2C,GATjB,SAAUA,GAC7B,IACE,OAAO+9F,EAAK/9F,GACZ,MAAO6G,GACP,OAAOm3F,EAAYz9F,SAK0C29F,CAAel+F,GAAM+9F,EAAKtH,EAAUz2F,4BChBrG,IAAIm+F,EAAQ,EAAQ,OAChBC,EAAa,gBAAmC,SAAU,aAE9D35F,EAAQmC,EAAIjK,OAAOshG,qBAAuB,SAA6B9tF,GACrE,OAAOguF,EAAMhuF,EAAGiuF,yBCLlB35F,EAAQmC,EAAIjK,OAAOy3B,6CCCnB,IAAItF,EAAM,EAAQ,OACd6wC,EAAW,EAAQ,OACnB09B,EAAW,EAAQ,MAAR,CAAyB,YACpCgB,EAAc1hG,OAAOQ,UAEzBqH,EAAOC,QAAU9H,OAAO04B,gBAAkB,SAAUllB,GAElD,OADAA,EAAIwvD,EAASxvD,GACT2e,EAAI3e,EAAGktF,GAAkBltF,EAAEktF,GACH,mBAAjBltF,EAAE3P,aAA6B2P,aAAaA,EAAE3P,YAChD2P,EAAE3P,YAAYrD,UACdgT,aAAaxT,OAAS0hG,EAAc,6BCX/C,IAAIvvE,EAAM,EAAQ,OACd2nE,EAAY,EAAQ,MACpB5L,EAAe,EAAQ,MAAR,EAA6B,GAC5CwS,EAAW,EAAQ,MAAR,CAAyB,YAExC74F,EAAOC,QAAU,SAAUgB,EAAQ64F,GACjC,IAGIphG,EAHAiT,EAAIsmF,EAAUhxF,GACd3I,EAAI,EACJof,EAAS,GAEb,IAAKhf,KAAOiT,EAAOjT,GAAOmgG,GAAUvuE,EAAI3e,EAAGjT,IAAQgf,EAAO7L,KAAKnT,GAE/D,KAAOohG,EAAMthG,OAASF,GAAOgyB,EAAI3e,EAAGjT,EAAMohG,EAAMxhG,SAC7C+tF,EAAa3uE,EAAQhf,IAAQgf,EAAO7L,KAAKnT,IAE5C,OAAOgf,0BCdT,IAAIiiF,EAAQ,EAAQ,OAChBf,EAAc,EAAQ,OAE1B54F,EAAOC,QAAU9H,OAAO0B,MAAQ,SAAc8R,GAC5C,OAAOguF,EAAMhuF,EAAGitF,yBCLlB34F,EAAQmC,EAAI,GAAG0yF,4CCCf,IAAItB,EAAU,EAAQ,OAClBZ,EAAO,EAAQ,OACfmH,EAAQ,EAAQ,MACpB/5F,EAAOC,QAAU,SAAU+2F,EAAK9iD,GAC9B,IAAI/qB,GAAMypE,EAAKz6F,QAAU,IAAI6+F,IAAQ7+F,OAAO6+F,GACxCnvF,EAAM,GACVA,EAAImvF,GAAO9iD,EAAK/qB,GAChBqqE,EAAQA,EAAQ3tF,EAAI2tF,EAAQnkF,EAAI0qF,GAAM,WAAc5wE,EAAG,MAAQ,SAAUthB,uBCR3E7H,EAAOC,QAAU,SAAUi0C,GACzB,IACE,MAAO,CAAE7xC,GAAG,EAAOiF,EAAG4sC,KACtB,MAAO7xC,GACP,MAAO,CAAEA,GAAG,EAAMiF,EAAGjF,4BCJzB,IAAI+xF,EAAW,EAAQ,OACnBpC,EAAW,EAAQ,OACnBgI,EAAuB,EAAQ,OAEnCh6F,EAAOC,QAAU,SAAU2L,EAAGnE,GAE5B,GADA2sF,EAASxoF,GACLomF,EAASvqF,IAAMA,EAAEzL,cAAgB4P,EAAG,OAAOnE,EAC/C,IAAIwyF,EAAoBD,EAAqB53F,EAAEwJ,GAG/C,OADAgZ,EADcq1E,EAAkBr1E,SACxBnd,GACDwyF,EAAkBlC,4BCV3B/3F,EAAOC,QAAU,SAAUi6F,EAAQ59F,GACjC,MAAO,CACL0zB,aAAuB,EAATkqE,GACdzpE,eAAyB,EAATypE,GAChBxpE,WAAqB,EAATwpE,GACZ59F,MAAOA,2BCLX,IAAIuyC,EAAO,EAAQ,OACnB7uC,EAAOC,QAAU,SAAU5H,EAAQwhC,EAAK28D,GACtC,IAAK,IAAI99F,KAAOmhC,EACV28D,GAAQn+F,EAAOK,GAAML,EAAOK,GAAOmhC,EAAInhC,GACtCm2C,EAAKx2C,EAAQK,EAAKmhC,EAAInhC,IAC3B,OAAOL,0BCLX2H,EAAOC,QAAU,EAAjB,8BCEA,IAAI+xF,EAAW,EAAQ,OACnBoC,EAAW,EAAQ,OACnBhjD,EAAQ,SAAUzlC,EAAG08E,GAEvB,GADA+L,EAASzoF,IACJqmF,EAAS3J,IAAoB,OAAVA,EAAgB,MAAM9rF,UAAU8rF,EAAQ,8BAElEroF,EAAOC,QAAU,CACf6C,IAAK3K,OAAOy4B,iBAAmB,aAAe,GAC5C,SAAUz0B,EAAMg+F,EAAOr3F,GACrB,KACEA,EAAM,EAAQ,MAAR,CAAkBmxF,SAASp7F,KAAM,WAA4BV,OAAOQ,UAAW,aAAamK,IAAK,IACnG3G,EAAM,IACVg+F,IAAUh+F,aAAgBf,OAC1B,MAAOiH,GAAK83F,GAAQ,EACtB,OAAO,SAAwBxuF,EAAG08E,GAIhC,OAHAj3C,EAAMzlC,EAAG08E,GACL8R,EAAOxuF,EAAEmlB,UAAYu3D,EACpBvlF,EAAI6I,EAAG08E,GACL18E,GAVX,CAYE,IAAI,QAAS+S,GACjB0yB,MAAOA,uCCtBT,IAAIpe,EAAS,EAAQ,OACjB4/D,EAAO,EAAQ,OACfgC,EAAK,EAAQ,MACb2D,EAAc,EAAQ,OACtB6B,EAAU,EAAQ,MAAR,CAAkB,WAEhCp6F,EAAOC,QAAU,SAAU+2F,GACzB,IAAIprF,EAAwB,mBAAbgnF,EAAKoE,GAAqBpE,EAAKoE,GAAOhkE,EAAOgkE,GACxDuB,GAAe3sF,IAAMA,EAAEwuF,IAAUxF,EAAGxyF,EAAEwJ,EAAGwuF,EAAS,CACpD3pE,cAAc,EACd9J,IAAK,WAAc,OAAO5tB,gCCX9B,IAAIwjB,EAAM,UACN+N,EAAM,EAAQ,OACdkoE,EAAM,EAAQ,MAAR,CAAkB,eAE5BxyF,EAAOC,QAAU,SAAUzE,EAAIiT,EAAK4rF,GAC9B7+F,IAAO8uB,EAAI9uB,EAAK6+F,EAAO7+F,EAAKA,EAAG7C,UAAW65F,IAAMj2E,EAAI/gB,EAAIg3F,EAAK,CAAE/hE,cAAc,EAAMn0B,MAAOmS,4BCLhG,IAAI6rF,EAAS,EAAQ,MAAR,CAAqB,QAC9BC,EAAM,EAAQ,OAClBv6F,EAAOC,QAAU,SAAUvH,GACzB,OAAO4hG,EAAO5hG,KAAS4hG,EAAO5hG,GAAO6hG,EAAI7hG,4BCH3C,IAAIk6F,EAAO,EAAQ,OACf5/D,EAAS,EAAQ,OACjBwnE,EAAS,qBACTC,EAAQznE,EAAOwnE,KAAYxnE,EAAOwnE,GAAU,KAE/Cx6F,EAAOC,QAAU,SAAUvH,EAAK4D,GAC/B,OAAOm+F,EAAM/hG,KAAS+hG,EAAM/hG,QAAiBgmB,IAAVpiB,EAAsBA,EAAQ,MAChE,WAAY,IAAIuP,KAAK,CACtBiI,QAAS8+E,EAAK9+E,QACd1J,KAAM,EAAQ,OAAgB,OAAS,SACvCswF,UAAW,mECTb,IAAItG,EAAW,EAAQ,OACnBpB,EAAY,EAAQ,OACpBoH,EAAU,EAAQ,MAAR,CAAkB,WAChCp6F,EAAOC,QAAU,SAAU0L,EAAGW,GAC5B,IACIzG,EADA+F,EAAIwoF,EAASzoF,GAAG3P,YAEpB,YAAa0iB,IAAN9S,QAAiD8S,IAA7B7Y,EAAIuuF,EAASxoF,GAAGwuF,IAAyB9tF,EAAI0mF,EAAUntF,2BCPpF,IAAI80F,EAAY,EAAQ,OACpBC,EAAU,EAAQ,MAGtB56F,EAAOC,QAAU,SAAU46F,GACzB,OAAO,SAAU5H,EAAMrK,GACrB,IAGItmF,EAAGe,EAHH0C,EAAIqH,OAAOwtF,EAAQ3H,IACnB36F,EAAIqiG,EAAU/R,GACd5lF,EAAI+C,EAAEvN,OAEV,OAAIF,EAAI,GAAKA,GAAK0K,EAAU63F,EAAY,QAAKn8E,GAC7Cpc,EAAIyD,EAAE9C,WAAW3K,IACN,OAAUgK,EAAI,OAAUhK,EAAI,IAAM0K,IAAMK,EAAI0C,EAAE9C,WAAW3K,EAAI,IAAM,OAAU+K,EAAI,MACxFw3F,EAAY90F,EAAE3C,OAAO9K,GAAKgK,EAC1Bu4F,EAAY90F,EAAEhK,MAAMzD,EAAGA,EAAI,GAA2B+K,EAAI,OAAzBf,EAAI,OAAU,IAAqB,+BCd5E,IAaIw4F,EAAOC,EAASC,EAbhB5oB,EAAM,EAAQ,OACd6oB,EAAS,EAAQ,OACjBC,EAAO,EAAQ,OACfC,EAAM,EAAQ,OACdnoE,EAAS,EAAQ,OACjB1L,EAAU0L,EAAO1L,QACjB8zE,EAAUpoE,EAAOgxB,aACjBq3C,EAAYroE,EAAOsoE,eACnBC,EAAiBvoE,EAAOuoE,eACxBC,EAAWxoE,EAAOwoE,SAClBzzC,EAAU,EACV0zC,EAAQ,GACRC,EAAqB,qBAErBC,EAAM,WACR,IAAIt4E,GAAMtqB,KAEV,GAAI0iG,EAAM7iG,eAAeyqB,GAAK,CAC5B,IAAI8F,EAAKsyE,EAAMp4E,UACRo4E,EAAMp4E,GACb8F,MAGAyyE,EAAW,SAAUt/D,GACvBq/D,EAAI9iG,KAAKyjC,EAAM9tB,OAGZ4sF,GAAYC,IACfD,EAAU,SAAsBjyE,GAG9B,IAFA,IAAIhO,EAAO,GACP7iB,EAAI,EACDC,UAAUC,OAASF,GAAG6iB,EAAKtP,KAAKtT,UAAUD,MAMjD,OALAmjG,IAAQ1zC,GAAW,WAEjBkzC,EAAoB,mBAAN9xE,EAAmBA,EAAK8qE,SAAS9qE,GAAKhO,IAEtD2/E,EAAM/yC,GACCA,GAETszC,EAAY,SAAwBh4E,UAC3Bo4E,EAAMp4E,IAGmB,WAA9B,EAAQ,MAAR,CAAkBiE,GACpBwzE,EAAQ,SAAUz3E,GAChBiE,EAAQuwE,SAASzlB,EAAIupB,EAAKt4E,EAAI,KAGvBm4E,GAAYA,EAASxvF,IAC9B8uF,EAAQ,SAAUz3E,GAChBm4E,EAASxvF,IAAIomE,EAAIupB,EAAKt4E,EAAI,KAGnBk4E,GAETP,GADAD,EAAU,IAAIQ,GACCM,MACfd,EAAQe,MAAMC,UAAYH,EAC1Bd,EAAQ1oB,EAAI4oB,EAAKgB,YAAahB,EAAM,IAG3BhoE,EAAO3iB,kBAA0C,mBAAf2rF,cAA8BhpE,EAAOipE,eAChFnB,EAAQ,SAAUz3E,GAChB2P,EAAOgpE,YAAY34E,EAAK,GAAI,MAE9B2P,EAAO3iB,iBAAiB,UAAWurF,GAAU,IAG7Cd,EADSY,KAAsBP,EAAI,UAC3B,SAAU93E,GAChB63E,EAAK/7F,YAAYg8F,EAAI,WAA6B,mBAAI,WACpDD,EAAK1xD,YAAYzwC,MACjB4iG,EAAI9iG,KAAKwqB,KAKL,SAAUA,GAChBhkB,WAAW+yE,EAAIupB,EAAKt4E,EAAI,GAAI,KAIlCrjB,EAAOC,QAAU,CACf6C,IAAKs4F,EACLc,MAAOb,0BClFT,IAAIV,EAAY,EAAQ,OACpB1zF,EAAM/C,KAAK+C,IACXG,EAAMlD,KAAKkD,IACfpH,EAAOC,QAAU,SAAU8f,EAAOvnB,GAEhC,OADAunB,EAAQ46E,EAAU56E,IACH,EAAI9Y,EAAI8Y,EAAQvnB,EAAQ,GAAK4O,EAAI2Y,EAAOvnB,uBCJzD,IAAIoU,EAAO1I,KAAK0I,KACZzI,EAAQD,KAAKC,MACjBnE,EAAOC,QAAU,SAAUzE,GACzB,OAAO8Y,MAAM9Y,GAAMA,GAAM,GAAKA,EAAK,EAAI2I,EAAQyI,GAAMpR,0BCHvD,IAAIg9F,EAAU,EAAQ,OAClBoC,EAAU,EAAQ,MACtB56F,EAAOC,QAAU,SAAUzE,GACzB,OAAOg9F,EAAQoC,EAAQp/F,4BCHzB,IAAIm/F,EAAY,EAAQ,OACpBvzF,EAAMlD,KAAKkD,IACfpH,EAAOC,QAAU,SAAUzE,GACzB,OAAOA,EAAK,EAAI4L,EAAIuzF,EAAUn/F,GAAK,kBAAoB,0BCHzD,IAAIo/F,EAAU,EAAQ,MACtB56F,EAAOC,QAAU,SAAUzE,GACzB,OAAOrD,OAAOyiG,EAAQp/F,4BCFxB,IAAIw2F,EAAW,EAAQ,OAGvBhyF,EAAOC,QAAU,SAAUzE,EAAIqK,GAC7B,IAAKmsF,EAASx2F,GAAK,OAAOA,EAC1B,IAAI2tB,EAAIrU,EACR,GAAIjP,GAAkC,mBAArBsjB,EAAK3tB,EAAGM,YAA4Bk2F,EAASl9E,EAAMqU,EAAGtwB,KAAK2C,IAAM,OAAOsZ,EACzF,GAAgC,mBAApBqU,EAAK3tB,EAAG0Q,WAA2B8lF,EAASl9E,EAAMqU,EAAGtwB,KAAK2C,IAAM,OAAOsZ,EACnF,IAAKjP,GAAkC,mBAArBsjB,EAAK3tB,EAAGM,YAA4Bk2F,EAASl9E,EAAMqU,EAAGtwB,KAAK2C,IAAM,OAAOsZ,EAC1F,MAAMvY,UAAU,+DCVlB,IAAI8mB,EAAK,EACL84E,EAAKj4F,KAAK2E,SACd7I,EAAOC,QAAU,SAAUvH,GACzB,MAAO,UAAU0T,YAAesS,IAARhmB,EAAoB,GAAKA,EAAK,QAAS2qB,EAAK84E,GAAIrgG,SAAS,6BCHnF,IACI8H,EADS,EAAQ,OACEA,UAEvB5D,EAAOC,QAAU2D,GAAaA,EAAUuwC,WAAa,0BCHrD,IAAInhB,EAAS,EAAQ,OACjB4/D,EAAO,EAAQ,OACfwC,EAAU,EAAQ,OAClBgH,EAAS,EAAQ,OACjB/rE,EAAiB,UACrBrwB,EAAOC,QAAU,SAAUhE,GACzB,IAAIogG,EAAUzJ,EAAKn3F,SAAWm3F,EAAKn3F,OAAS25F,EAAU,GAAKpiE,EAAOv3B,QAAU,IACtD,KAAlBQ,EAAKmH,OAAO,IAAenH,KAAQogG,GAAUhsE,EAAegsE,EAASpgG,EAAM,CAAEK,MAAO8/F,EAAOh6F,EAAEnG,6BCPnGgE,EAAQmC,EAAI,EAAZ,8BCAA,IAAIq4F,EAAQ,EAAQ,MAAR,CAAqB,OAC7BF,EAAM,EAAQ,OACd9+F,EAAS,gBACT6gG,EAA8B,mBAAV7gG,GAETuE,EAAOC,QAAU,SAAUhE,GACxC,OAAOw+F,EAAMx+F,KAAUw+F,EAAMx+F,GAC3BqgG,GAAc7gG,EAAOQ,KAAUqgG,EAAa7gG,EAAS8+F,GAAK,UAAYt+F,MAGjEw+F,MAAQA,yBCVjB,IAAI8B,EAAU,EAAQ,OAClB9H,EAAW,EAAQ,MAAR,CAAkB,YAC7BM,EAAY,EAAQ,OACxB/0F,EAAOC,QAAU,2BAAuC,SAAUzE,GAChE,QAAUkjB,GAANljB,EAAiB,OAAOA,EAAGi5F,IAC1Bj5F,EAAG,eACHu5F,EAAUwH,EAAQ/gG,4BCNzB,IAAI44F,EAAW,EAAQ,OACnBztE,EAAM,EAAQ,OAClB3mB,EAAOC,QAAU,qBAAiC,SAAUzE,GAC1D,IAAIk5F,EAAS/tE,EAAInrB,GACjB,GAAqB,mBAAVk5F,EAAsB,MAAMn4F,UAAUf,EAAK,qBACtD,OAAO44F,EAASM,EAAO77F,KAAK2C,4BCL9B,IAAI+gG,EAAU,EAAQ,OAClB9H,EAAW,EAAQ,MAAR,CAAkB,YAC7BM,EAAY,EAAQ,OACxB/0F,EAAOC,QAAU,oBAAgC,SAAUzE,GACzD,IAAImQ,EAAIxT,OAAOqD,GACf,YAAuBkjB,IAAhB/S,EAAE8oF,IACJ,eAAgB9oF,GAEhBopF,EAAUn8F,eAAe2jG,EAAQ5wF,wCCPxC,IAAIymE,EAAM,EAAQ,OACdohB,EAAU,EAAQ,OAClBr4B,EAAW,EAAQ,OACnBtiE,EAAO,EAAQ,OACfs7F,EAAc,EAAQ,OACtBjC,EAAW,EAAQ,OACnBsK,EAAiB,EAAQ,OACzBnI,EAAY,EAAQ,OAExBb,EAAQA,EAAQ3tF,EAAI2tF,EAAQnkF,GAAK,EAAQ,MAAR,EAA0B,SAAUgC,GAAQjW,MAAMc,KAAKmV,MAAW,QAAS,CAE1GnV,KAAM,SAAcugG,GAClB,IAOIjkG,EAAQkf,EAAQqN,EAAMrpB,EAPtBiQ,EAAIwvD,EAASshC,GACb7wF,EAAmB,mBAAR7S,KAAqBA,KAAOqC,MACvCs9F,EAAOngG,UAAUC,OACjBkkG,EAAQhE,EAAO,EAAIngG,UAAU,QAAKmmB,EAClCi+E,OAAoBj+E,IAAVg+E,EACV38E,EAAQ,EACR20E,EAASL,EAAU1oF,GAIvB,GAFIgxF,IAASD,EAAQtqB,EAAIsqB,EAAOhE,EAAO,EAAIngG,UAAU,QAAKmmB,EAAW,SAEvDA,GAAVg2E,GAAyB9oF,GAAKxQ,OAAS+4F,EAAYO,GAMrD,IAAKh9E,EAAS,IAAI9L,EADlBpT,EAAS05F,EAASvmF,EAAEnT,SACSA,EAASunB,EAAOA,IAC3Cy8E,EAAe9kF,EAAQqI,EAAO48E,EAAUD,EAAM/wF,EAAEoU,GAAQA,GAASpU,EAAEoU,SANrE,IAAKrkB,EAAWg5F,EAAO77F,KAAK8S,GAAI+L,EAAS,IAAI9L,IAAOmZ,EAAOrpB,EAASc,QAAQH,KAAM0jB,IAChFy8E,EAAe9kF,EAAQqI,EAAO48E,EAAU9jG,EAAK6C,EAAUghG,EAAO,CAAC33E,EAAKzoB,MAAOyjB,IAAQ,GAAQgF,EAAKzoB,OASpG,OADAob,EAAOlf,OAASunB,EACTrI,wCCjCX,IAAIklF,EAAmB,EAAQ,OAC3B73E,EAAO,EAAQ,OACfgwE,EAAY,EAAQ,OACpB9C,EAAY,EAAQ,MAMxBjyF,EAAOC,QAAU,EAAQ,MAAR,CAA0B7E,MAAO,SAAS,SAAUyhG,EAAU/G,GAC7E/8F,KAAK+jG,GAAK7K,EAAU4K,GACpB9jG,KAAK+tB,GAAK,EACV/tB,KAAKgkG,GAAKjH,KAET,WACD,IAAInqF,EAAI5S,KAAK+jG,GACThH,EAAO/8F,KAAKgkG,GACZh9E,EAAQhnB,KAAK+tB,KACjB,OAAKnb,GAAKoU,GAASpU,EAAEnT,QACnBO,KAAK+jG,QAAKp+E,EACHqG,EAAK,IAEaA,EAAK,EAApB,QAAR+wE,EAA+B/1E,EACvB,UAAR+1E,EAAiCnqF,EAAEoU,GACxB,CAACA,EAAOpU,EAAEoU,OACxB,UAGHg1E,EAAUiI,UAAYjI,EAAU35F,MAEhCwhG,EAAiB,QACjBA,EAAiB,UACjBA,EAAiB,kCChCjB,IAAIpJ,EAAU,EAAQ,OAEtBA,EAAQA,EAAQ3tF,EAAI2tF,EAAQnkF,EAAG,SAAU,CAAEjX,OAAQ,EAAQ,gCCH3D,IAAIo7F,EAAU,EAAQ,OAEtBA,EAAQA,EAAQ3tF,EAAG,SAAU,CAAEilB,OAAQ,EAAQ,gCCF/C,IAAI0oE,EAAU,EAAQ,OAEtBA,EAAQA,EAAQ3tF,EAAI2tF,EAAQnkF,GAAK,EAAQ,OAAmB,SAAU,CAAEghB,eAAgB,mCCDxF,IAAI4hE,EAAY,EAAQ,MACpBgL,EAA4B,WAEhC,EAAQ,MAAR,CAAyB,4BAA4B,WACnD,OAAO,SAAkCzhG,EAAI9C,GAC3C,OAAOukG,EAA0BhL,EAAUz2F,GAAK9C,8BCLpD,IAAIyiE,EAAW,EAAQ,OACnB+hC,EAAkB,EAAQ,OAE9B,EAAQ,MAAR,CAAyB,kBAAkB,WACzC,OAAO,SAAwB1hG,GAC7B,OAAO0hG,EAAgB/hC,EAAS3/D,+BCLpC,IAAI2/D,EAAW,EAAQ,OACnBw+B,EAAQ,EAAQ,OAEpB,EAAQ,MAAR,CAAyB,QAAQ,WAC/B,OAAO,SAAcn+F,GACnB,OAAOm+F,EAAMx+B,EAAS3/D,+BCL1B,IAAIg4F,EAAU,EAAQ,OACtBA,EAAQA,EAAQ3tF,EAAG,SAAU,CAAE+qB,eAAgB,sECD/C,IAwBIusE,EAAUC,EAA6BC,EAAsBC,EAxB7DlI,EAAU,EAAQ,OAClBpiE,EAAS,EAAQ,OACjBo/C,EAAM,EAAQ,OACdmqB,EAAU,EAAQ,OAClB/I,EAAU,EAAQ,OAClBxB,EAAW,EAAQ,OACnBgB,EAAY,EAAQ,OACpBuK,EAAa,EAAQ,OACrBC,EAAQ,EAAQ,OAChBC,EAAqB,EAAQ,OAC7BtF,EAAO,aACPuF,EAAY,EAAQ,MAAR,GACZC,EAA6B,EAAQ,OACrCC,EAAU,EAAQ,OAClBzpD,EAAY,EAAQ,OACpB0pD,EAAiB,EAAQ,OACzBC,EAAU,UACVvhG,EAAYy2B,EAAOz2B,UACnB+qB,EAAU0L,EAAO1L,QACjBy2E,EAAWz2E,GAAWA,EAAQy2E,SAC9BC,EAAKD,GAAYA,EAASC,IAAM,GAChCC,EAAWjrE,EAAc,QACzB8nC,EAA6B,WAApByhC,EAAQj1E,GACjB42E,EAAQ,aAERlE,EAAuBoD,EAA8BO,EAA2Bv7F,EAEhF+7F,IAAe,WACjB,IAEE,IAAIpG,EAAUkG,EAASr5E,QAAQ,GAC3Bw5E,GAAerG,EAAQ/7F,YAAc,IAAI,EAAQ,MAAR,CAAkB,YAAc,SAAUk4C,GACrFA,EAAKgqD,EAAOA,IAGd,OAAQpjC,GAA0C,mBAAzBujC,wBACpBtG,EAAQ9yE,KAAKi5E,aAAkBE,GAIT,IAAtBJ,EAAGlkG,QAAQ,SACyB,IAApCq6C,EAAUr6C,QAAQ,aACvB,MAAOuI,KAfQ,GAmBfi8F,EAAa,SAAU9iG,GACzB,IAAIypB,EACJ,SAAO+sE,EAASx2F,IAAkC,mBAAnBypB,EAAOzpB,EAAGypB,QAAsBA,GAE7DwyE,EAAS,SAAUM,EAASwG,GAC9B,IAAIxG,EAAQ5lE,GAAZ,CACA4lE,EAAQ5lE,IAAK,EACb,IAAIqsE,EAAQzG,EAAQ/xE,GACpB03E,GAAU,WAoCR,IAnCA,IAAIphG,EAAQy7F,EAAQ0G,GAChBC,EAAmB,GAAd3G,EAAQ/lE,GACb15B,EAAI,EACJqjG,EAAM,SAAUgD,GAClB,IAIIjnF,EAAQuN,EAAM25E,EAJdC,EAAUH,EAAKC,EAASD,GAAKC,EAASrkF,KACtCsK,EAAU+5E,EAAS/5E,QACnBC,EAAS85E,EAAS95E,OAClB6yE,EAASiH,EAASjH,OAEtB,IACMmH,GACGH,IACe,GAAd3G,EAAQ+G,IAASC,EAAkBhH,GACvCA,EAAQ+G,GAAK,IAEC,IAAZD,EAAkBnnF,EAASpb,GAEzBo7F,GAAQA,EAAOE,QACnBlgF,EAASmnF,EAAQviG,GACbo7F,IACFA,EAAOC,OACPiH,GAAS,IAGTlnF,IAAWinF,EAAS5G,QACtBlzE,EAAOtoB,EAAU,yBACR0oB,EAAOq5E,EAAW5mF,IAC3BuN,EAAKpsB,KAAK6e,EAAQkN,EAASC,GACtBD,EAAQlN,IACVmN,EAAOvoB,GACd,MAAO+F,GACHq1F,IAAWkH,GAAQlH,EAAOC,OAC9B9yE,EAAOxiB,KAGJm8F,EAAMhmG,OAASF,GAAGqjG,EAAI6C,EAAMlmG,MACnCy/F,EAAQ/xE,GAAK,GACb+xE,EAAQ5lE,IAAK,EACTosE,IAAaxG,EAAQ+G,IAAIE,EAAYjH,QAGzCiH,EAAc,SAAUjH,GAC1BI,EAAKt/F,KAAKm6B,GAAQ,WAChB,IAEItb,EAAQmnF,EAAS5tF,EAFjB3U,EAAQy7F,EAAQ0G,GAChBQ,EAAYC,EAAYnH,GAe5B,GAbIkH,IACFvnF,EAASkmF,GAAQ,WACX9iC,EACFxzC,EAAQgsB,KAAK,qBAAsBh3C,EAAOy7F,IACjC8G,EAAU7rE,EAAOmsE,sBAC1BN,EAAQ,CAAE9G,QAASA,EAASqH,OAAQ9iG,KAC1B2U,EAAU+hB,EAAO/hB,UAAYA,EAAQpU,OAC/CoU,EAAQpU,MAAM,8BAA+BP,MAIjDy7F,EAAQ+G,GAAKhkC,GAAUokC,EAAYnH,GAAW,EAAI,GAClDA,EAAQnyE,QAAKlH,EACXugF,GAAavnF,EAAOrV,EAAG,MAAMqV,EAAOpQ,MAGxC43F,EAAc,SAAUnH,GAC1B,OAAsB,IAAfA,EAAQ+G,IAAkD,KAArC/G,EAAQnyE,IAAMmyE,EAAQ/xE,IAAIxtB,QAEpDumG,EAAoB,SAAUhH,GAChCI,EAAKt/F,KAAKm6B,GAAQ,WAChB,IAAI6rE,EACA/jC,EACFxzC,EAAQgsB,KAAK,mBAAoBykD,IACxB8G,EAAU7rE,EAAOqsE,qBAC1BR,EAAQ,CAAE9G,QAASA,EAASqH,OAAQrH,EAAQ0G,SAI9Ca,EAAU,SAAUhjG,GACtB,IAAIy7F,EAAUh/F,KACVg/F,EAAQ3lE,KACZ2lE,EAAQ3lE,IAAK,GACb2lE,EAAUA,EAAQwH,IAAMxH,GAChB0G,GAAKniG,EACby7F,EAAQ/lE,GAAK,EACR+lE,EAAQnyE,KAAImyE,EAAQnyE,GAAKmyE,EAAQ/xE,GAAGjqB,SACzC07F,EAAOM,GAAS,KAEdyH,EAAW,SAAUljG,GACvB,IACI2oB,EADA8yE,EAAUh/F,KAEd,IAAIg/F,EAAQ3lE,GAAZ,CACA2lE,EAAQ3lE,IAAK,EACb2lE,EAAUA,EAAQwH,IAAMxH,EACxB,IACE,GAAIA,IAAYz7F,EAAO,MAAMC,EAAU,qCACnC0oB,EAAOq5E,EAAWhiG,IACpBohG,GAAU,WACR,IAAI+B,EAAU,CAAEF,GAAIxH,EAAS3lE,IAAI,GACjC,IACEnN,EAAKpsB,KAAKyD,EAAO81E,EAAIotB,EAAUC,EAAS,GAAIrtB,EAAIktB,EAASG,EAAS,IAClE,MAAOp9F,GACPi9F,EAAQzmG,KAAK4mG,EAASp9F,QAI1B01F,EAAQ0G,GAAKniG,EACby7F,EAAQ/lE,GAAK,EACbylE,EAAOM,GAAS,IAElB,MAAO11F,GACPi9F,EAAQzmG,KAAK,CAAE0mG,GAAIxH,EAAS3lE,IAAI,GAAS/vB,MAKxC87F,IAEHF,EAAW,SAAiByB,GAC1BnC,EAAWxkG,KAAMklG,EAAUH,EAAS,MACpC9K,EAAU0M,GACVvC,EAAStkG,KAAKE,MACd,IACE2mG,EAASttB,EAAIotB,EAAUzmG,KAAM,GAAIq5E,EAAIktB,EAASvmG,KAAM,IACpD,MAAOyH,GACP8+F,EAAQzmG,KAAKE,KAAMyH,MAIvB28F,EAAW,SAAiBuC,GAC1B3mG,KAAKitB,GAAK,GACVjtB,KAAK6sB,QAAKlH,EACV3lB,KAAKi5B,GAAK,EACVj5B,KAAKq5B,IAAK,EACVr5B,KAAK0lG,QAAK//E,EACV3lB,KAAK+lG,GAAK,EACV/lG,KAAKo5B,IAAK,IAEHx5B,UAAY,EAAQ,MAAR,CAA2BslG,EAAStlG,UAAW,CAElEssB,KAAM,SAAc06E,EAAaC,GAC/B,IAAIjB,EAAW3E,EAAqByD,EAAmB1kG,KAAMklG,IAO7D,OANAU,EAASD,GAA2B,mBAAfiB,GAA4BA,EACjDhB,EAASrkF,KAA4B,mBAAdslF,GAA4BA,EACnDjB,EAASjH,OAAS58B,EAASxzC,EAAQowE,YAASh5E,EAC5C3lB,KAAKitB,GAAGna,KAAK8yF,GACT5lG,KAAK6sB,IAAI7sB,KAAK6sB,GAAG/Z,KAAK8yF,GACtB5lG,KAAKi5B,IAAIylE,EAAO1+F,MAAM,GACnB4lG,EAAS5G,SAGlB,MAAS,SAAU6H,GACjB,OAAO7mG,KAAKksB,UAAKvG,EAAWkhF,MAGhCvC,EAAuB,WACrB,IAAItF,EAAU,IAAIoF,EAClBpkG,KAAKg/F,QAAUA,EACfh/F,KAAK6rB,QAAUwtD,EAAIotB,EAAUzH,EAAS,GACtCh/F,KAAK8rB,OAASutD,EAAIktB,EAASvH,EAAS,IAEtC4F,EAA2Bv7F,EAAI43F,EAAuB,SAAUpuF,GAC9D,OAAOA,IAAMqyF,GAAYryF,IAAM0xF,EAC3B,IAAID,EAAqBzxF,GACzBwxF,EAA4BxxF,KAIpC4nF,EAAQA,EAAQxkF,EAAIwkF,EAAQroF,EAAIqoF,EAAQnkF,GAAK8uF,EAAY,CAAEx5E,QAASs5E,IACpE,EAAQ,MAAR,CAAgCA,EAAUH,GAC1C,EAAQ,MAAR,CAA0BA,GAC1BR,EAAU,EAAQ,OAAkB,QAGpC9J,EAAQA,EAAQ3tF,EAAI2tF,EAAQnkF,GAAK8uF,EAAYL,EAAS,CAEpDj5E,OAAQ,SAAgB7gB,GACtB,IAAI67F,EAAa7F,EAAqBjhG,MAGtC,OADAu/F,EADeuH,EAAWh7E,QACjB7gB,GACF67F,EAAW9H,WAGtBvE,EAAQA,EAAQ3tF,EAAI2tF,EAAQnkF,GAAK+lF,IAAY+I,GAAaL,EAAS,CAEjEl5E,QAAS,SAAiBnd,GACxB,OAAOo2F,EAAezI,GAAWr8F,OAASukG,EAAUW,EAAWllG,KAAM0O,MAGzE+rF,EAAQA,EAAQ3tF,EAAI2tF,EAAQnkF,IAAM8uF,GAAc,EAAQ,MAAR,EAA0B,SAAU9sF,GAClF4sF,EAAS1pC,IAAIljD,GAAa,MAAE6sF,OACzBJ,EAAS,CAEZvpC,IAAK,SAAaigC,GAChB,IAAI5oF,EAAI7S,KACJ8mG,EAAa7F,EAAqBpuF,GAClCgZ,EAAUi7E,EAAWj7E,QACrBC,EAASg7E,EAAWh7E,OACpBnN,EAASkmF,GAAQ,WACnB,IAAIj8E,EAAS,GACT5B,EAAQ,EACR+mE,EAAY,EAChB0W,EAAMhJ,GAAU,GAAO,SAAUuD,GAC/B,IAAI+H,EAAS//E,IACTggF,GAAgB,EACpBp+E,EAAO9V,UAAK6S,GACZooE,IACAl7E,EAAEgZ,QAAQmzE,GAAS9yE,MAAK,SAAU3oB,GAC5ByjG,IACJA,GAAgB,EAChBp+E,EAAOm+E,GAAUxjG,IACfwqF,GAAaliE,EAAQjD,MACtBkD,QAEHiiE,GAAaliE,EAAQjD,MAGzB,OADIjK,EAAOrV,GAAGwiB,EAAOnN,EAAOpQ,GACrBu4F,EAAW9H,SAGpBiI,KAAM,SAAcxL,GAClB,IAAI5oF,EAAI7S,KACJ8mG,EAAa7F,EAAqBpuF,GAClCiZ,EAASg7E,EAAWh7E,OACpBnN,EAASkmF,GAAQ,WACnBJ,EAAMhJ,GAAU,GAAO,SAAUuD,GAC/BnsF,EAAEgZ,QAAQmzE,GAAS9yE,KAAK46E,EAAWj7E,QAASC,SAIhD,OADInN,EAAOrV,GAAGwiB,EAAOnN,EAAOpQ,GACrBu4F,EAAW9H,+CC1RtB,IAAIkI,EAAM,EAAQ,MAAR,EAAwB,GAGlC,EAAQ,MAAR,CAA0B7yF,OAAQ,UAAU,SAAUyvF,GACpD9jG,KAAK+jG,GAAK1vF,OAAOyvF,GACjB9jG,KAAK+tB,GAAK,KAET,WACD,IAEIo5E,EAFAv0F,EAAI5S,KAAK+jG,GACT/8E,EAAQhnB,KAAK+tB,GAEjB,OAAI/G,GAASpU,EAAEnT,OAAe,CAAE8D,WAAOoiB,EAAWriB,MAAM,IACxD6jG,EAAQD,EAAIt0F,EAAGoU,GACfhnB,KAAK+tB,IAAMo5E,EAAM1nG,OACV,CAAE8D,MAAO4jG,EAAO7jG,MAAM,2CCb/B,IAAI22B,EAAS,EAAQ,OACjB1I,EAAM,EAAQ,OACdiuE,EAAc,EAAQ,OACtB/E,EAAU,EAAQ,OAClB6B,EAAW,EAAQ,OACnBoB,EAAO,aACP0J,EAAS,EAAQ,MACjB7F,EAAS,EAAQ,OACjBrF,EAAiB,EAAQ,OACzBsF,EAAM,EAAQ,OACd6F,EAAM,EAAQ,OACdhE,EAAS,EAAQ,OACjBiE,EAAY,EAAQ,OACpBC,EAAW,EAAQ,OACnB3kG,EAAU,EAAQ,OAClBy4F,EAAW,EAAQ,OACnBpC,EAAW,EAAQ,OACnB72B,EAAW,EAAQ,OACnB82B,EAAY,EAAQ,MACpB5M,EAAc,EAAQ,OACtB0N,EAAa,EAAQ,OACrBwN,EAAU,EAAQ,OAClBC,EAAU,EAAQ,OAClBC,EAAQ,EAAQ,OAChBC,EAAQ,EAAQ,OAChBC,EAAM,EAAQ,MACdhH,EAAQ,EAAQ,OAChBL,EAAOmH,EAAMr+F,EACbwyF,EAAK+L,EAAIv+F,EACTm3F,EAAOiH,EAAQp+F,EACfi6F,EAAUrpE,EAAOv3B,OACjBmlG,EAAQ5tE,EAAOxb,KACfqpF,EAAaD,GAASA,EAAMnpF,UAE5BqpF,EAASV,EAAI,WACbW,EAAeX,EAAI,eACnB7M,EAAS,GAAGuB,qBACZkM,EAAiB1G,EAAO,mBACxB2G,EAAa3G,EAAO,WACpB4G,EAAY5G,EAAO,cACnBT,EAAc1hG,OAAgB,UAC9BgmG,EAA+B,mBAAX9B,KAA2BqE,EAAMt+F,EACrD++F,EAAUnuE,EAAOmuE,QAEjBC,GAAUD,IAAYA,EAAiB,YAAMA,EAAiB,UAAEE,UAGhEC,EAAgB/I,GAAe4H,GAAO,WACxC,OAES,GAFFI,EAAQ3L,EAAG,GAAI,IAAK,CACzBjuE,IAAK,WAAc,OAAOiuE,EAAG77F,KAAM,IAAK,CAAEuD,MAAO,IAAKgG,MACpDA,KACD,SAAU9G,EAAI9C,EAAK4T,GACtB,IAAIi1F,EAAYjI,EAAKO,EAAanhG,GAC9B6oG,UAAkB1H,EAAYnhG,GAClCk8F,EAAGp5F,EAAI9C,EAAK4T,GACRi1F,GAAa/lG,IAAOq+F,GAAajF,EAAGiF,EAAanhG,EAAK6oG,IACxD3M,EAEA4M,EAAO,SAAU/yF,GACnB,IAAIqhB,EAAMmxE,EAAWxyF,GAAO8xF,EAAQlE,EAAiB,WAErD,OADAvsE,EAAIitE,GAAKtuF,EACFqhB,GAGLirC,EAAWojC,GAAyC,iBAApB9B,EAAQ3gG,SAAuB,SAAUF,GAC3E,MAAoB,iBAANA,GACZ,SAAUA,GACZ,OAAOA,aAAc6gG,GAGnBvJ,EAAkB,SAAwBt3F,EAAI9C,EAAK4T,GAKrD,OAJI9Q,IAAOq+F,GAAa/G,EAAgBoO,EAAWxoG,EAAK4T,GACxD8nF,EAAS54F,GACT9C,EAAM2sF,EAAY3sF,GAAK,GACvB07F,EAAS9nF,GACLge,EAAI22E,EAAYvoG,IACb4T,EAAE0jB,YAID1F,EAAI9uB,EAAIslG,IAAWtlG,EAAGslG,GAAQpoG,KAAM8C,EAAGslG,GAAQpoG,IAAO,GAC1D4T,EAAIi0F,EAAQj0F,EAAG,CAAE0jB,WAAY+iE,EAAW,GAAG,OAJtCzoE,EAAI9uB,EAAIslG,IAASlM,EAAGp5F,EAAIslG,EAAQ/N,EAAW,EAAG,KACnDv3F,EAAGslG,GAAQpoG,IAAO,GAIX4oG,EAAc9lG,EAAI9C,EAAK4T,IACzBsoF,EAAGp5F,EAAI9C,EAAK4T,IAEnBm1F,EAAoB,SAA0BjmG,EAAIiQ,GACpD2oF,EAAS54F,GAKT,IAJA,IAGI9C,EAHAmB,EAAOymG,EAAS70F,EAAIwmF,EAAUxmF,IAC9BnT,EAAI,EACJ0K,EAAInJ,EAAKrB,OAENwK,EAAI1K,GAAGw6F,EAAgBt3F,EAAI9C,EAAMmB,EAAKvB,KAAMmT,EAAE/S,IACrD,OAAO8C,GAKLkmG,EAAwB,SAA8BhpG,GACxD,IAAIoT,EAAIynF,EAAO16F,KAAKE,KAAML,EAAM2sF,EAAY3sF,GAAK,IACjD,QAAIK,OAAS8gG,GAAevvE,EAAI22E,EAAYvoG,KAAS4xB,EAAI42E,EAAWxoG,QAC7DoT,IAAMwe,EAAIvxB,KAAML,KAAS4xB,EAAI22E,EAAYvoG,IAAQ4xB,EAAIvxB,KAAM+nG,IAAW/nG,KAAK+nG,GAAQpoG,KAAOoT,IAE/FmxF,EAA4B,SAAkCzhG,EAAI9C,GAGpE,GAFA8C,EAAKy2F,EAAUz2F,GACf9C,EAAM2sF,EAAY3sF,GAAK,GACnB8C,IAAOq+F,IAAevvE,EAAI22E,EAAYvoG,IAAS4xB,EAAI42E,EAAWxoG,GAAlE,CACA,IAAI4T,EAAIgtF,EAAK99F,EAAI9C,GAEjB,OADI4T,IAAKge,EAAI22E,EAAYvoG,IAAU4xB,EAAI9uB,EAAIslG,IAAWtlG,EAAGslG,GAAQpoG,KAAO4T,EAAE0jB,YAAa,GAChF1jB,IAELq1F,EAAuB,SAA6BnmG,GAKtD,IAJA,IAGI9C,EAHAohG,EAAQP,EAAKtH,EAAUz2F,IACvBkc,EAAS,GACTpf,EAAI,EAEDwhG,EAAMthG,OAASF,GACfgyB,EAAI22E,EAAYvoG,EAAMohG,EAAMxhG,OAASI,GAAOooG,GAAUpoG,GAAO+9F,GAAM/+E,EAAO7L,KAAKnT,GACpF,OAAOgf,GAEPkqF,GAAyB,SAA+BpmG,GAM1D,IALA,IAII9C,EAJAmpG,EAAQrmG,IAAOq+F,EACfC,EAAQP,EAAKsI,EAAQX,EAAYjP,EAAUz2F,IAC3Ckc,EAAS,GACTpf,EAAI,EAEDwhG,EAAMthG,OAASF,IAChBgyB,EAAI22E,EAAYvoG,EAAMohG,EAAMxhG,OAAUupG,IAAQv3E,EAAIuvE,EAAanhG,IAAcgf,EAAO7L,KAAKo1F,EAAWvoG,IACxG,OAAOgf,GAINymF,IACH9B,EAAU,WACR,GAAItjG,gBAAgBsjG,EAAS,MAAM9/F,UAAU,gCAC7C,IAAIkS,EAAM8rF,EAAIhiG,UAAUC,OAAS,EAAID,UAAU,QAAKmmB,GAChDojF,EAAO,SAAUxlG,GACfvD,OAAS8gG,GAAaiI,EAAKjpG,KAAKqoG,EAAW5kG,GAC3CguB,EAAIvxB,KAAM+nG,IAAWx2E,EAAIvxB,KAAK+nG,GAASryF,KAAM1V,KAAK+nG,GAAQryF,IAAO,GACrE6yF,EAAcvoG,KAAM0V,EAAKskF,EAAW,EAAGz2F,KAGzC,OADIi8F,GAAe6I,GAAQE,EAAczH,EAAaprF,EAAK,CAAEgiB,cAAc,EAAM3tB,IAAKg/F,IAC/EN,EAAK/yF,IAEd4mF,EAASgH,EAAiB,UAAG,YAAY,WACvC,OAAOtjG,KAAKgkG,MAGd0D,EAAMr+F,EAAI66F,EACV0D,EAAIv+F,EAAI0wF,EACR,WAA8B0N,EAAQp+F,EAAIu/F,EAC1C,WAA6BD,EAC7BhB,EAAMt+F,EAAIw/F,GAENrJ,IAAgB,EAAQ,QAC1BlD,EAASwE,EAAa,uBAAwB6H,GAAuB,GAGvEtF,EAAOh6F,EAAI,SAAUnG,GACnB,OAAOulG,EAAKpB,EAAInkG,MAIpBu3F,EAAQA,EAAQxkF,EAAIwkF,EAAQroF,EAAIqoF,EAAQnkF,GAAK8uF,EAAY,CAAE1iG,OAAQ4gG,IAEnE,IAAK,IAAI0F,GAAa,iHAGpBvvF,MAAM,KAAMhQ,GAAI,EAAGu/F,GAAWvpG,OAASgK,IAAG49F,EAAI2B,GAAWv/F,OAE3D,IAAK,IAAIw/F,GAAmBrI,EAAMyG,EAAI3F,OAAQv3F,GAAI,EAAG8+F,GAAiBxpG,OAAS0K,IAAIm9F,EAAU2B,GAAiB9+F,OAE9GswF,EAAQA,EAAQ3tF,EAAI2tF,EAAQnkF,GAAK8uF,EAAY,SAAU,CAErD,IAAO,SAAUzlG,GACf,OAAO4xB,EAAI02E,EAAgBtoG,GAAO,IAC9BsoG,EAAetoG,GACfsoG,EAAetoG,GAAO2jG,EAAQ3jG,IAGpCupG,OAAQ,SAAgBnyE,GACtB,IAAKirC,EAASjrC,GAAM,MAAMvzB,UAAUuzB,EAAM,qBAC1C,IAAK,IAAIp3B,KAAOsoG,EAAgB,GAAIA,EAAetoG,KAASo3B,EAAK,OAAOp3B,GAE1EwpG,UAAW,WAAcd,GAAS,GAClCe,UAAW,WAAcf,GAAS,KAGpC5N,EAAQA,EAAQ3tF,EAAI2tF,EAAQnkF,GAAK8uF,EAAY,SAAU,CAErDrzE,OA/FY,SAAgBtvB,EAAIiQ,GAChC,YAAaiT,IAANjT,EAAkB80F,EAAQ/kG,GAAMimG,EAAkBlB,EAAQ/kG,GAAKiQ,IAgGtE4kB,eAAgByiE,EAEhB1iE,iBAAkBqxE,EAElB1xE,yBAA0BktE,EAE1BxD,oBAAqBkI,EAErB/xE,sBAAuBgyE,KAKzB,IAAIQ,GAAsBjC,GAAO,WAAcO,EAAMt+F,EAAE,MAEvDoxF,EAAQA,EAAQ3tF,EAAI2tF,EAAQnkF,EAAI+yF,GAAqB,SAAU,CAC7DxyE,sBAAuB,SAA+Bp0B,GACpD,OAAOklG,EAAMt+F,EAAE+4D,EAAS3/D,OAK5BolG,GAASpN,EAAQA,EAAQ3tF,EAAI2tF,EAAQnkF,IAAM8uF,GAAcgC,GAAO,WAC9D,IAAIt6F,EAAIw2F,IAIR,MAA0B,UAAnBwE,EAAW,CAACh7F,KAA2C,MAAxBg7F,EAAW,CAAEv+F,EAAGuD,KAAyC,MAAzBg7F,EAAW1oG,OAAO0N,QACrF,OAAQ,CACX4R,UAAW,SAAmBjc,GAI5B,IAHA,IAEI6mG,EAAUC,EAFVnnF,EAAO,CAAC3f,GACRlD,EAAI,EAEDC,UAAUC,OAASF,GAAG6iB,EAAKtP,KAAKtT,UAAUD,MAEjD,GADAgqG,EAAYD,EAAWlnF,EAAK,IACvB62E,EAASqQ,SAAoB3jF,IAAPljB,KAAoBu/D,EAASv/D,GAMxD,OALKG,EAAQ0mG,KAAWA,EAAW,SAAU3pG,EAAK4D,GAEhD,GADwB,mBAAbgmG,IAAyBhmG,EAAQgmG,EAAUzpG,KAAKE,KAAML,EAAK4D,KACjEy+D,EAASz+D,GAAQ,OAAOA,IAE/B6e,EAAK,GAAKknF,EACHxB,EAAW/nG,MAAM8nG,EAAOzlF,MAKnCkhF,EAAiB,UAAE0E,IAAiB,EAAQ,MAAR,CAAmB1E,EAAiB,UAAG0E,EAAc1E,EAAiB,UAAEnwF,SAE5G+oF,EAAeoH,EAAS,UAExBpH,EAAe/wF,KAAM,QAAQ,GAE7B+wF,EAAejiE,EAAOxb,KAAM,QAAQ,uCCnPpC,IAAIg8E,EAAU,EAAQ,OAClBZ,EAAO,EAAQ,OACf5/D,EAAS,EAAQ,OACjByqE,EAAqB,EAAQ,OAC7BI,EAAiB,EAAQ,OAE7BrK,EAAQA,EAAQ/nF,EAAI+nF,EAAQjoF,EAAG,UAAW,CAAE,QAAW,SAAUg3F,GAC/D,IAAI32F,EAAI6xF,EAAmB1kG,KAAM65F,EAAKjuE,SAAWqO,EAAOrO,SACpDhoB,EAAiC,mBAAb4lG,EACxB,OAAOxpG,KAAKksB,KACVtoB,EAAa,SAAU8K,GACrB,OAAOo2F,EAAejyF,EAAG22F,KAAat9E,MAAK,WAAc,OAAOxd,MAC9D86F,EACJ5lG,EAAa,SAAU0F,GACrB,OAAOw7F,EAAejyF,EAAG22F,KAAat9E,MAAK,WAAc,MAAM5iB,MAC7DkgG,0CCfR,IAAI/O,EAAU,EAAQ,OAClBwG,EAAuB,EAAQ,OAC/B4D,EAAU,EAAQ,OAEtBpK,EAAQA,EAAQ3tF,EAAG,UAAW,CAAE,IAAO,SAAU28F,GAC/C,IAAIvI,EAAoBD,EAAqB53F,EAAErJ,MAC3C2e,EAASkmF,EAAQ4E,GAErB,OADC9qF,EAAOrV,EAAI43F,EAAkBp1E,OAASo1E,EAAkBr1E,SAASlN,EAAOpQ,GAClE2yF,EAAkBlC,iCCV3B,EAAQ,MAAR,CAAyB,wCCAzB,EAAQ,MAAR,CAAyB,qCCAzB,EAAQ,MAYR,IAXA,IAAI/kE,EAAS,EAAQ,OACjB6b,EAAO,EAAQ,OACfkmD,EAAY,EAAQ,OACpB0N,EAAgB,EAAQ,MAAR,CAAkB,eAElCC,EAAe,wbAIUlwF,MAAM,KAE1Bla,EAAI,EAAGA,EAAIoqG,EAAalqG,OAAQF,IAAK,CAC5C,IAAI68F,EAAOuN,EAAapqG,GACpBqqG,EAAa3vE,EAAOmiE,GACpB9M,EAAQsa,GAAcA,EAAWhqG,UACjC0vF,IAAUA,EAAMoa,IAAgB5zD,EAAKw5C,EAAOoa,EAAetN,GAC/DJ,EAAUI,GAAQJ,EAAU35F,8BCjB9B,IAAIm3F,EAAM,EAAQ,OAClBvyF,EAAOC,QAAU,SAAUzE,EAAIokB,GAC7B,GAAiB,iBAANpkB,GAA6B,UAAX+2F,EAAI/2F,GAAiB,MAAMe,UAAUqjB,GAClE,OAAQpkB,0BCFV,IAAIw2F,EAAW,EAAQ,OACnB7tF,EAAQD,KAAKC,MACjBnE,EAAOC,QAAU,SAAmBzE,GAClC,OAAQw2F,EAASx2F,IAAO6tF,SAAS7tF,IAAO2I,EAAM3I,KAAQA,sBCHxD,IAAIonG,EAAS1+F,KAAK2+F,MAClB7iG,EAAOC,SAAY2iG,GAEdA,EAAO,IAAM,oBAAsBA,EAAO,IAAM,qBAE7B,OAAnBA,GAAQ,OACT,SAAen7F,GACjB,OAAmB,IAAXA,GAAKA,GAAUA,EAAIA,GAAK,MAAQA,EAAI,KAAOA,EAAIA,EAAIA,EAAI,EAAIvD,KAAK2D,IAAIJ,GAAK,GAC/Em7F,yBCRJ,IAAI1+E,EAAO,EAAQ,OACf1f,EAAMN,KAAKM,IACXs+F,EAAUt+F,EAAI,GAAI,IAClBu+F,EAAYv+F,EAAI,GAAI,IACpBw+F,EAAQx+F,EAAI,EAAG,MAAQ,EAAIu+F,GAC3BE,EAAQz+F,EAAI,GAAI,KAMpBxE,EAAOC,QAAUiE,KAAKg/F,QAAU,SAAgBz7F,GAC9C,IAEInF,EAAGoV,EAFHyrF,EAAOj/F,KAAKuC,IAAIgB,GAChB27F,EAAQl/E,EAAKzc,GAEjB,OAAI07F,EAAOF,EAAcG,GAAwBD,EAAOF,EAAQF,EAPrD,EAAID,EAAU,EAAIA,GAOgDG,EAAQF,GAErFrrF,GADApV,GAAK,EAAIygG,EAAYD,GAAWK,IAClB7gG,EAAI6gG,IAELH,GAAStrF,GAAUA,EAAe0rF,GAAQ/5E,EAAAA,GAChD+5E,EAAQ1rF,sBCpBjB1X,EAAOC,QAAUiE,KAAKm/F,OAAS,SAAe57F,GAC5C,OAAQA,GAAKA,IAAM,MAAQA,EAAI,KAAOA,EAAIA,EAAIA,EAAI,EAAIvD,KAAKgN,IAAI,EAAIzJ,uBCDrEzH,EAAOC,QAAUiE,KAAKggB,MAAQ,SAAczc,GAE1C,OAAmB,IAAXA,GAAKA,IAAWA,GAAKA,EAAIA,EAAIA,EAAI,GAAK,EAAI,0BCFpD,IAAIkyF,EAAQ,EAAQ,OAChBC,EAAa,gBAAmC,SAAU,aAE9D35F,EAAQmC,EAAIjK,OAAOshG,qBAAuB,SAA6B9tF,GACrE,OAAOguF,EAAMhuF,EAAGiuF,2BCLlB,IAAI0J,EAAc,mBACdC,EAAQ,cAEZvjG,EAAOC,QAAU,EAAIqjG,EAAY,EAAQ,OAAkB,SAAWj6E,EAAAA,EAAW,SAAoB5J,GACnG,IAAIve,EAASqiG,EAAMn2F,OAAOqS,GAAM,GAC5B/H,EAAS4rF,EAAYpiG,GACzB,OAAkB,IAAXwW,GAAoC,KAApBxW,EAAOkC,OAAO,IAAa,EAAIsU,GACpD4rF,yBCPJ,IAAIE,EAAY,iBACZD,EAAQ,cACR51B,EAAK,EAAQ,OACbhgE,EAAM,cAEV3N,EAAOC,QAAmC,IAAzBujG,EAAU71B,EAAK,OAA0C,KAA3B61B,EAAU71B,EAAK,QAAiB,SAAkBluD,EAAKgkF,GACpG,IAAIviG,EAASqiG,EAAMn2F,OAAOqS,GAAM,GAChC,OAAO+jF,EAAUtiG,EAASuiG,IAAU,IAAO91F,EAAIxR,KAAK+E,GAAU,GAAK,MACjEsiG,yBCPJ,IAAIhQ,EAAU,EAAQ,OAClB6P,EAAQ,EAAQ,OAChBhjE,EAAOn8B,KAAKm8B,KACZqjE,EAASx/F,KAAKy/F,MAElBnQ,EAAQA,EAAQ3tF,EAAI2tF,EAAQnkF,IAAMq0F,GAEW,KAAxCx/F,KAAKC,MAAMu/F,EAAO7c,OAAO+c,aAEzBF,EAAOr6E,EAAAA,IAAaA,EAAAA,GACtB,OAAQ,CACTs6E,MAAO,SAAel8F,GACpB,OAAQA,GAAKA,GAAK,EAAIo8F,IAAMp8F,EAAI,kBAC5BvD,KAAKgN,IAAIzJ,GAAKvD,KAAK4/F,IACnBT,EAAM57F,EAAI,EAAI44B,EAAK54B,EAAI,GAAK44B,EAAK54B,EAAI,8BCd7C,IAAI+rF,EAAU,EAAQ,OAClBuQ,EAAS7/F,KAAK8/F,MAOlBxQ,EAAQA,EAAQ3tF,EAAI2tF,EAAQnkF,IAAM00F,GAAU,EAAIA,EAAO,GAAK,GAAI,OAAQ,CAAEC,MAL1E,SAASA,EAAMv8F,GACb,OAAQ4hF,SAAS5hF,GAAKA,IAAW,GAALA,EAAaA,EAAI,GAAKu8F,GAAOv8F,GAAKvD,KAAKgN,IAAIzJ,EAAIvD,KAAKm8B,KAAK54B,EAAIA,EAAI,IAAxDA,4BCJvC,IAAI+rF,EAAU,EAAQ,OAClByQ,EAAS//F,KAAKggG,MAGlB1Q,EAAQA,EAAQ3tF,EAAI2tF,EAAQnkF,IAAM40F,GAAU,EAAIA,GAAQ,GAAK,GAAI,OAAQ,CACvEC,MAAO,SAAez8F,GACpB,OAAmB,IAAXA,GAAKA,GAAUA,EAAIvD,KAAKgN,KAAK,EAAIzJ,IAAM,EAAIA,IAAM,4BCN7D,IAAI+rF,EAAU,EAAQ,OAClBtvE,EAAO,EAAQ,OAEnBsvE,EAAQA,EAAQ3tF,EAAG,OAAQ,CACzBs+F,KAAM,SAAc18F,GAClB,OAAOyc,EAAKzc,GAAKA,GAAKvD,KAAKM,IAAIN,KAAKuC,IAAIgB,GAAI,EAAI,6BCLpD,IAAI+rF,EAAU,EAAQ,OAEtBA,EAAQA,EAAQ3tF,EAAG,OAAQ,CACzB6+D,MAAO,SAAej9D,GACpB,OAAQA,KAAO,GAAK,GAAKvD,KAAKC,MAAMD,KAAKgN,IAAIzJ,EAAI,IAAOvD,KAAKkgG,OAAS,4BCJ1E,IAAI5Q,EAAU,EAAQ,OAClB3rF,EAAM3D,KAAK2D,IAEf2rF,EAAQA,EAAQ3tF,EAAG,OAAQ,CACzBw+F,KAAM,SAAc58F,GAClB,OAAQI,EAAIJ,GAAKA,GAAKI,GAAKJ,IAAM,4BCLrC,IAAI+rF,EAAU,EAAQ,OAClBoP,EAAS,EAAQ,OAErBpP,EAAQA,EAAQ3tF,EAAI2tF,EAAQnkF,GAAKuzF,GAAU1+F,KAAK2+F,OAAQ,OAAQ,CAAEA,MAAOD,2BCHzE,IAAIpP,EAAU,EAAQ,OAEtBA,EAAQA,EAAQ3tF,EAAG,OAAQ,CAAEq9F,OAAQ,EAAQ,+BCF7C,IAAI1P,EAAU,EAAQ,OAClB/sF,EAAMvC,KAAKuC,IAEf+sF,EAAQA,EAAQ3tF,EAAG,OAAQ,CACzBy+F,MAAO,SAAeC,EAAQC,GAM5B,IALA,IAIIloF,EAAK2zD,EAJLx7D,EAAM,EACNnc,EAAI,EACJogG,EAAOngG,UAAUC,OACjBisG,EAAO,EAEJnsG,EAAIogG,GAEL+L,GADJnoF,EAAM7V,EAAIlO,UAAUD,QAGlBmc,EAAMA,GADNw7D,EAAMw0B,EAAOnoF,GACK2zD,EAAM,EACxBw0B,EAAOnoF,GAGP7H,GAFS6H,EAAM,GACf2zD,EAAM3zD,EAAMmoF,GACCx0B,EACD3zD,EAEhB,OAAOmoF,IAASp7E,EAAAA,EAAWA,EAAAA,EAAWo7E,EAAOvgG,KAAKm8B,KAAK5rB,6BCrB3D,IAAI++E,EAAU,EAAQ,OAClBkR,EAAQxgG,KAAKymE,KAGjB6oB,EAAQA,EAAQ3tF,EAAI2tF,EAAQnkF,EAAI,EAAQ,MAAR,EAAoB,WAClD,OAAgC,GAAzBq1F,EAAM,WAAY,IAA4B,GAAhBA,EAAMlsG,UACzC,OAAQ,CACVmyE,KAAM,SAAcljE,EAAGoD,GACrB,IAAI85F,EAAS,MACTC,GAAMn9F,EACNo9F,GAAMh6F,EACNi6F,EAAKH,EAASC,EACdG,EAAKJ,EAASE,EAClB,OAAO,EAAIC,EAAKC,IAAOJ,EAASC,IAAO,IAAMG,EAAKD,GAAMH,EAASE,IAAO,KAAO,KAAO,6BCb1F,IAAIrR,EAAU,EAAQ,OAEtBA,EAAQA,EAAQ3tF,EAAG,OAAQ,CACzBm/F,MAAO,SAAev9F,GACpB,OAAOvD,KAAKgN,IAAIzJ,GAAKvD,KAAK+gG,iCCJ9B,IAAIzR,EAAU,EAAQ,OAEtBA,EAAQA,EAAQ3tF,EAAG,OAAQ,CAAEw9F,MAAO,EAAQ,gCCF5C,IAAI7P,EAAU,EAAQ,OAEtBA,EAAQA,EAAQ3tF,EAAG,OAAQ,CACzBq/F,KAAM,SAAcz9F,GAClB,OAAOvD,KAAKgN,IAAIzJ,GAAKvD,KAAK4/F,8BCJ9B,IAAItQ,EAAU,EAAQ,OAEtBA,EAAQA,EAAQ3tF,EAAG,OAAQ,CAAEqe,KAAM,EAAQ,gCCF3C,IAAIsvE,EAAU,EAAQ,OAClBqP,EAAQ,EAAQ,OAChBh7F,EAAM3D,KAAK2D,IAGf2rF,EAAQA,EAAQ3tF,EAAI2tF,EAAQnkF,EAAI,EAAQ,MAAR,EAAoB,WAClD,OAA8B,QAAtBnL,KAAKihG,MAAM,UACjB,OAAQ,CACVA,KAAM,SAAc19F,GAClB,OAAOvD,KAAKuC,IAAIgB,GAAKA,GAAK,GACrBo7F,EAAMp7F,GAAKo7F,GAAOp7F,IAAM,GACxBI,EAAIJ,EAAI,GAAKI,GAAKJ,EAAI,KAAOvD,KAAK4H,EAAI,6BCX/C,IAAI0nF,EAAU,EAAQ,OAClBqP,EAAQ,EAAQ,OAChBh7F,EAAM3D,KAAK2D,IAEf2rF,EAAQA,EAAQ3tF,EAAG,OAAQ,CACzBu/F,KAAM,SAAc39F,GAClB,IAAInF,EAAIugG,EAAMp7F,GAAKA,GACfpE,EAAIw/F,GAAOp7F,GACf,OAAOnF,GAAK+mB,EAAAA,EAAW,EAAIhmB,GAAKgmB,EAAAA,GAAY,GAAK/mB,EAAIe,IAAMwE,EAAIJ,GAAKI,GAAKJ,4BCR7E,IAAI+rF,EAAU,EAAQ,OAEtBA,EAAQA,EAAQ3tF,EAAG,OAAQ,CACzBw/F,MAAO,SAAe7pG,GACpB,OAAQA,EAAK,EAAI0I,KAAKC,MAAQD,KAAK0I,MAAMpR,0CCJ7C,IAAIw3B,EAAS,EAAQ,MACjB1I,EAAM,EAAQ,OACdioE,EAAM,EAAQ,OACd+S,EAAoB,EAAQ,OAC5BjgB,EAAc,EAAQ,OACtB0U,EAAQ,EAAQ,OAChBR,EAAO,WACPD,EAAO,WACP1E,EAAK,WACL2O,EAAQ,cACRgC,EAAS,SACTC,EAAUxyE,EAAa,OACvBja,EAAOysF,EACPnd,EAAQmd,EAAQ7sG,UAEhB8sG,EAAalT,EAAI,EAAQ,MAAR,CAA4BlK,KAAWkd,EACxDG,EAAO,SAAUt4F,OAAOzU,UAGxBsrE,EAAW,SAAU0hC,GACvB,IAAInqG,EAAK6pF,EAAYsgB,GAAU,GAC/B,GAAiB,iBAANnqG,GAAkBA,EAAGhD,OAAS,EAAG,CAE1C,IACIotG,EAAOnC,EAAOoC,EADd7jF,GADJxmB,EAAKkqG,EAAOlqG,EAAGotB,OAAS26E,EAAM/nG,EAAI,IACnByH,WAAW,GAE1B,GAAc,KAAV+e,GAA0B,KAAVA,GAElB,GAAc,MADd4jF,EAAQpqG,EAAGyH,WAAW,KACQ,MAAV2iG,EAAe,OAAO/B,SACrC,GAAc,KAAV7hF,EAAc,CACvB,OAAQxmB,EAAGyH,WAAW,IACpB,KAAK,GAAI,KAAK,GAAIwgG,EAAQ,EAAGoC,EAAU,GAAI,MAC3C,KAAK,GAAI,KAAK,IAAKpC,EAAQ,EAAGoC,EAAU,GAAI,MAC5C,QAAS,OAAQrqG,EAEnB,IAAK,IAAoDukE,EAAhD+lC,EAAStqG,EAAGO,MAAM,GAAIzD,EAAI,EAAG0K,EAAI8iG,EAAOttG,OAAcF,EAAI0K,EAAG1K,IAIpE,IAHAynE,EAAO+lC,EAAO7iG,WAAW3K,IAGd,IAAMynE,EAAO8lC,EAAS,OAAOhC,IACxC,OAAOr6F,SAASs8F,EAAQrC,IAE5B,OAAQjoG,GAGZ,IAAKgqG,EAAQ,UAAYA,EAAQ,QAAUA,EAAQ,QAAS,CAC1DA,EAAU,SAAgBlpG,GACxB,IAAId,EAAKjD,UAAUC,OAAS,EAAI,EAAI8D,EAChC22F,EAAOl6F,KACX,OAAOk6F,aAAgBuS,IAEjBC,EAAa1L,GAAM,WAAc1R,EAAMn8E,QAAQrT,KAAKo6F,MAAYV,EAAIU,IAASsS,GAC7ED,EAAkB,IAAIvsF,EAAKkrD,EAASzoE,IAAMy3F,EAAMuS,GAAWvhC,EAASzoE,IAE5E,IAAK,IAMgB9C,EANZmB,EAAO,EAAQ,OAAoB0/F,EAAKxgF,GAAQ,6KAMvDvG,MAAM,KAAMhQ,EAAI,EAAQ3I,EAAKrB,OAASgK,EAAGA,IACrC8nB,EAAIvR,EAAMrgB,EAAMmB,EAAK2I,MAAQ8nB,EAAIk7E,EAAS9sG,IAC5Ck8F,EAAG4Q,EAAS9sG,EAAK4gG,EAAKvgF,EAAMrgB,IAGhC8sG,EAAQ7sG,UAAY0vF,EACpBA,EAAMrsF,YAAcwpG,EACpB,EAAQ,MAAR,CAAuBxyE,EAAQuyE,EAAQC,2BClEzC,IAAIhS,EAAU,EAAQ,OAEtBA,EAAQA,EAAQ3tF,EAAG,SAAU,CAAEi9F,QAAS5+F,KAAKM,IAAI,GAAI,6BCFrD,IAAIgvF,EAAU,EAAQ,OAClBuS,EAAY,iBAEhBvS,EAAQA,EAAQ3tF,EAAG,SAAU,CAC3BwjF,SAAU,SAAkB7tF,GAC1B,MAAoB,iBAANA,GAAkBuqG,EAAUvqG,6BCL9C,IAAIg4F,EAAU,EAAQ,OAEtBA,EAAQA,EAAQ3tF,EAAG,SAAU,CAAEuoF,UAAW,EAAQ,gCCFlD,IAAIoF,EAAU,EAAQ,OAEtBA,EAAQA,EAAQ3tF,EAAG,SAAU,CAC3ByO,MAAO,SAAetT,GAEpB,OAAOA,GAAUA,4BCLrB,IAAIwyF,EAAU,EAAQ,OAClBpF,EAAY,EAAQ,OACpB3nF,EAAMvC,KAAKuC,IAEf+sF,EAAQA,EAAQ3tF,EAAG,SAAU,CAC3BmgG,cAAe,SAAuBhlG,GACpC,OAAOotF,EAAUptF,IAAWyF,EAAIzF,IAAW,2CCN/C,IAAIwyF,EAAU,EAAQ,OAEtBA,EAAQA,EAAQ3tF,EAAG,SAAU,CAAEogG,iBAAkB,0CCFjD,IAAIzS,EAAU,EAAQ,OAEtBA,EAAQA,EAAQ3tF,EAAG,SAAU,CAAEqgG,kBAAmB,0CCHlD,IAAI1S,EAAU,EAAQ,OAClB8P,EAAc,EAAQ,OAE1B9P,EAAQA,EAAQ3tF,EAAI2tF,EAAQnkF,GAAKw3E,OAAOsf,YAAc7C,GAAc,SAAU,CAAE6C,WAAY7C,2BCH5F,IAAI9P,EAAU,EAAQ,OAClBgQ,EAAY,EAAQ,OAExBhQ,EAAQA,EAAQ3tF,EAAI2tF,EAAQnkF,GAAKw3E,OAAOr9E,UAAYg6F,GAAY,SAAU,CAAEh6F,SAAUg6F,wCCFtF,IAAIhQ,EAAU,EAAQ,OAClBmH,EAAY,EAAQ,OACpByL,EAAe,EAAQ,OACvBC,EAAS,EAAQ,OACjBC,EAAW,GAAIC,QACfpiG,EAAQD,KAAKC,MACbqK,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GACvBg4F,EAAQ,wCACR7/F,EAAO,IAEP8/F,EAAW,SAAU5qG,EAAG0G,GAG1B,IAFA,IAAIjK,GAAK,EACLwnF,EAAKv9E,IACAjK,EAAI,GACXwnF,GAAMjkF,EAAI2S,EAAKlW,GACfkW,EAAKlW,GAAKwnF,EAAK,IACfA,EAAK37E,EAAM27E,EAAK,MAGhB4mB,EAAS,SAAU7qG,GAGrB,IAFA,IAAIvD,EAAI,EACJiK,EAAI,IACCjK,GAAK,GACZiK,GAAKiM,EAAKlW,GACVkW,EAAKlW,GAAK6L,EAAM5B,EAAI1G,GACpB0G,EAAKA,EAAI1G,EAAK,KAGd8qG,EAAc,WAGhB,IAFA,IAAIruG,EAAI,EACJyN,EAAI,KACCzN,GAAK,GACZ,GAAU,KAANyN,GAAkB,IAANzN,GAAuB,IAAZkW,EAAKlW,GAAU,CACxC,IAAIqN,EAAIyH,OAAOoB,EAAKlW,IACpByN,EAAU,KAANA,EAAWJ,EAAII,EAAIsgG,EAAOxtG,KAAK8N,EAAM,EAAIhB,EAAEnN,QAAUmN,EAE3D,OAAOI,GAEPvB,EAAM,SAAUiD,EAAG5L,EAAGwvB,GACxB,OAAa,IAANxvB,EAAUwvB,EAAMxvB,EAAI,IAAM,EAAI2I,EAAIiD,EAAG5L,EAAI,EAAGwvB,EAAM5jB,GAAKjD,EAAIiD,EAAIA,EAAG5L,EAAI,EAAGwvB,IAelFmoE,EAAQA,EAAQ/nF,EAAI+nF,EAAQnkF,KAAOi3F,IACV,UAAvB,KAAQC,QAAQ,IACG,MAAnB,GAAIA,QAAQ,IACS,SAArB,MAAMA,QAAQ,IACuB,yBAArC,mBAAsBA,QAAQ,MAC1B,EAAQ,MAAR,EAAoB,WAExBD,EAASztG,KAAK,QACX,SAAU,CACb0tG,QAAS,SAAiBK,GACxB,IAIIvkG,EAAGmF,EAAGhF,EAAGU,EAJTuE,EAAI2+F,EAAartG,KAAMytG,GACvBpkG,EAAIu4F,EAAUiM,GACd7gG,EAAI,GACJ5C,EAAIwD,EAER,GAAIvE,EAAI,GAAKA,EAAI,GAAI,MAAMiiF,WAAWmiB,GAEtC,GAAI/+F,GAAKA,EAAG,MAAO,MACnB,GAAIA,IAAM,MAAQA,GAAK,KAAM,OAAO2F,OAAO3F,GAK3C,GAJIA,EAAI,IACN1B,EAAI,IACJ0B,GAAKA,GAEHA,EAAI,MAKN,GAJApF,EArCI,SAAUoF,GAGlB,IAFA,IAAI5L,EAAI,EACJs1E,EAAK1pE,EACF0pE,GAAM,MACXt1E,GAAK,GACLs1E,GAAM,KAER,KAAOA,GAAM,GACXt1E,GAAK,EACLs1E,GAAM,EACN,OAAOt1E,EA2BDqV,CAAIzJ,EAAIjD,EAAI,EAAG,GAAI,IAAM,GAC7BgD,EAAInF,EAAI,EAAIoF,EAAIjD,EAAI,GAAInC,EAAG,GAAKoF,EAAIjD,EAAI,EAAGnC,EAAG,GAC9CmF,GAAK,kBACLnF,EAAI,GAAKA,GACD,EAAG,CAGT,IAFAokG,EAAS,EAAGj/F,GACZhF,EAAIJ,EACGI,GAAK,GACVikG,EAAS,IAAK,GACdjkG,GAAK,EAIP,IAFAikG,EAASjiG,EAAI,GAAIhC,EAAG,GAAI,GACxBA,EAAIH,EAAI,EACDG,GAAK,IACVkkG,EAAO,GAAK,IACZlkG,GAAK,GAEPkkG,EAAO,GAAKlkG,GACZikG,EAAS,EAAG,GACZC,EAAO,GACPvjG,EAAIwjG,SAEJF,EAAS,EAAGj/F,GACZi/F,EAAS,IAAMpkG,EAAG,GAClBc,EAAIwjG,IAAgBN,EAAOxtG,KAAK8N,EAAMvE,GAQxC,OAHAe,EAFEf,EAAI,EAEF2D,IADJ7C,EAAIC,EAAE3K,SACQ4J,EAAI,KAAOikG,EAAOxtG,KAAK8N,EAAMvE,EAAIc,GAAKC,EAAIA,EAAEpH,MAAM,EAAGmH,EAAId,GAAK,IAAMe,EAAEpH,MAAMmH,EAAId,IAE1F2D,EAAI5C,wCC7Gd,IAAIqwF,EAAU,EAAQ,OAClB2M,EAAS,EAAQ,OACjBiG,EAAe,EAAQ,OACvBS,EAAe,GAAIC,YAEvBtT,EAAQA,EAAQ/nF,EAAI+nF,EAAQnkF,GAAK8wF,GAAO,WAEtC,MAA2C,MAApC0G,EAAahuG,KAAK,OAAG6lB,QACvByhF,GAAO,WAEZ0G,EAAahuG,KAAK,QACf,SAAU,CACbiuG,YAAa,SAAqBC,GAChC,IAAI9T,EAAOmT,EAAartG,KAAM,6CAC9B,YAAqB2lB,IAAdqoF,EAA0BF,EAAahuG,KAAKo6F,GAAQ4T,EAAahuG,KAAKo6F,EAAM8T,0CCbvF,IAAI5hF,EAAI,EAAQ,OACZ6hF,EAAU,EAAQ,OAClBC,EAAa,GAEjBA,EAAWC,KAAO,CAChBjrG,KAAM,OACN+qG,QAAS,CAAC,cAAe,eAAgB,gBAAiB,WAAY,eACtEG,UAAWhiF,EAAEiiF,QAAQ,CACnBJ,EAAQK,YAAYF,UACpBH,EAAQM,aAAaH,UACrBH,EAAQO,cAAcJ,UACtBH,EAAQQ,SAASL,UACjBH,EAAQS,YAAYN,YAErBjgF,QAGH+/E,EAAWS,OAAS,CAClBzrG,KAAM,SACN+qG,QAAS,CAAC,gBAAiB,cAAe,iBAAkB,aAAc,cAC1EG,UAAWhiF,EAAEiiF,QAAQ,CACjBJ,EAAQW,cAAcR,UACtBH,EAAQY,YAAYT,UACpBH,EAAQa,eAAeV,UACvBH,EAAQc,WAAWX,UACnBH,EAAQe,WAAWZ,YAEtBjgF,QAGH+/E,EAAWe,aAAe,CACxB/rG,KAAM,gBACN+qG,QAAS,CAAC,iBAAkB,kBAAmB,aAC/CG,UAAWhiF,EAAEiiF,QAAQ,CACnBJ,EAAQiB,eAAed,UACvBH,EAAQkB,gBAAgBf,UACxBH,EAAQmB,UAAUhB,YAEnBjgF,QAGH+/E,EAAWmB,aAAe,CACxBnsG,KAAM,gBACN+qG,QAAS,CAAC,gBACVG,UAAWhiF,EAAEiiF,QAAQ,CACnBJ,EAAQoB,aAAajB,YAEtBjgF,QAGH+/E,EAAWoB,UAAY,CACrBpsG,KAAM,YACN+qG,QAAS,CAAC,aACVG,UAAWhiF,EAAEiiF,QAAQ,CACnBJ,EAAQqB,UAAUlB,YAEnBjgF,QAGH+/E,EAAWqB,OAAS,CAClBrsG,KAAM,SACN+qG,QAAS,CAAC,iBAAkB,iBAAkB,gBAAiB,iBAC/DG,UAAWhiF,EAAEiiF,QAAQ,CACnBJ,EAAQuB,eAAepB,UACvBH,EAAQwB,eAAerB,UACvBH,EAAQyB,cAActB,UACtBH,EAAQ0B,cAAcvB,YAEvBjgF,QAGH+/E,EAAW0B,QAAU,CACnB1sG,KAAM,UACN+qG,QAAS,CAAC,YAAa,YAAa,aAAc,aAClDG,UAAWhiF,EAAEiiF,QAAQ,CACnBJ,EAAQ4B,UAAUzB,UAClBH,EAAQ6B,UAAU1B,UAClBH,EAAQ8B,WAAW3B,UACnBH,EAAQ+B,UAAU5B,YAEnBjgF,QAGHlnB,EAAOC,QAAUgnG,kCCnFjB,IAAID,EAAU,CAEdA,YAAsB,CACpB/qG,KAAM,eACNkrG,UAAW,CAET,KACA,KACA,KACA,KACA,OAIJH,aAAuB,CACrB/qG,KAAM,gBACNkrG,UAAW,CAET,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OAIJH,cAAwB,CACtB/qG,KAAM,iBACNkrG,UAAW,CAET,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OAIJH,SAAmB,CACjB/qG,KAAM,YACNkrG,UAAW,CAET,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OAIJH,YAAsB,CACpB/qG,KAAM,eACNkrG,UAAW,CAET,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OAIJH,cAAwB,CACtB/qG,KAAM,kBACNkrG,UAAW,CAET,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OAIJH,YAAsB,CACpB/qG,KAAM,eACNkrG,UAAW,CAET,KACA,KACA,KACA,KACA,KACA,KACA,OAIJH,eAAyB,CACvB/qG,KAAM,kBACNkrG,UAAW,CAET,KACA,KACA,KACA,KACA,OAIJH,WAAqB,CACnB/qG,KAAM,cACNkrG,UAAW,CAET,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OAIJH,WAAqB,CACnB/qG,KAAM,cACNkrG,UAAW,CAET,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OAIJH,eAAyB,CACvB/qG,KAAM,kBACNkrG,UAAW,CAET,KACA,KACA,KACA,KACA,KACA,KACA,OAIJH,gBAA0B,CACxB/qG,KAAM,mBACNkrG,UAAW,CAET,KACA,KACA,KACA,KACA,KACA,OAIJH,UAAoB,CAClB/qG,KAAM,YACNkrG,UAAW,CAET,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,OAIJH,aAAuB,CACrB/qG,KAAM,gBACNkrG,UAAW,CAET,KACA,KACA,KACA,KACA,KA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,MAAMsO,UAAU9jI,KAAK8M,QAGnCszH,EAAUxgI,UAAU+kI,QAAU,WAC5B,OAAO3kI,KAAKmjI,WAAW9vH,OAAOrT,KAAK0kI,aAGrCtE,EAAUxgI,UAAUglI,MAAQ,WAC1B,OAAO19D,EAAM/tD,OAAOnZ,KAAK2kI,UAAW,OAAOrqH,eAG7CrT,EAAOC,QAAUk5H,qBChEjBn5H,EAAOC,QAAU,CACfyvH,QAAS,CACP3qG,KAAM,EACNkrG,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAINL,IAAK,CACHv6C,IAAK,EACL46C,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,2GCrwBR,IAAIhwD,EAAQhgE,EACRqhE,EAAK,EAA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AAS,mQACR,CACDl/I,KAAM,KACNk/I,QAAS,sBACR,CACDl/I,KAAM,KACNk/I,QAAS,sBACR,CACDl/I,KAAM,IACNk/I,QAAS,wHACR,CACDl/I,KAAM,IACNk/I,QAAS,gPACR,CACDl/I,KAAM,KACNk/I,QAAS,sBACR,CACDl/I,KAAM,KACNk/I,QAAS,sBACR,CACDl/I,KAAM,IACNk/I,QAAS,8kBACR,CACDl/I,KAAM,KACNk/I,QAAS,sBACR,CACDl/I,KAAM,KACNk/I,QAAS,sBACR,CACDl/I,KAAM,KACNk/I,QAAS,wBACR,CACDl/I,KAAM,KACNk/I,QAAS,sBACR,CACDl/I,KAAM,IACNk/I,QAAS,uJACR,CACDl/I,KAAM,IACNk/I,QAAS,6FACR,CACDl/I,KAAM,IACNk/I,QAAS,oPACR,CACDl/I,KAAM,IACNk/I,QAAS,oPACR,CACDl/I,KAAM,IACNk/I,QAAS,oNACR,CACDl/I,KAAM,KACNk/I,QAAS,sBACR,CACDl/I,KAAM,KACNk/I,QAAS,wBACR,CACDl/I,KAAM,IACNk/I,QAAS,idACR,CACDl/I,KAAM,IACNk/I,QAAS,uHACR,CACDl/I,KAAM,KACNk/I,QAAS,wBACR,CACDl/I,KAAM,IACNk/I,QAAS,oJACR,CACDl/I,KAAM,IACNk/I,QAAS,8EACR,CACDl/I,KAAM,IACNk/I,QAAS,oNACR,CACDl/I,KAAM,IACNk/I,QAAS,0MACR,CACDl/I,KAAM,IACNk/I,QAAS,keACR,CACDl/I,KAAM,KACNk/I,QAAS,wBACR,CACDl/I,KAAM,KACNk/I,QAAS,gDACR,CACDl/I,KAAM,KACNk/I,QAAS,wBACR,CACDl/I,KAAM,KACNk/I,QAAS,wBACR,CACDl/I,KAAM,KACNk/I,QAAS,uCACR,CACDl/I,KAAM,KACNk/I,QAAS,wBACR,CACDl/I,KAAM,IACNk/I,QAAS,mIACR,CACDl/I,KAAM,IACNk/I,QAAS,wLACR,CACDl/I,KAAM,IACNk/I,QAAS,sNACR,CACDl/I,KAAM,KACNk/I,QAAS,mCACR,CACDl/I,KAAM,IACNk/I,QAAS,4aACR,CACDl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","sources":["webpack://strava-active/./node_modules/@reach/visually-hidden/dist/reach-visually-hidden.esm.js","webpack://strava-active/./node_modules/@reach/alert/node_modules/@reach/utils/owner-document/dist/reach-utils-owner-document.esm.js","webpack://strava-active/./node_modules/@reach/alert/node_modules/@reach/utils/can-use-dom/dist/reach-utils-can-use-dom.esm.js","webpack://strava-active/./node_modules/@reach/alert/node_modules/@reach/utils/compose-refs/dist/reach-utils-compose-refs.esm.js","webpack://strava-active/./node_modules/@reach/alert/node_modules/@reach/utils/type-check/dist/reach-utils-type-check.esm.js","webpack://strava-active/./node_modules/@reach/alert/dist/reach-alert.esm.js","webpack://strava-active/./node_modules/@reach/alert/node_modules/@reach/utils/use-previous/dist/reach-utils-use-previous.esm.js","webpack://strava-active/./node_modules/@reach/dialog/node_modules/prop-types/factoryWithThrowingShims.js","webpack://strava-active/./node_modules/@reach/dialog/node_modules/prop-types/index.js","webpack://strava-active/./node_modules/@reach/dialog/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://strava-active/./node_modules/adyen-cse-js/js/adyen.encrypt.nodom.js","webpack://strava-active/./node_modules/asn1.js/lib/asn1.js","webpack://strava-active/./node_modules/asn1.js/lib/asn1/api.js","webpack://strava-active/./node_modules/asn1.js/lib/asn1/base/buffer.js","webpack://strava-active/./node_modules/asn1.js/lib/asn1/base/index.js","webpack://strava-active/./node_modules/asn1.js/lib/asn1/base/node.js","webpack://strava-active/./node_modules/asn1.js/lib/asn1/base/reporter.js","webpack://strava-active/./node_modules/asn1.js/lib/asn1/constants/der.js","webpack://strava-active/./node_modules/asn1.js/lib/asn1/constants/index.js","webpack://strava-active/./node_modules/asn1.js/lib/asn1/decoders/der.js","webpack://strava-active/./node_modules/asn1.js/lib/asn1/decoders/index.js","webpack://strava-active/./node_modules/asn1.js/lib/asn1/decoders/pem.js","webpack://strava-active/./node_modules/asn1.js/lib/asn1/encoders/der.js","webpack://strava-active/./node_modules/asn1.js/lib/asn1/encoders/index.js","webpack://strava-active/./node_modules/asn1.js/lib/asn1/encoders/pem.js","webpack://strava-active/./node_modules/axios-extensions/node_modules/tslib/tslib.es6.js","webpack://strava-active/./node_modules/axios-extensions/esm/cacheAdapterEnhancer.js","webpack://strava-active/./node_modules/axios-extensions/esm/utils/isCacheLike.js","webpack://strava-active/./node_modules/axios-extensions/esm/utils/buildSortedURL.js","webpack://strava-active/./node_modules/axios-extensions/node_modules/lru-cache/index.js","webpack://strava-active/./node_modules/axios-extensions/node_modules/yallist/iterator.js","webpack://strava-active/./node_modules/axios-extensions/node_modules/yallist/yallist.js","webpack://strava-active/./node_modules/@strava/icons/AchievementsBadgeHighlightedSmall.js","webpack://strava-active/./node_modules/@strava/icons/AchievementsKomHighlightedSmall.js","webpack://strava-active/./node_modules/@strava/icons/AchievementsKomHighlightedXsmall.js","webpack://strava-active/./node_modules/@strava/icons/AchievementsLocalLegendNormalSmall.js","webpack://strava-active/./node_modules/@strava/icons/AchievementsLocalLegendNormalXsmall.js","webpack://strava-active/./node_modules/@strava/icons/AchievementsMedal02Small.js","webpack://strava-active/./node_modules/@strava/icons/AchievementsMedal03Small.js","webpack://strava-active/./node_modules/@strava/icons/AchievementsMedalPrSmall.js","webpack://strava-active/./node_modules/@strava/icons/AchievementsTrophy02Small.js","webpack://strava-active/./node_modules/@strava/icons/AchievementsTrophy03Small.js","webpack://strava-active/./node_modules/@strava/icons/AchievementsTrophy04Small.js","webpack://strava-active/./node_modules/@strava/icons/AchievementsTrophy05Small.js","webpack://strava-active/./node_modules/@strava/icons/AchievementsTrophy06Small.js","webpack://strava-active/./node_modules/@strava/icons/AchievementsTrophy07Small.js","webpack://strava-active/./node_modules/@strava/icons/AchievementsTrophy08Small.js","webpack://strava-active/./node_modules/@strava/icons/AchievementsTrophy09Small.js","webpack://strava-active/./node_modules/@strava/icons/AchievementsTrophy10Small.js","webpack://strava-active/./node_modules/@strava/icons/ActionsArrowLeftNormalSmall.js","webpack://strava-active/./node_modules/@strava/icons/ActionsCheckNormalMedium.js","webpack://strava-active/./node_modules/@strava/icons/ActionsCheckNormalSmall.js","webpack://strava-active/./node_modules/@strava/icons/ActionsCommentNormalXsmall.js","webpack://strava-active/./node_modules/@strava/icons/ActionsEditNormalXsmall.js","webpack://strava-active/./node_modules/@strava/icons/ActionsGlobalNormalMedium.js","webpack://strava-active/./node_modules/@strava/icons/ActionsKudoHighlightedXsmall.js","webpack://strava-active/./node_modules/@strava/icons/ActionsKudoNormalXsmall.js","webpack://strava-active/./node_modules/@strava/icons/ActionsLockClosedNormalSmall.js","webpack://strava-active/./node_modules/@strava/icons/ActionsPendingNormalXsmall.js","webpack://strava-active/./node_modules/@strava/icons/ActionsRefreshNormalLarge.js","webpack://strava-active/./node_modules/@strava/icons/ActionsVideoThumbnailNormalSmall.js","webpack://strava-active/./node_modules/@strava/icons/ActionsVideoThumbnailNormalXsmall.js","webpack://strava-active/./node_modules/@strava/icons/ActionsVisibleDisabledNormalMedium.js","webpack://strava-active/./node_modules/@strava/icons/ActivityAnalysisNormalSmall.js","webpack://strava-active/./node_modules/@strava/icons/ActivityBeaconNormalSmall.js","webpack://strava-active/./node_modules/@strava/icons/ActivityDistanceNormalMedium.js","webpack://strava-active/./node_modules/@strava/icons/ActivityElevationNormalSmall.js","webpack://strava-active/./node_modules/@strava/icons/ActivityElevationNormalXsmall.js","webpack://strava-active/./node_modules/@strava/icons/ActivityFinishNormalSmall.js","webpack://strava-active/./node_modules/@strava/icons/ActivityRoutesNormalSmall.js","webpack://strava-active/./node_modules/@strava/icons/ActivityZonesNormalSmall.js","webpack://strava-active/./node_modules/@strava/icons/BadgesMulticolorSummitXsmall.js","webpack://strava-active/./node_modules/@strava/icons/LogosFacebookSmall.js","webpack://strava-active/./node_modules/@strava/icons/LogosFacebookXsmall.js","webpack://strava-active/./node_modules/@strava/icons/NavigationGroupNormalSmall.js","webpack://strava-active/./node_modules/@strava/icons/NavigationInformationNormalXsmall.js","webpack://strava-active/./node_modules/@strava/icons/NavigationMapHeatSmall.js","webpack://strava-active/./node_modules/@strava/icons/NavigationMoreHighlightedXsmall.js","webpack://strava-active/./node_modules/@strava/icons/NavigationStudentNormalSmall.js","webpack://strava-active/./node_modules/@strava/icons/NavigationTrainingNormalSmall.js","webpack://strava-active/./node_modules/@strava/icons/NavigationTrainingNormalXsmall.js","webpack://strava-active/./node_modules/@strava/react-image-lightbox/dist/index.es.js","webpack://strava-active/./node_modules/@strava/react-image-lightbox/node_modules/prop-types/factoryWithThrowingShims.js","webpack://strava-active/./node_modules/@strava/react-image-lightbox/node_modules/prop-types/index.js","webpack://strava-active/./node_modules/@strava/react-image-lightbox/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://strava-active/./node_modules/@strava/react-image-lightbox/node_modules/react-modal/lib/components/Modal.js","webpack://strava-active/./node_modules/@strava/react-image-lightbox/node_modules/react-modal/lib/components/ModalPortal.js","webpack://strava-active/./node_modules/@strava/react-image-lightbox/node_modules/react-modal/lib/helpers/ariaAppHider.js","webpack://strava-active/./node_modules/@strava/react-image-lightbox/node_modules/react-modal/lib/helpers/bodyTrap.js","webpack://strava-active/./node_modules/@strava/react-image-lightbox/node_modules/react-modal/lib/helpers/classList.js","webpack://strava-active/./node_modules/@strava/react-image-lightbox/node_modules/react-modal/lib/helpers/focusManager.js","webpack://strava-active/./node_modules/@strava/react-image-lightbox/node_modules/react-modal/lib/helpers/portalOpenInstances.js","webpack://strava-active/./node_modules/@strava/react-image-lightbox/node_modules/react-modal/lib/helpers/safeHTMLElement.js","webpack://strava-active/./node_modules/@strava/react-image-lightbox/node_modules/react-modal/lib/helpers/scopeTab.js","webpack://strava-active/./node_modules/@strava/react-image-lightbox/node_modules/react-modal/lib/helpers/tabbable.js","webpack://strava-active/./node_modules/@strava/react-image-lightbox/node_modules/react-modal/lib/index.js","webpack://strava-active/./node_modules/@strava/ui/ButtonGroup/styles.scss?14b4","webpack://strava-active/./node_modules/@strava/ui/ButtonGroup/ButtonGroup.js","webpack://strava-active/./node_modules/@strava/ui/MediaQuery/index.js","webpack://strava-active/./node_modules/focus-lock/dist/es2015/constants.js","webpack://strava-active/./node_modules/use-callback-ref/dist/es2015/useMergeRef.js","webpack://strava-active/./node_modules/use-callback-ref/dist/es2015/useRef.js","webpack://strava-active/./node_modules/use-callback-ref/dist/es2015/assignRef.js","webpack://strava-active/./node_modules/react-focus-lock/dist/es2015/FocusGuard.js","webpack://strava-active/./node_modules/use-sidecar/dist/es2015/medium.js","webpack://strava-active/./node_modules/react-focus-lock/dist/es2015/medium.js","webpack://strava-active/./node_modules/react-focus-lock/dist/es2015/Lock.js","webpack://strava-active/./node_modules/react-clientside-effect/lib/index.es.js","webpack://strava-active/./node_modules/focus-lock/dist/es2015/utils/is.js","webpack://strava-active/./node_modules/focus-lock/dist/es2015/utils/correctFocus.js","webpack://strava-active/./node_modules/focus-lock/dist/es2015/utils/firstFocus.js","webpack://strava-active/./node_modules/focus-lock/dist/es2015/solver.js","webpack://strava-active/./node_modules/focus-lock/dist/es2015/utils/array.js","webpack://strava-active/./node_modules/focus-lock/dist/es2015/utils/tabOrder.js","webpack://strava-active/./node_modules/focus-lock/dist/es2015/utils/tabUtils.js","webpack://strava-active/./node_modules/focus-lock/dist/es2015/utils/tabbables.js","webpack://strava-active/./node_modules/focus-lock/dist/es2015/utils/DOMutils.js","webpack://strava-active/./node_modules/focus-lock/dist/es2015/utils/all-affected.js","webpack://strava-active/./node_modules/focus-lock/dist/es2015/utils/getActiveElement.js","webpack://strava-active/./node_modules/focus-lock/dist/es2015/utils/parenting.js","webpack://strava-active/./node_modules/focus-lock/dist/es2015/focusMerge.js","webpack://strava-active/./node_modules/focus-lock/dist/es2015/setFocus.js","webpack://strava-active/./node_modules/focus-lock/dist/es2015/index.js","webpack://strava-active/./node_modules/focus-lock/dist/es2015/focusInside.js","webpack://strava-active/./node_modules/focus-lock/dist/es2015/focusables.js","webpack://strava-active/./node_modules/react-focus-lock/dist/es2015/util.js","webpack://strava-active/./node_modules/react-focus-lock/dist/es2015/Trap.js","webpack://strava-active/./node_modules/focus-lock/dist/es2015/focusIsHidden.js","webpack://strava-active/./node_modules/react-focus-lock/dist/es2015/Combination.js","webpack://strava-active/./node_modules/react-focus-lock/dist/es2015/index.js","webpack://strava-active/./node_modules/react-remove-scroll-bar/dist/es2015/constants.js","webpack://strava-active/./node_modules/react-remove-scroll/dist/es2015/medium.js","webpack://strava-active/./node_modules/react-remove-scroll/dist/es2015/UI.js","webpack://strava-active/./node_modules/use-sidecar/dist/es2015/exports.js","webpack://strava-active/./node_modules/get-nonce/dist/es2015/index.js","webpack://strava-active/./node_modules/react-style-singleton/dist/es2015/singleton.js","webpack://strava-active/./node_modules/react-style-singleton/dist/es2015/component.js","webpack://strava-active/./node_modules/react-style-singleton/dist/es2015/hook.js","webpack://strava-active/./node_modules/react-remove-scroll-bar/dist/es2015/utils.js","webpack://strava-active/./node_modules/react-remove-scroll-bar/dist/es2015/component.js","webpack://strava-active/./node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","webpack://strava-active/./node_modules/react-remove-scroll/dist/es2015/handleScroll.js","webpack://strava-active/./node_modules/react-remove-scroll/dist/es2015/SideEffect.js","webpack://strava-active/./node_modules/react-remove-scroll/dist/es2015/sidecar.js","webpack://strava-active/./node_modules/react-remove-scroll/dist/es2015/Combination.js","webpack://strava-active/./node_modules/@reach/dialog/dist/dialog.esm.js","webpack://strava-active/./node_modules/@strava/ui/Modal/styles.scss?b48f","webpack://strava-active/./node_modules/@strava/ui/Modal/index.js","webpack://strava-active/./node_modules/@strava/ui/ModalWithTabs/styles.scss?75dc","webpack://strava-active/./node_modules/@strava/ui/ModalWithTabs/index.js","webpack://strava-active/./node_modules/@strava/ui/Popup/styles.scss?30b8","webpack://strava-active/./node_modules/@strava/ui/Popup/index.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/@strava/icons/ActionsRadioOffSmall.js","webpack://strava-active/./node_modules/@strava/ui/node_modules/@strava/icons/ActionsRadioOnSmall.js","webpack://strava-active/./node_modules/@strava/ui/Radio/styles.scss?6b18","webpack://strava-active/./node_modules/@strava/ui/Radio/index.js","webpack://strava-active/../../../webpack/universalModuleDefinition","webpack://strava-active/../../../dist/react-responsive.js","webpack://strava-active/../../../webpack/bootstrap a240fde86c0ad9ba24cd","webpack://strava-active/../../../node_modules/prop-types/index.js","webpack://strava-active/../../../node_modules/react-is/index.js","webpack://strava-active/../../../node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://strava-active/../../../node_modules/hyphenate-style-name/index.js","webpack://strava-active/../../../src/mediaQuery.js","webpack://strava-active/../../../src/index.js","webpack://strava-active/../../../external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}","webpack://strava-active/../../../node_modules/react-is/cjs/react-is.development.js","webpack://strava-active/../../../node_modules/prop-types/factoryWithTypeCheckers.js","webpack://strava-active/../../../node_modules/object-assign/index.js","webpack://strava-active/../../../node_modules/prop-types/checkPropTypes.js","webpack://strava-active/../../../node_modules/matchmediaquery/index.js","webpack://strava-active/../../../node_modules/css-mediaquery/index.js","webpack://strava-active/../../../src/toQuery.js","webpack://strava-active/./node_modules/babel-runtime/core-js/array/from.js","webpack://strava-active/./node_modules/babel-runtime/core-js/get-iterator.js","webpack://strava-active/./node_modules/babel-runtime/core-js/is-iterable.js","webpack://strava-active/./node_modules/babel-runtime/core-js/object/assign.js","webpack://strava-active/./node_modules/babel-runtime/core-js/object/create.js","webpack://strava-active/./node_modules/babel-runtime/core-js/object/define-property.js","webpack://strava-active/./node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js","webpack://strava-active/./node_modules/babel-runtime/core-js/object/get-prototype-of.js","webpack://strava-active/./node_modules/babel-runtime/core-js/object/keys.js","webpack://strava-active/./node_modules/babel-runtime/core-js/object/set-prototype-of.js","webpack://strava-active/./node_modules/babel-runtime/core-js/promise.js","webpack://strava-active/./node_modules/babel-runtime/core-js/symbol.js","webpack://strava-active/./node_modules/babel-runtime/core-js/symbol/iterator.js","webpack://strava-active/./node_modules/babel-runtime/helpers/classCallCheck.js","webpack://strava-active/./node_modules/babel-runtime/helpers/createClass.js","webpack://strava-active/./node_modules/babel-runtime/helpers/defineProperty.js","webpack://strava-active/./node_modules/babel-runtime/helpers/extends.js","webpack://strava-active/./node_modules/babel-runtime/helpers/inherits.js","webpack://strava-active/./node_modules/babel-runtime/helpers/objectWithoutProperties.js","webpack://strava-active/./node_modules/babel-runtime/helpers/possibleConstructorReturn.js","webpack://strava-active/./node_modules/babel-runtime/helpers/slicedToArray.js","webpack://strava-active/./node_modules/babel-runtime/helpers/toConsumableArray.js","webpack://strava-active/./node_modules/babel-runtime/helpers/typeof.js","webpack://strava-active/./node_modules/balanced-match/index.js","webpack://strava-active/./node_modules/base64-js/index.js","webpack://strava-active/./node_modules/batch-processor/src/batch-processor.js","webpack://strava-active/./node_modules/batch-processor/src/utils.js","webpack://strava-active/./node_modules/bn.js/lib/bn.js","webpack://strava-active/./node_modules/brorand/index.js","webpack://strava-active/./node_modules/browserify-aes/aes.js","webpack://strava-active/./node_modules/browserify-aes/authCipher.js","webpack://strava-active/./node_modules/browserify-aes/browser.js","webpack://strava-active/./node_modules/browserify-aes/decrypter.js","webpack://strava-active/./node_modules/browserify-aes/encrypter.js","webpack://strava-active/./node_modules/browserify-aes/ghash.js","webpack://strava-active/./node_modules/browserify-aes/incr32.js","webpack://strava-active/./node_modules/browserify-aes/modes/cbc.js","webpack://strava-active/./node_modules/browserify-aes/modes/cfb.js","webpack://strava-active/./node_modules/browserify-aes/modes/cfb1.js","webpack://strava-active/./node_modules/browserify-aes/modes/cfb8.js","webpack://strava-active/./node_modules/browserify-aes/modes/ctr.js","webpack://strava-active/./node_modules/browserify-aes/modes/ecb.js","webpack://strava-active/./node_modules/browserify-aes/modes/index.js","webpack://strava-active/./node_modules/browserify-aes/modes/ofb.js","webpack://strava-active/./node_modules/browserify-aes/streamCipher.js","webpack://strava-active/./node_modules/browserify-cipher/browser.js","webpack://strava-active/./node_modules/browserify-des/index.js","webpack://strava-active/./node_modules/browserify-des/modes.js","webpack://strava-active/./node_modules/browserify-rsa/index.js","webpack://strava-active/./node_modules/browserify-rsa/node_modules/bn.js/lib/bn.js","webpack://strava-active/./node_modules/browserify-sign/algos.js","webpack://strava-active/./node_modules/browserify-sign/browser/index.js","webpack://strava-active/./node_modules/browserify-sign/browser/sign.js","webpack://strava-active/./node_modules/browserify-sign/browser/verify.js","webpack://strava-active/./node_modules/browserify-sign/node_modules/bn.js/lib/bn.js","webpack://strava-active/./node_modules/buffer-xor/index.js","webpack://strava-active/./node_modules/buffer/index.js","webpack://strava-active/./node_modules/card-validator/index.js","webpack://strava-active/./node_modules/card-validator/src/card-number.js","webpack://strava-active/./node_modules/card-validator/src/cvv.js","webpack://strava-active/./node_modules/card-validator/src/expiration-date.js","webpack://strava-active/./node_modules/card-validator/src/expiration-month.js","webpack://strava-active/./node_modules/card-validator/src/expiration-year.js","webpack://strava-active/./node_modules/card-validator/src/lib/is-array.js","webpack://strava-active/./node_modules/card-validator/src/luhn-10.js","webpack://strava-active/./node_modules/card-validator/src/parse-date.js","webpack://strava-active/./node_modules/card-validator/src/postal-code.js","webpack://strava-active/./node_modules/cipher-base/index.js","webpack://strava-active/./node_modules/classnames/index.js","webpack://strava-active/./node_modules/clsx/dist/clsx.m.js","webpack://strava-active/./node_modules/core-js/es6/math.js","webpack://strava-active/./node_modules/core-js/es6/number.js","webpack://strava-active/./node_modules/core-js/library/fn/array/from.js","webpack://strava-active/./node_modules/core-js/library/fn/get-iterator.js","webpack://strava-active/./node_modules/core-js/library/fn/is-iterable.js","webpack://strava-active/./node_modules/core-js/library/fn/object/assign.js","webpack://strava-active/./node_modules/core-js/library/fn/object/create.js","webpack://strava-active/./node_modules/core-js/library/fn/object/define-property.js","webpack://strava-active/./node_modules/core-js/library/fn/object/get-own-property-descriptor.js","webpack://strava-active/./node_modules/core-js/library/fn/object/get-prototype-of.js","webpack://strava-active/./node_modules/core-js/library/fn/object/keys.js","webpack://strava-active/./node_modules/core-js/library/fn/object/set-prototype-of.js","webpack://strava-active/./node_modules/core-js/library/fn/promise.js","webpack://strava-active/./node_modules/core-js/library/fn/symbol/index.js","webpack://strava-active/./node_modules/core-js/library/fn/symbol/iterator.js","webpack://strava-active/./node_modules/core-js/library/modules/_a-function.js","webpack://strava-active/./node_modules/core-js/library/modules/_add-to-unscopables.js","webpack://strava-active/./node_modules/core-js/library/modules/_an-instance.js","webpack://strava-active/./node_modules/core-js/library/modules/_an-object.js","webpack://strava-active/./node_modules/core-js/library/modules/_array-includes.js","webpack://strava-active/./node_modules/core-js/library/modules/_classof.js","webpack://strava-active/./node_modules/core-js/library/modules/_cof.js","webpack://strava-active/./node_modules/core-js/library/modules/_core.js","webpack://strava-active/./node_modules/core-js/library/modules/_create-property.js","webpack://strava-active/./node_modules/core-js/library/modules/_ctx.js","webpack://strava-active/./node_modules/core-js/library/modules/_defined.js","webpack://strava-active/./node_modules/core-js/library/modules/_descriptors.js","webpack://strava-active/./node_modules/core-js/library/modules/_dom-create.js","webpack://strava-active/./node_modules/core-js/library/modules/_enum-bug-keys.js","webpack://strava-active/./node_modules/core-js/library/modules/_enum-keys.js","webpack://strava-active/./node_modules/core-js/library/modules/_export.js","webpack://strava-active/./node_modules/core-js/library/modules/_fails.js","webpack://strava-active/./node_modules/core-js/library/modules/_for-of.js","webpack://strava-active/./node_modules/core-js/library/modules/_global.js","webpack://strava-active/./node_modules/core-js/library/modules/_has.js","webpack://strava-active/./node_modules/core-js/library/modules/_hide.js","webpack://strava-active/./node_modules/core-js/library/modules/_html.js","webpack://strava-active/./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://strava-active/./node_modules/core-js/library/modules/_invoke.js","webpack://strava-active/./node_modules/core-js/library/modules/_iobject.js","webpack://strava-active/./node_modules/core-js/library/modules/_is-array-iter.js","webpack://strava-active/./node_modules/core-js/library/modules/_is-array.js","webpack://strava-active/./node_modules/core-js/library/modules/_is-object.js","webpack://strava-active/./node_modules/core-js/library/modules/_iter-call.js","webpack://strava-active/./node_modules/core-js/library/modules/_iter-create.js","webpack://strava-active/./node_modules/core-js/library/modules/_iter-define.js","webpack://strava-active/./node_modules/core-js/library/modules/_iter-detect.js","webpack://strava-active/./node_modules/core-js/library/modules/_iter-step.js","webpack://strava-active/./node_modules/core-js/library/modules/_iterators.js","webpack://strava-active/./node_modules/core-js/library/modules/_library.js","webpack://strava-active/./node_modules/core-js/library/modules/_meta.js","webpack://strava-active/./node_modules/core-js/library/modules/_microtask.js","webpack://strava-active/./node_modules/core-js/library/modules/_new-promise-capability.js","webpack://strava-active/./node_modules/core-js/library/modules/_object-assign.js","webpack://strava-active/./node_modules/core-js/library/modules/_object-create.js","webpack://strava-active/./node_modules/core-js/library/modules/_object-dp.js","webpack://strava-active/./node_modules/core-js/library/modules/_object-dps.js","webpack://strava-active/./node_modules/core-js/library/modules/_object-gopd.js","webpack://strava-active/./node_modules/core-js/library/modules/_object-gopn-ext.js","webpack://strava-active/./node_modules/core-js/library/modules/_object-gopn.js","webpack://strava-active/./node_modules/core-js/library/modules/_object-gops.js","webpack://strava-active/./node_modules/core-js/library/modules/_object-gpo.js","webpack://strava-active/./node_modules/core-js/library/modules/_object-keys-internal.js","webpack://strava-active/./node_modules/core-js/library/modules/_object-keys.js","webpack://strava-active/./node_modules/core-js/library/modules/_object-pie.js","webpack://strava-active/./node_modules/core-js/library/modules/_object-sap.js","webpack://strava-active/./node_modules/core-js/library/modules/_perform.js","webpack://strava-active/./node_modules/core-js/library/modules/_promise-resolve.js","webpack://strava-active/./node_modules/core-js/library/modules/_property-desc.js","webpack://strava-active/./node_modules/core-js/library/modules/_redefine-all.js","webpack://strava-active/./node_modules/core-js/library/modules/_redefine.js","webpack://strava-active/./node_modules/core-js/library/modules/_set-proto.js","webpack://strava-active/./node_modules/core-js/library/modules/_set-species.js","webpack://strava-active/./node_modules/core-js/library/modules/_set-to-string-tag.js","webpack://strava-active/./node_modules/core-js/library/modules/_shared-key.js","webpack://strava-active/./node_modules/core-js/library/modules/_shared.js","webpack://strava-active/./node_modules/core-js/library/modules/_species-constructor.js","webpack://strava-active/./node_modules/core-js/library/modules/_string-at.js","webpack://strava-active/./node_modules/core-js/library/modules/_task.js","webpack://strava-active/./node_modules/core-js/library/modules/_to-absolute-index.js","webpack://strava-active/./node_modules/core-js/library/modules/_to-integer.js","webpack://strava-active/./node_modules/core-js/library/modules/_to-iobject.js","webpack://strava-active/./node_modules/core-js/library/modules/_to-length.js","webpack://strava-active/./node_modules/core-js/library/modules/_to-object.js","webpack://strava-active/./node_modules/core-js/library/modules/_to-primitive.js","webpack://strava-active/./node_modules/core-js/library/modules/_uid.js","webpack://strava-active/./node_modules/core-js/library/modules/_user-agent.js","webpack://strava-active/./node_modules/core-js/library/modules/_wks-define.js","webpack://strava-active/./node_modules/core-js/library/modules/_wks-ext.js","webpack://strava-active/./node_modules/core-js/library/modules/_wks.js","webpack://strava-active/./node_modules/core-js/library/modules/core.get-iterator-method.js","webpack://strava-active/./node_modules/core-js/library/modules/core.get-iterator.js","webpack://strava-active/./node_modules/core-js/library/modules/core.is-iterable.js","webpack://strava-active/./node_modules/core-js/library/modules/es6.array.from.js","webpack://strava-active/./node_modules/core-js/library/modules/es6.array.iterator.js","webpack://strava-active/./node_modules/core-js/library/modules/es6.object.assign.js","webpack://strava-active/./node_modules/core-js/library/modules/es6.object.create.js","webpack://strava-active/./node_modules/core-js/library/modules/es6.object.define-property.js","webpack://strava-active/./node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js","webpack://strava-active/./node_modules/core-js/library/modules/es6.object.get-prototype-of.js","webpack://strava-active/./node_modules/core-js/library/modules/es6.object.keys.js","webpack://strava-active/./node_modules/core-js/library/modules/es6.object.set-prototype-of.js","webpack://strava-active/./node_modules/core-js/library/modules/es6.promise.js","webpack://strava-active/./node_modules/core-js/library/modules/es6.string.iterator.js","webpack://strava-active/./node_modules/core-js/library/modules/es6.symbol.js","webpack://strava-active/./node_modules/core-js/library/modules/es7.promise.finally.js","webpack://strava-active/./node_modules/core-js/library/modules/es7.promise.try.js","webpack://strava-active/./node_modules/core-js/library/modules/es7.symbol.async-iterator.js","webpack://strava-active/./node_modules/core-js/library/modules/es7.symbol.observable.js","webpack://strava-active/./node_modules/core-js/library/modules/web.dom.iterable.js","webpack://strava-active/./node_modules/core-js/modules/_a-number-value.js","webpack://strava-active/./node_modules/core-js/modules/_is-integer.js","webpack://strava-active/./node_modules/core-js/modules/_math-expm1.js","webpack://strava-active/./node_modules/core-js/modules/_math-fround.js","webpack://strava-active/./node_modules/core-js/modules/_math-log1p.js","webpack://strava-active/./node_modules/core-js/modules/_math-sign.js","webpack://strava-active/./node_modules/core-js/modules/_object-gopn.js","webpack://strava-active/./node_modules/core-js/modules/_parse-float.js","webpack://strava-active/./node_modules/core-js/modules/_parse-int.js","webpack://strava-active/./node_modules/core-js/modules/es6.math.acosh.js","webpack://strava-active/./node_modules/core-js/modules/es6.math.asinh.js","webpack://strava-active/./node_modules/core-js/modules/es6.math.atanh.js","webpack://strava-active/./node_modules/core-js/modules/es6.math.cbrt.js","webpack://strava-active/./node_modules/core-js/modules/es6.math.clz32.js","webpack://strava-active/./node_modules/core-js/modules/es6.math.cosh.js","webpack://strava-active/./node_modules/core-js/modules/es6.math.expm1.js","webpack://strava-active/./node_modules/core-js/modules/es6.math.fround.js","webpack://strava-active/./node_modules/core-js/modules/es6.math.hypot.js","webpack://strava-active/./node_modules/core-js/modules/es6.math.imul.js","webpack://strava-active/./node_modules/core-js/modules/es6.math.log10.js","webpack://strava-active/./node_modules/core-js/modules/es6.math.log1p.js","webpack://strava-active/./node_modules/core-js/modules/es6.math.log2.js","webpack://strava-active/./node_modules/core-js/modules/es6.math.sign.js","webpack://strava-active/./node_modules/core-js/modules/es6.math.sinh.js","webpack://strava-active/./node_modules/core-js/modules/es6.math.tanh.js","webpack://strava-active/./node_modules/core-js/modules/es6.math.trunc.js","webpack://strava-active/./node_modules/core-js/modules/es6.number.constructor.js","webpack://strava-active/./node_modules/core-js/modules/es6.number.epsilon.js","webpack://strava-active/./node_modules/core-js/modules/es6.number.is-finite.js","webpack://strava-active/./node_modules/core-js/modules/es6.number.is-integer.js","webpack://strava-active/./node_modules/core-js/modules/es6.number.is-nan.js","webpack://strava-active/./node_modules/core-js/modules/es6.number.is-safe-integer.js","webpack://strava-active/./node_modules/core-js/modules/es6.number.max-safe-integer.js","webpack://strava-active/./node_modules/core-js/modules/es6.number.min-safe-integer.js","webpack://strava-active/./node_modules/core-js/modules/es6.number.parse-float.js","webpack://strava-active/./node_modules/core-js/modules/es6.number.parse-int.js","webpack://strava-active/./node_modules/core-js/modules/es6.number.to-fixed.js","webpack://strava-active/./node_modules/core-js/modules/es6.number.to-precision.js","webpack://strava-active/./node_modules/country-data/data/continents.js","webpack://strava-active/./node_modules/country-data/data/regions.js","webpack://strava-active/./node_modules/country-data/index.js","webpack://strava-active/./node_modules/country-data/lookup.js","webpack://strava-active/./node_modules/create-ecdh/browser.js","webpack://strava-active/./node_modules/create-hash/browser.js","webpack://strava-active/./node_modules/create-hash/md5.js","webpack://strava-active/./node_modules/create-hmac/browser.js","webpack://strava-active/./node_modules/create-hmac/legacy.js","webpack://strava-active/./node_modules/credit-card-type/index.js","webpack://strava-active/./node_modules/credit-card-type/lib/add-matching-cards-to-results.js","webpack://strava-active/./node_modules/credit-card-type/lib/card-types.js","webpack://strava-active/./node_modules/credit-card-type/lib/clone.js","webpack://strava-active/./node_modules/credit-card-type/lib/find-best-match.js","webpack://strava-active/./node_modules/credit-card-type/lib/is-valid-input-type.js","webpack://strava-active/./node_modules/credit-card-type/lib/matches.js","webpack://strava-active/./node_modules/crypto-browserify/index.js","webpack://strava-active/./node_modules/currency-symbol-map/currency-symbol-map.js","webpack://strava-active/./node_modules/currency-symbol-map/map.js","webpack://strava-active/./node_modules/d3-shape/src/arc.js","webpack://strava-active/./node_modules/d3-shape/src/math.js","webpack://strava-active/./node_modules/decimal.js-light/decimal.js","webpack://strava-active/./node_modules/deep-equal/index.js","webpack://strava-active/./node_modules/des.js/lib/des.js","webpack://strava-active/./node_modules/des.js/lib/des/cbc.js","webpack://strava-active/./node_modules/des.js/lib/des/cipher.js","webpack://strava-active/./node_modules/des.js/lib/des/des.js","webpack://strava-active/./node_modules/des.js/lib/des/ede.js","webpack://strava-active/./node_modules/des.js/lib/des/utils.js","webpack://strava-active/./node_modules/diffie-hellman/browser.js","webpack://strava-active/./node_modules/diffie-hellman/lib/dh.js","webpack://strava-active/./node_modules/diffie-hellman/lib/generatePrime.js","webpack://strava-active/./node_modules/dom-helpers/class/addClass.js","webpack://strava-active/./node_modules/dom-helpers/class/hasClass.js","webpack://strava-active/./node_modules/dom-helpers/class/removeClass.js","webpack://strava-active/./node_modules/dom-helpers/util/inDOM.js","webpack://strava-active/./node_modules/dom-helpers/util/scrollbarSize.js","webpack://strava-active/./node_modules/element-resize-detector/src/browser-detector.js","webpack://strava-active/./node_modules/element-resize-detector/src/collection-utils.js","webpack://strava-active/./node_modules/element-resize-detector/src/detection-strategy/object.js","webpack://strava-active/./node_modules/element-resize-detector/src/detection-strategy/scroll.js","webpack://strava-active/./node_modules/element-resize-detector/src/element-resize-detector.js","webpack://strava-active/./node_modules/element-resize-detector/src/element-utils.js","webpack://strava-active/./node_modules/element-resize-detector/src/id-generator.js","webpack://strava-active/./node_modules/element-resize-detector/src/id-handler.js","webpack://strava-active/./node_modules/element-resize-detector/src/listener-handler.js","webpack://strava-active/./node_modules/element-resize-detector/src/reporter.js","webpack://strava-active/./node_modules/element-resize-detector/src/state-handler.js","webpack://strava-active/./node_modules/elliptic/lib/elliptic.js","webpack://strava-active/./node_modules/elliptic/lib/elliptic/curve/base.js","webpack://strava-active/./node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack://strava-active/./node_modules/elliptic/lib/elliptic/curve/index.js","webpack://strava-active/./node_modules/elliptic/lib/elliptic/curve/mont.js","webpack://strava-active/./node_modules/elliptic/lib/elliptic/curve/short.js","webpack://strava-active/./node_modules/elliptic/lib/elliptic/curves.js","webpack://strava-active/./node_modules/elliptic/lib/elliptic/ec/index.js","webpack://strava-active/./node_modules/elliptic/lib/elliptic/ec/key.js","webpack://strava-active/./node_modules/elliptic/lib/elliptic/ec/signature.js","webpack://strava-active/./node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack://strava-active/./node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack://strava-active/./node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack://strava-active/./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack://strava-active/./node_modules/elliptic/lib/elliptic/utils.js","webpack://strava-active/./node_modules/email-validator/index.js","webpack://strava-active/./node_modules/evp_bytestokey/index.js","webpack://strava-active/./node_modules/gud/index.js","webpack://strava-active/./node_modules/hash-base/index.js","webpack://strava-active/./node_modules/hash.js/lib/hash.js","webpack://strava-active/./node_modules/hash.js/lib/hash/common.js","webpack://strava-active/./node_modules/hash.js/lib/hash/hmac.js","webpack://strava-active/./node_modules/hash.js/lib/hash/ripemd.js","webpack://strava-active/./node_modules/hash.js/lib/hash/sha.js","webpack://strava-active/./node_modules/hash.js/lib/hash/sha/1.js","webpack://strava-active/./node_modules/hash.js/lib/hash/sha/224.js","webpack://strava-active/./node_modules/hash.js/lib/hash/sha/256.js","webpack://strava-active/./node_modules/hash.js/lib/hash/sha/384.js","webpack://strava-active/./node_modules/hash.js/lib/hash/sha/512.js","webpack://strava-active/./node_modules/hash.js/lib/hash/sha/common.js","webpack://strava-active/./node_modules/hash.js/lib/hash/utils.js","webpack://strava-active/./node_modules/resolve-pathname/esm/resolve-pathname.js","webpack://strava-active/./node_modules/value-equal/esm/value-equal.js","webpack://strava-active/./node_modules/history/esm/history.js","webpack://strava-active/./node_modules/hmac-drbg/lib/hmac-drbg.js","webpack://strava-active/./node_modules/http-status-codes/build/es/status-codes.js","webpack://strava-active/./node_modules/ieee754/index.js","webpack://strava-active/./node_modules/inherits/inherits_browser.js","webpack://strava-active/./node_modules/invariant/browser.js","webpack://strava-active/./node_modules/is-arguments/index.js","webpack://strava-active/./node_modules/linear-layout-vector/index.js","webpack://strava-active/./node_modules/lodash-es/_baseMap.js","webpack://strava-active/./node_modules/lodash-es/_baseSortBy.js","webpack://strava-active/./node_modules/lodash-es/_compareAscending.js","webpack://strava-active/./node_modules/lodash-es/_compareMultiple.js","webpack://strava-active/./node_modules/lodash-es/_baseOrderBy.js","webpack://strava-active/./node_modules/lodash-es/camelCase.js","webpack://strava-active/./node_modules/lodash-es/compact.js","webpack://strava-active/./node_modules/lodash-es/_escapeHtmlChar.js","webpack://strava-active/./node_modules/lodash-es/escape.js","webpack://strava-active/./node_modules/lodash-es/_createFind.js","webpack://strava-active/./node_modules/lodash-es/findIndex.js","webpack://strava-active/./node_modules/lodash-es/find.js","webpack://strava-active/./node_modules/lodash-es/isEqual.js","webpack://strava-active/./node_modules/lodash-es/isNil.js","webpack://strava-active/./node_modules/lodash-es/kebabCase.js","webpack://strava-active/./node_modules/lodash-es/orderBy.js","webpack://strava-active/./node_modules/lodash-es/last.js","webpack://strava-active/./node_modules/lodash-es/_parent.js","webpack://strava-active/./node_modules/lodash-es/_baseUnset.js","webpack://strava-active/./node_modules/lodash-es/_basePullAt.js","webpack://strava-active/./node_modules/lodash-es/remove.js","webpack://strava-active/./node_modules/lodash-es/isString.js","webpack://strava-active/./node_modules/lodash-es/_asciiSize.js","webpack://strava-active/./node_modules/lodash-es/_unicodeSize.js","webpack://strava-active/./node_modules/lodash-es/_stringSize.js","webpack://strava-active/./node_modules/lodash-es/size.js","webpack://strava-active/./node_modules/lodash-es/snakeCase.js","webpack://strava-active/./node_modules/lodash-es/sortBy.js","webpack://strava-active/./node_modules/lodash-es/toLower.js","webpack://strava-active/./node_modules/lodash-es/_charsEndIndex.js","webpack://strava-active/./node_modules/lodash-es/_charsStartIndex.js","webpack://strava-active/./node_modules/lodash-es/trim.js","webpack://strava-active/./node_modules/lodash-es/noop.js","webpack://strava-active/./node_modules/lodash-es/_createSet.js","webpack://strava-active/./node_modules/lodash-es/_baseUniq.js","webpack://strava-active/./node_modules/lodash-es/uniqBy.js","webpack://strava-active/./node_modules/lodash.throttle/index.js","webpack://strava-active/./node_modules/math-expression-evaluator/src/formula_evaluator.js","webpack://strava-active/./node_modules/math-expression-evaluator/src/lexer.js","webpack://strava-active/./node_modules/math-expression-evaluator/src/math_function.js","webpack://strava-active/./node_modules/math-expression-evaluator/src/postfix.js","webpack://strava-active/./node_modules/math-expression-evaluator/src/postfix_evaluator.js","webpack://strava-active/./node_modules/md5.js/index.js","webpack://strava-active/./node_modules/miller-rabin/lib/mr.js","webpack://strava-active/./node_modules/minimalistic-assert/index.js","webpack://strava-active/./node_modules/minimalistic-crypto-utils/lib/utils.js","webpack://strava-active/./node_modules/parse-asn1/asn1.js","webpack://strava-active/./node_modules/parse-asn1/certificate.js","webpack://strava-active/./node_modules/parse-asn1/fixProc.js","webpack://strava-active/./node_modules/parse-asn1/index.js","webpack://strava-active/./node_modules/pbkdf2/browser.js","webpack://strava-active/./node_modules/pbkdf2/lib/async.js","webpack://strava-active/./node_modules/pbkdf2/lib/default-encoding.js","webpack://strava-active/./node_modules/pbkdf2/lib/precondition.js","webpack://strava-active/./node_modules/pbkdf2/lib/sync-browser.js","webpack://strava-active/./node_modules/pbkdf2/lib/to-buffer.js","webpack://strava-active/./node_modules/public-encrypt/browser.js","webpack://strava-active/./node_modules/public-encrypt/mgf.js","webpack://strava-active/./node_modules/public-encrypt/privateDecrypt.js","webpack://strava-active/./node_modules/public-encrypt/publicEncrypt.js","webpack://strava-active/./node_modules/public-encrypt/withPublic.js","webpack://strava-active/./node_modules/public-encrypt/xor.js","webpack://strava-active/./node_modules/randombytes/browser.js","webpack://strava-active/./node_modules/randomfill/browser.js","webpack://strava-active/./node_modules/react-async-script/node_modules/prop-types/factoryWithThrowingShims.js","webpack://strava-active/./node_modules/react-async-script/node_modules/prop-types/index.js","webpack://strava-active/./node_modules/react-async-script/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://strava-active/./node_modules/react-circular-progressbar/dist/index.esm.js","webpack://strava-active/./node_modules/react-collapsible/dist/index.js","webpack://strava-active/./node_modules/react-google-recaptcha/lib/esm/recaptcha.js","webpack://strava-active/./node_modules/react-async-script/lib/esm/async-script-loader.js","webpack://strava-active/./node_modules/react-google-recaptcha/lib/esm/recaptcha-wrapper.js","webpack://strava-active/./node_modules/react-google-recaptcha/lib/esm/index.js","webpack://strava-active/./node_modules/react-google-recaptcha/node_modules/prop-types/factoryWithThrowingShims.js","webpack://strava-active/./node_modules/react-google-recaptcha/node_modules/prop-types/index.js","webpack://strava-active/./node_modules/react-google-recaptcha/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://strava-active/./node_modules/react-intersection-observer/react-intersection-observer.m.js","webpack://strava-active/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://strava-active/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://strava-active/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://strava-active/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://strava-active/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/extends.js","webpack://strava-active/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://strava-active/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://strava-active/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://strava-active/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://strava-active/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://strava-active/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://strava-active/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://strava-active/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://strava-active/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://strava-active/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://strava-active/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://strava-active/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://strava-active/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://strava-active/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://strava-active/./node_modules/react-mentions/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://strava-active/./node_modules/substyle/es6/utils.js","webpack://strava-active/./node_modules/substyle/es6/filterKeys.js","webpack://strava-active/./node_modules/substyle/es6/pickStyles.js","webpack://strava-active/./node_modules/substyle/es6/defaultPropsDecorator.js","webpack://strava-active/./node_modules/substyle/es6/PropsDecoratorProvider.js","webpack://strava-active/./node_modules/substyle/es6/coerceSelection.js","webpack://strava-active/./node_modules/substyle/es6/memoize.js","webpack://strava-active/./node_modules/substyle/es6/createSubstyle.js","webpack://strava-active/./node_modules/substyle/es6/useStyles.js","webpack://strava-active/./node_modules/substyle/es6/index.js","webpack://strava-active/./node_modules/substyle/es6/inline.js","webpack://strava-active/./node_modules/react-mentions/dist/react-mentions.esm.js","webpack://strava-active/./node_modules/react-mentions/node_modules/prop-types/factoryWithThrowingShims.js","webpack://strava-active/./node_modules/react-mentions/node_modules/prop-types/index.js","webpack://strava-active/./node_modules/react-mentions/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://strava-active/./node_modules/react-popper/lib/esm/Manager.js","webpack://strava-active/./node_modules/popper.js/dist/esm/popper.js","webpack://strava-active/./node_modules/react-popper/lib/esm/Popper.js","webpack://strava-active/./node_modules/react-popper/lib/esm/Reference.js","webpack://strava-active/./node_modules/react-popper/lib/esm/utils.js","webpack://strava-active/./node_modules/react-popper/node_modules/@hypnosphi/create-react-context/lib/implementation.js","webpack://strava-active/./node_modules/react-popper/node_modules/@hypnosphi/create-react-context/lib/index.js","webpack://strava-active/./node_modules/react-popper/node_modules/prop-types/factoryWithThrowingShims.js","webpack://strava-active/./node_modules/react-popper/node_modules/prop-types/index.js","webpack://strava-active/./node_modules/react-popper/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://strava-active/./node_modules/react-redux/es/components/Context.js","webpack://strava-active/./node_modules/react-redux/es/utils/batch.js","webpack://strava-active/./node_modules/react-redux/es/utils/Subscription.js","webpack://strava-active/./node_modules/react-redux/es/components/Provider.js","webpack://strava-active/./node_modules/react-redux/es/components/connectAdvanced.js","webpack://strava-active/./node_modules/react-redux/es/utils/shallowEqual.js","webpack://strava-active/./node_modules/react-redux/es/connect/wrapMapToProps.js","webpack://strava-active/./node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack://strava-active/./node_modules/react-redux/es/connect/mapStateToProps.js","webpack://strava-active/./node_modules/react-redux/es/connect/mergeProps.js","webpack://strava-active/./node_modules/react-redux/es/connect/selectorFactory.js","webpack://strava-active/./node_modules/react-redux/es/connect/connect.js","webpack://strava-active/./node_modules/react-redux/es/hooks/useSelector.js","webpack://strava-active/./node_modules/react-redux/es/index.js","webpack://strava-active/./node_modules/react-redux/node_modules/prop-types/factoryWithThrowingShims.js","webpack://strava-active/./node_modules/react-redux/node_modules/prop-types/index.js","webpack://strava-active/./node_modules/react-redux/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://strava-active/./node_modules/react-resize-detector/lib/components/ResizeDetector.js","webpack://strava-active/./node_modules/react-resize-detector/lib/index.js","webpack://strava-active/./node_modules/react-resize-detector/node_modules/prop-types/factoryWithThrowingShims.js","webpack://strava-active/./node_modules/react-resize-detector/node_modules/prop-types/index.js","webpack://strava-active/./node_modules/react-resize-detector/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://strava-active/./node_modules/react-router-dom/esm/react-router-dom.js","webpack://strava-active/./node_modules/react-router/node_modules/mini-create-react-context/dist/esm/index.js","webpack://strava-active/./node_modules/react-router/esm/react-router.js","webpack://strava-active/./node_modules/react-router/node_modules/isarray/index.js","webpack://strava-active/./node_modules/react-router/node_modules/path-to-regexp/index.js","webpack://strava-active/./node_modules/react-router/node_modules/prop-types/factoryWithThrowingShims.js","webpack://strava-active/./node_modules/react-router/node_modules/prop-types/index.js","webpack://strava-active/./node_modules/react-router/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://strava-active/./node_modules/react-select/creatable/dist/react-select.browser.esm.js","webpack://strava-active/./node_modules/react-sizeme/dist/react-sizeme.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_DataView.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_Hash.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_ListCache.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_Map.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_MapCache.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_Promise.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_Set.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_SetCache.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_Stack.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_Symbol.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_Uint8Array.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_WeakMap.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_apply.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_arrayFilter.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_arrayIncludes.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_arrayIncludesWith.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_arrayLikeKeys.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_arrayMap.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_arrayPush.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_arraySome.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_assocIndexOf.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseEach.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseFilter.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseFindIndex.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseFor.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseForOwn.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseGet.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseGetAllKeys.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseGetTag.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseHasIn.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseIndexOf.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseIntersection.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseIsArguments.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseIsEqual.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseIsEqualDeep.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseIsMatch.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseIsNaN.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseIsNative.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseIsTypedArray.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseIteratee.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseKeys.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseMatches.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseMatchesProperty.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseProperty.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_basePropertyDeep.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseRest.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseSetToString.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseTimes.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseToString.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_baseUnary.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_cacheHas.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_castArrayLikeObject.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_castPath.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_coreJsData.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_createBaseEach.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_createBaseFor.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_defineProperty.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_equalArrays.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_equalByTag.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_equalObjects.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_freeGlobal.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_getAllKeys.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_getMapData.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_getMatchData.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_getNative.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_getRawTag.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_getSymbols.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_getTag.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_getValue.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_hasPath.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_hashClear.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_hashDelete.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_hashGet.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_hashHas.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_hashSet.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_isIndex.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_isKey.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_isKeyable.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_isMasked.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_isPrototype.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_isStrictComparable.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_listCacheClear.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_listCacheDelete.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_listCacheGet.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_listCacheHas.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_listCacheSet.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_mapCacheClear.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_mapCacheDelete.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_mapCacheGet.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_mapCacheHas.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_mapCacheSet.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_mapToArray.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_matchesStrictComparable.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_memoizeCapped.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_nativeCreate.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_nativeKeys.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_nodeUtil.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_objectToString.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_overArg.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_overRest.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_root.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_setCacheAdd.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_setCacheHas.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_setToArray.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_setToString.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_shortOut.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_stackClear.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_stackDelete.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_stackGet.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_stackHas.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_stackSet.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_strictIndexOf.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_stringToPath.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_toKey.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/_toSource.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/constant.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/eq.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/filter.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/get.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/hasIn.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/identity.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/intersection.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/isArguments.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/isArray.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/isArrayLike.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/isArrayLikeObject.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/isBuffer.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/isEqual.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/isFunction.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/isLength.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/isNumber.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/isObject.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/isObjectLike.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/isSymbol.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/isTypedArray.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/keys.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/memoize.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/property.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/stubArray.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/stubFalse.js","webpack://strava-active/./node_modules/react-smooth/node_modules/lodash/toString.js","webpack://strava-active/./node_modules/react-smooth/node_modules/prop-types/factoryWithThrowingShims.js","webpack://strava-active/./node_modules/react-smooth/node_modules/prop-types/index.js","webpack://strava-active/./node_modules/react-smooth/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://strava-active/./node_modules/react-smooth/node_modules/react-transition-group/CSSTransition.js","webpack://strava-active/./node_modules/react-smooth/node_modules/react-transition-group/ReplaceTransition.js","webpack://strava-active/./node_modules/react-smooth/node_modules/react-transition-group/Transition.js","webpack://strava-active/./node_modules/react-smooth/node_modules/react-transition-group/TransitionGroup.js","webpack://strava-active/./node_modules/react-smooth/node_modules/react-transition-group/index.js","webpack://strava-active/./node_modules/react-smooth/node_modules/react-transition-group/utils/ChildMapping.js","webpack://strava-active/./node_modules/react-smooth/node_modules/react-transition-group/utils/PropTypes.js","webpack://strava-active/./node_modules/react-tabs/esm/helpers/elementTypes.js","webpack://strava-active/./node_modules/react-tabs/esm/helpers/childrenDeepMap.js","webpack://strava-active/./node_modules/react-tabs/esm/helpers/uuid.js","webpack://strava-active/./node_modules/react-tabs/esm/helpers/count.js","webpack://strava-active/./node_modules/react-tabs/esm/components/UncontrolledTabs.js","webpack://strava-active/./node_modules/react-tabs/esm/components/Tabs.js","webpack://strava-active/./node_modules/react-tabs/esm/components/TabList.js","webpack://strava-active/./node_modules/react-tabs/esm/components/Tab.js","webpack://strava-active/./node_modules/react-tabs/esm/components/TabPanel.js","webpack://strava-active/./node_modules/react-textarea-autosize/dist/react-textarea-autosize.esm.browser.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Grid/utils/CellSizeAndPositionManager.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Grid/utils/maxElementSize.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Grid/utils/ScalingCellSizeAndPositionManager.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/utils/createCallbackMemoizer.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Grid/utils/updateScrollIndexHelper.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/utils/animationFrame.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/utils/requestAnimationTimeout.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Grid/Grid.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Grid/defaultOverscanIndicesGetter.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Grid/defaultCellRangeRenderer.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Grid/accessibilityOverscanIndicesGetter.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/ArrowKeyStepper/types.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/ArrowKeyStepper/ArrowKeyStepper.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/vendor/detectElementResize.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/AutoSizer/AutoSizer.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/CellMeasurer/CellMeasurer.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/CellMeasurer/CellMeasurerCache.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/CellMeasurer/index.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Collection/CollectionView.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Collection/Section.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Collection/SectionManager.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/utils/getUpdatedOffsetForIndex.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Collection/Collection.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Collection/utils/calculateSizeAndPositionData.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Collection/index.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/ColumnSizer/ColumnSizer.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/ColumnSizer/index.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/InfiniteLoader/InfiniteLoader.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/InfiniteLoader/index.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/List/List.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/vendor/binarySearchBounds.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/vendor/intervalTree.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Masonry/PositionCache.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Masonry/Masonry.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Masonry/index.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/MultiGrid/CellMeasurerCacheDecorator.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/MultiGrid/MultiGrid.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/ScrollSync/ScrollSync.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Table/defaultHeaderRowRenderer.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Table/SortDirection.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Table/SortIndicator.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Table/defaultHeaderRenderer.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Table/defaultRowRenderer.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Table/Column.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Table/defaultCellDataGetter.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Table/defaultCellRenderer.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Table/Table.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/Table/index.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/WindowScroller/utils/onScroll.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/WindowScroller/utils/dimensions.js","webpack://strava-active/./node_modules/react-virtualized/dist/es/WindowScroller/WindowScroller.js","webpack://strava-active/./node_modules/readable-stream/errors-browser.js","webpack://strava-active/./node_modules/readable-stream/lib/_stream_duplex.js","webpack://strava-active/./node_modules/readable-stream/lib/_stream_passthrough.js","webpack://strava-active/./node_modules/readable-stream/lib/_stream_readable.js","webpack://strava-active/./node_modules/readable-stream/lib/_stream_transform.js","webpack://strava-active/./node_modules/readable-stream/lib/_stream_writable.js","webpack://strava-active/./node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://strava-active/./node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://strava-active/./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://strava-active/./node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://strava-active/./node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://strava-active/./node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://strava-active/./node_modules/readable-stream/lib/internal/streams/state.js","webpack://strava-active/./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://strava-active/./node_modules/readable-stream/readable-browser.js","webpack://strava-active/./node_modules/recharts/es6/polyfill.js","webpack://strava-active/./node_modules/react-smooth/es6/setRafTimeout.js","webpack://strava-active/./node_modules/react-smooth/es6/AnimateManager.js","webpack://strava-active/./node_modules/react-smooth/es6/util.js","webpack://strava-active/./node_modules/react-smooth/es6/easing.js","webpack://strava-active/./node_modules/react-smooth/es6/configUpdate.js","webpack://strava-active/./node_modules/react-smooth/es6/Animate.js","webpack://strava-active/./node_modules/react-smooth/es6/AnimateGroupChild.js","webpack://strava-active/./node_modules/react-smooth/es6/AnimateGroup.js","webpack://strava-active/./node_modules/react-smooth/es6/index.js","webpack://strava-active/./node_modules/recharts/es6/util/DataUtils.js","webpack://strava-active/./node_modules/recharts/es6/component/DefaultTooltipContent.js","webpack://strava-active/./node_modules/recharts/es6/util/ShallowEqual.js","webpack://strava-active/./node_modules/recharts/es6/util/ReactUtils.js","webpack://strava-active/./node_modules/recharts/es6/component/Tooltip.js","webpack://strava-active/./node_modules/recharts/es6/component/ResponsiveContainer.js","webpack://strava-active/./node_modules/recharts/es6/container/Layer.js","webpack://strava-active/./node_modules/recharts/es6/util/DOMUtils.js","webpack://strava-active/./node_modules/recharts/es6/component/Text.js","webpack://strava-active/./node_modules/recharts/es6/util/PolarUtils.js","webpack://strava-active/./node_modules/recharts/es6/component/Label.js","webpack://strava-active/./node_modules/recharts/es6/util/IfOverflowMatches.js","webpack://strava-active/./node_modules/recharts-scale/es6/util/utils.js","webpack://strava-active/./node_modules/recharts-scale/es6/util/arithmetic.js","webpack://strava-active/./node_modules/recharts-scale/es6/getNiceTickValues.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-array/src/ascending.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-array/src/bisector.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-array/src/bisect.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-array/src/array.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-array/src/ticks.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-array/src/number.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-array/src/quantile.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-array/src/range.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/init.js","webpack://strava-active/./node_modules/d3-collection/src/map.js","webpack://strava-active/./node_modules/d3-collection/src/set.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/array.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/ordinal.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/band.js","webpack://strava-active/./node_modules/d3-color/src/define.js","webpack://strava-active/./node_modules/d3-color/src/color.js","webpack://strava-active/./node_modules/d3-interpolate/src/basis.js","webpack://strava-active/./node_modules/d3-interpolate/src/constant.js","webpack://strava-active/./node_modules/d3-interpolate/src/color.js","webpack://strava-active/./node_modules/d3-interpolate/src/rgb.js","webpack://strava-active/./node_modules/d3-interpolate/src/basisClosed.js","webpack://strava-active/./node_modules/d3-interpolate/src/array.js","webpack://strava-active/./node_modules/d3-interpolate/src/date.js","webpack://strava-active/./node_modules/d3-interpolate/src/number.js","webpack://strava-active/./node_modules/d3-interpolate/src/object.js","webpack://strava-active/./node_modules/d3-interpolate/src/string.js","webpack://strava-active/./node_modules/d3-interpolate/src/numberArray.js","webpack://strava-active/./node_modules/d3-interpolate/src/value.js","webpack://strava-active/./node_modules/d3-interpolate/src/round.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/number.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/continuous.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/constant.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-format/src/formatSpecifier.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-format/src/formatPrefixAuto.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-format/src/formatDecimal.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-format/src/exponent.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-format/src/formatRounded.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-format/src/formatTypes.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-format/src/identity.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-format/src/locale.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-format/src/defaultLocale.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-format/src/formatGroup.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-format/src/formatNumerals.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-format/src/formatTrim.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/tickFormat.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-format/src/precisionPrefix.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-format/src/precisionRound.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-format/src/precisionFixed.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/linear.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/identity.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/nice.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/log.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/symlog.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/pow.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/quantile.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/quantize.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/threshold.js","webpack://strava-active/./node_modules/d3-time/src/interval.js","webpack://strava-active/./node_modules/d3-time/src/year.js","webpack://strava-active/./node_modules/d3-time/src/month.js","webpack://strava-active/./node_modules/d3-time/src/duration.js","webpack://strava-active/./node_modules/d3-time/src/week.js","webpack://strava-active/./node_modules/d3-time/src/day.js","webpack://strava-active/./node_modules/d3-time/src/hour.js","webpack://strava-active/./node_modules/d3-time/src/minute.js","webpack://strava-active/./node_modules/d3-time/src/second.js","webpack://strava-active/./node_modules/d3-time/src/millisecond.js","webpack://strava-active/./node_modules/d3-time/src/utcWeek.js","webpack://strava-active/./node_modules/d3-time/src/utcDay.js","webpack://strava-active/./node_modules/d3-time/src/utcYear.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-time-format/src/locale.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-time-format/src/defaultLocale.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/time.js","webpack://strava-active/./node_modules/d3-time/src/utcMonth.js","webpack://strava-active/./node_modules/d3-time/src/utcHour.js","webpack://strava-active/./node_modules/d3-time/src/utcMinute.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/utcTime.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/sequential.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/sequentialQuantile.js","webpack://strava-active/./node_modules/recharts/node_modules/d3-scale/src/diverging.js","webpack://strava-active/./node_modules/d3-shape/src/offset/none.js","webpack://strava-active/./node_modules/d3-shape/src/array.js","webpack://strava-active/./node_modules/d3-shape/src/order/none.js","webpack://strava-active/./node_modules/d3-shape/src/stack.js","webpack://strava-active/./node_modules/recharts/es6/cartesian/ErrorBar.js","webpack://strava-active/./node_modules/recharts/es6/container/Surface.js","webpack://strava-active/./node_modules/d3-shape/src/symbol/circle.js","webpack://strava-active/./node_modules/d3-shape/src/symbol/cross.js","webpack://strava-active/./node_modules/d3-shape/src/symbol/diamond.js","webpack://strava-active/./node_modules/d3-shape/src/symbol/square.js","webpack://strava-active/./node_modules/d3-shape/src/symbol/star.js","webpack://strava-active/./node_modules/d3-shape/src/symbol/triangle.js","webpack://strava-active/./node_modules/d3-shape/src/symbol/wye.js","webpack://strava-active/./node_modules/recharts/es6/shape/Symbols.js","webpack://strava-active/./node_modules/d3-shape/src/symbol.js","webpack://strava-active/./node_modules/recharts/es6/component/DefaultLegendContent.js","webpack://strava-active/./node_modules/recharts/es6/component/Legend.js","webpack://strava-active/./node_modules/recharts/es6/util/ChartUtils.js","webpack://strava-active/./node_modules/d3-shape/src/offset/expand.js","webpack://strava-active/./node_modules/d3-shape/src/offset/silhouette.js","webpack://strava-active/./node_modules/d3-shape/src/offset/wiggle.js","webpack://strava-active/./node_modules/recharts/es6/util/CartesianUtils.js","webpack://strava-active/./node_modules/recharts/es6/cartesian/ReferenceLine.js","webpack://strava-active/./node_modules/recharts/es6/shape/Dot.js","webpack://strava-active/./node_modules/recharts/es6/cartesian/ReferenceDot.js","webpack://strava-active/./node_modules/recharts/es6/cartesian/CartesianGrid.js","webpack://strava-active/./node_modules/d3-shape/src/noop.js","webpack://strava-active/./node_modules/d3-shape/src/curve/basis.js","webpack://strava-active/./node_modules/d3-shape/src/curve/basisClosed.js","webpack://strava-active/./node_modules/d3-shape/src/curve/basisOpen.js","webpack://strava-active/./node_modules/d3-shape/src/curve/linearClosed.js","webpack://strava-active/./node_modules/d3-shape/src/curve/monotone.js","webpack://strava-active/./node_modules/d3-shape/src/curve/natural.js","webpack://strava-active/./node_modules/d3-shape/src/curve/step.js","webpack://strava-active/./node_modules/recharts/es6/shape/Curve.js","webpack://strava-active/./node_modules/recharts/es6/component/LabelList.js","webpack://strava-active/./node_modules/recharts/es6/cartesian/Line.js","webpack://strava-active/./node_modules/recharts/es6/cartesian/Area.js","webpack://strava-active/./node_modules/recharts/es6/shape/Rectangle.js","webpack://strava-active/./node_modules/recharts/es6/component/Cell.js","webpack://strava-active/./node_modules/recharts/es6/cartesian/Bar.js","webpack://strava-active/./node_modules/recharts/es6/cartesian/XAxis.js","webpack://strava-active/./node_modules/recharts/es6/cartesian/YAxis.js","webpack://strava-active/./node_modules/recharts/es6/shape/Cross.js","webpack://strava-active/./node_modules/recharts/es6/shape/Sector.js","webpack://strava-active/./node_modules/recharts/es6/cartesian/CartesianAxis.js","webpack://strava-active/./node_modules/recharts/es6/util/CssPrefixUtils.js","webpack://strava-active/./node_modules/recharts/es6/cartesian/Brush.js","webpack://strava-active/./node_modules/recharts/es6/cartesian/ReferenceArea.js","webpack://strava-active/./node_modules/recharts/es6/util/DetectReferenceElementsDomain.js","webpack://strava-active/./node_modules/recharts/es6/util/Events.js","webpack://strava-active/./node_modules/recharts/es6/chart/generateCategoricalChart.js","webpack://strava-active/./node_modules/recharts/es6/chart/BarChart.js","webpack://strava-active/./node_modules/recharts/es6/cartesian/ZAxis.js","webpack://strava-active/./node_modules/recharts/es6/cartesian/Scatter.js","webpack://strava-active/./node_modules/recharts/es6/chart/ComposedChart.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_DataView.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_Hash.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_ListCache.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_Map.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_MapCache.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_Promise.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_Set.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_SetCache.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_Stack.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_Symbol.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_Uint8Array.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_WeakMap.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_apply.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_arrayEvery.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_arrayFilter.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_arrayIncludes.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_arrayIncludesWith.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_arrayLikeKeys.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_arrayMap.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_arrayPush.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_arraySome.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_assocIndexOf.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseAssignValue.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseEach.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseEvery.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseExtremum.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseFindIndex.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseFlatten.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseFor.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseForOwn.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseGet.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseGetAllKeys.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseGetTag.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseGt.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseHasIn.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseIndexOf.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseIsArguments.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseIsEqual.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseIsEqualDeep.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseIsMatch.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseIsNaN.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseIsNative.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseIsTypedArray.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseIteratee.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseKeys.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseLt.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseMap.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseMatches.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseMatchesProperty.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseOrderBy.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseProperty.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_basePropertyDeep.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseRange.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseRest.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseSetToString.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseSome.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseSortBy.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseTimes.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseToString.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseUnary.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_baseUniq.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_cacheHas.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_castPath.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_compareAscending.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_compareMultiple.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_coreJsData.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_createBaseEach.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_createBaseFor.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_createFind.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_createRange.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_createSet.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_defineProperty.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_equalArrays.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_equalByTag.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_equalObjects.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_freeGlobal.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_getAllKeys.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_getMapData.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_getMatchData.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_getNative.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_getRawTag.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_getSymbols.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_getTag.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_getValue.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_hasPath.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_hashClear.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_hashDelete.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_hashGet.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_hashHas.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_hashSet.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_isFlattenable.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_isIndex.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_isIterateeCall.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_isKey.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_isKeyable.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_isMasked.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_isPrototype.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_isStrictComparable.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_listCacheClear.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_listCacheDelete.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_listCacheGet.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_listCacheHas.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_listCacheSet.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_mapCacheClear.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_mapCacheDelete.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_mapCacheGet.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_mapCacheHas.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_mapCacheSet.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_mapToArray.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_matchesStrictComparable.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_memoizeCapped.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_nativeCreate.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_nativeKeys.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_nodeUtil.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_objectToString.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_overArg.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_overRest.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_root.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_setCacheAdd.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_setCacheHas.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_setToArray.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_setToString.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_shortOut.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_stackClear.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_stackDelete.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_stackGet.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_stackHas.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_stackSet.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_strictIndexOf.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_stringToPath.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_toKey.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/_toSource.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/constant.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/debounce.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/eq.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/every.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/find.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/findIndex.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/flatMap.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/get.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/hasIn.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/identity.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/isArguments.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/isArray.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/isArrayLike.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/isBuffer.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/isEqual.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/isFunction.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/isLength.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/isNaN.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/isNil.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/isNumber.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/isObject.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/isObjectLike.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/isString.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/isSymbol.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/isTypedArray.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/keys.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/last.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/map.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/mapValues.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/max.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/memoize.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/min.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/noop.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/now.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/property.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/range.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/some.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/sortBy.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/stubArray.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/stubFalse.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/throttle.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/toFinite.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/toInteger.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/toNumber.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/toString.js","webpack://strava-active/./node_modules/recharts/node_modules/lodash/uniqBy.js","webpack://strava-active/./node_modules/recharts/node_modules/prop-types/factoryWithThrowingShims.js","webpack://strava-active/./node_modules/recharts/node_modules/prop-types/index.js","webpack://strava-active/./node_modules/recharts/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://strava-active/./node_modules/reduce-css-calc/index.js","webpack://strava-active/./node_modules/reduce-css-calc/node_modules/balanced-match/index.js","webpack://strava-active/./node_modules/reduce-function-call/index.js","webpack://strava-active/./node_modules/redux-thunk/es/index.js","webpack://strava-active/./node_modules/redux/es/redux.js","webpack://strava-active/./node_modules/regexp.prototype.flags/implementation.js","webpack://strava-active/./node_modules/regexp.prototype.flags/index.js","webpack://strava-active/./node_modules/regexp.prototype.flags/polyfill.js","webpack://strava-active/./node_modules/regexp.prototype.flags/shim.js","webpack://strava-active/./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack://strava-active/./node_modules/ripemd160/index.js","webpack://strava-active/./node_modules/safe-buffer/index.js","webpack://strava-active/./node_modules/safer-buffer/safer.js","webpack://strava-active/./node_modules/sha.js/hash.js","webpack://strava-active/./node_modules/sha.js/index.js","webpack://strava-active/./node_modules/sha.js/sha.js","webpack://strava-active/./node_modules/sha.js/sha1.js","webpack://strava-active/./node_modules/sha.js/sha224.js","webpack://strava-active/./node_modules/sha.js/sha256.js","webpack://strava-active/./node_modules/sha.js/sha384.js","webpack://strava-active/./node_modules/sha.js/sha512.js","webpack://strava-active/./node_modules/shallowequal/index.js","webpack://strava-active/./node_modules/stream-browserify/index.js","webpack://strava-active/./node_modules/string_decoder/lib/string_decoder.js","webpack://strava-active/./node_modules/symbol-observable/es/index.js","webpack://strava-active/./node_modules/symbol-observable/es/ponyfill.js","webpack://strava-active/./node_modules/throttle-debounce/index.umd.js","webpack://strava-active/./node_modules/tiny-invariant/dist/tiny-invariant.esm.js","webpack://strava-active/./node_modules/util-deprecate/browser.js","webpack://strava-active/./node_modules/underscore/underscore-umd-min.js"],"sourcesContent":["import { forwardRef, createElement } from 'react';\nimport PropTypes from 'prop-types';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar _excluded = [\"as\", \"style\"];\n\n/**\n * VisuallyHidden\n *\n * Provides text for screen readers that is visually hidden.\n * It is the logical opposite of the `aria-hidden` attribute.\n */\nvar VisuallyHidden = /*#__PURE__*/forwardRef(function VisuallyHidden(_ref, ref) {\n var _ref$as = _ref.as,\n Comp = _ref$as === void 0 ? \"span\" : _ref$as,\n _ref$style = _ref.style,\n style = _ref$style === void 0 ? {} : _ref$style,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return /*#__PURE__*/createElement(Comp, _extends({\n ref: ref,\n style: _extends({\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n width: \"1px\",\n // https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n }, style)\n }, props));\n});\n/**\n * @see Docs https://reach.tech/visually-hidden#visuallyhidden-props\n */\n\nif (process.env.NODE_ENV !== \"production\") {\n VisuallyHidden.displayName = \"VisuallyHidden\";\n VisuallyHidden.propTypes = {\n as: PropTypes.any,\n children: PropTypes.node\n };\n} ////////////////////////////////////////////////////////////////////////////////\n\nexport default VisuallyHidden;\nexport { VisuallyHidden };\n","import { canUseDOM } from '../../can-use-dom/dist/reach-utils-can-use-dom.esm.js';\n\n/**\n * Get an element's owner document. Useful when components are used in iframes\n * or other environments like dev tools.\n *\n * @param element\n */\n\nfunction getOwnerDocument(element) {\n return canUseDOM() ? element ? element.ownerDocument : document : null;\n}\n/**\n * TODO: Remove in 1.0\n */\n\nfunction getOwnerWindow(element) {\n var ownerDocument = getOwnerDocument(element);\n return ownerDocument ? ownerDocument.defaultView || window : null;\n}\n\nexport { getOwnerDocument, getOwnerWindow };\n","function canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n}\n\nexport { canUseDOM };\n","import { useCallback } from 'react';\nimport { isFunction } from '../../type-check/dist/reach-utils-type-check.esm.js';\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n it = o[Symbol.iterator]();\n return it.next.bind(it);\n}\n\n/**\n * Passes or assigns an arbitrary value to a ref function or object.\n *\n * @param ref\n * @param value\n */\nfunction assignRef(ref, value) {\n if (ref == null) return;\n\n if (isFunction(ref)) {\n ref(value);\n } else {\n try {\n ref.current = value;\n } catch (error) {\n throw new Error(\"Cannot assign value \\\"\" + value + \"\\\" to ref \\\"\" + ref + \"\\\"\");\n }\n }\n}\n/**\n * Passes or assigns a value to multiple refs (typically a DOM node). Useful for\n * dealing with components that need an explicit ref for DOM calculations but\n * also forwards refs assigned by an app.\n *\n * @param refs Refs to fork\n */\n\nfunction useComposedRefs() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n\n return useCallback(function (node) {\n for (var _iterator = _createForOfIteratorHelperLoose(refs), _step; !(_step = _iterator()).done;) {\n var ref = _step.value;\n assignRef(ref, node);\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n }, refs);\n}\n\nexport { assignRef, useComposedRefs };\n","/**\n * Checks whether or not a value is a boolean.\n *\n * @param value\n */\nfunction isBoolean(value) {\n return typeof value === \"boolean\";\n}\n/**\n * Checks whether or not a value is a function.\n *\n * @param value\n */\n\nfunction isFunction(value) {\n // eslint-disable-next-line eqeqeq\n return !!(value && {}.toString.call(value) == \"[object Function]\");\n}\n/**\n * Checks whether or not a value is a number.\n *\n * @param value\n */\n\nfunction isNumber(value) {\n return typeof value === \"number\" && !isNaN(value);\n}\n/**\n * Checks whether or not a value is a string.\n *\n * @param value\n */\n\nfunction isString(value) {\n return typeof value === \"string\";\n}\n\nexport { isBoolean, isFunction, isNumber, isString };\n","import { forwardRef, useRef, useMemo, createElement, useEffect, cloneElement } from 'react';\nimport { render } from 'react-dom';\nimport { VisuallyHidden } from '@reach/visually-hidden';\nimport { usePrevious } from '@reach/utils/use-previous';\nimport { getOwnerDocument } from '@reach/utils/owner-document';\nimport { useComposedRefs } from '@reach/utils/compose-refs';\nimport PropTypes from 'prop-types';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar _excluded = [\"as\", \"children\", \"type\"];\n\n/*\n * Singleton state is fine because you don't server render\n * an alert (SRs don't read them on first load anyway)\n */\nvar keys = {\n polite: -1,\n assertive: -1\n};\nvar elements = {\n polite: {},\n assertive: {}\n};\nvar liveRegions = {\n polite: null,\n assertive: null\n};\nvar renderTimer; ////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Alert\n *\n * Screen-reader-friendly alert messages. In many apps developers add \"alert\"\n * messages when network events or other things happen. Users with assistive\n * technologies may not know about the message unless you develop for it.\n *\n * @see Docs https://reach.tech/alert\n */\n\nvar Alert = /*#__PURE__*/forwardRef(function Alert(_ref, forwardedRef) {\n var _ref$as = _ref.as,\n Comp = _ref$as === void 0 ? \"div\" : _ref$as,\n children = _ref.children,\n _ref$type = _ref.type,\n regionType = _ref$type === void 0 ? \"polite\" : _ref$type,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var ownRef = useRef(null);\n var ref = useComposedRefs(forwardedRef, ownRef);\n var child = useMemo(function () {\n return /*#__PURE__*/createElement(Comp, _extends({}, props, {\n ref: ref,\n \"data-reach-alert\": true\n }), children);\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [children, props]);\n useMirrorEffects(regionType, child, ownRef);\n return child;\n});\n/**\n * @see Docs https://reach.tech/alert#alert-props\n */\n\nif (process.env.NODE_ENV !== \"production\") {\n Alert.displayName = \"Alert\";\n Alert.propTypes = {\n children: PropTypes.node,\n type: /*#__PURE__*/PropTypes.oneOf([\"assertive\", \"polite\"])\n };\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nfunction createMirror(type, doc) {\n var key = ++keys[type];\n\n var mount = function mount(element) {\n if (liveRegions[type]) {\n elements[type][key] = element;\n renderAlerts();\n } else {\n var node = doc.createElement(\"div\");\n node.setAttribute(\"data-reach-live-\" + type, \"true\");\n liveRegions[type] = node;\n doc.body.appendChild(liveRegions[type]);\n mount(element);\n }\n };\n\n var update = function update(element) {\n elements[type][key] = element;\n renderAlerts();\n };\n\n var unmount = function unmount() {\n delete elements[type][key];\n renderAlerts();\n };\n\n return {\n mount: mount,\n update: update,\n unmount: unmount\n };\n}\n\nfunction renderAlerts() {\n if (renderTimer != null) {\n window.clearTimeout(renderTimer);\n }\n\n renderTimer = window.setTimeout(function () {\n Object.keys(elements).forEach(function (elementType) {\n var regionType = elementType;\n var container = liveRegions[regionType];\n\n if (container) {\n render( /*#__PURE__*/createElement(VisuallyHidden, {\n as: \"div\"\n }, /*#__PURE__*/createElement(\"div\", {\n // The status role is a type of live region and a container whose\n // content is advisory information for the user that is not\n // important enough to justify an alert, and is often presented as\n // a status bar. When the role is added to an element, the browser\n // will send out an accessible status event to assistive\n // technology products which can then notify the user about it.\n // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_status_role\n role: regionType === \"assertive\" ? \"alert\" : \"status\",\n \"aria-live\": regionType\n }, Object.keys(elements[regionType]).map(function (key) {\n return /*#__PURE__*/cloneElement(elements[regionType][key], {\n key: key,\n ref: null\n });\n }))), liveRegions[regionType]);\n }\n });\n }, 500);\n}\n\nfunction useMirrorEffects(regionType, element, ref) {\n var prevType = usePrevious(regionType);\n var mirror = useRef(null);\n var mounted = useRef(false);\n useEffect(function () {\n var ownerDocument = getOwnerDocument(ref.current);\n\n if (!mounted.current) {\n mounted.current = true;\n mirror.current = createMirror(regionType, ownerDocument);\n mirror.current.mount(element);\n } else if (prevType !== regionType) {\n mirror.current && mirror.current.unmount();\n mirror.current = createMirror(regionType, ownerDocument);\n mirror.current.mount(element);\n } else {\n mirror.current && mirror.current.update(element);\n }\n }, [element, regionType, prevType, ref]);\n useEffect(function () {\n return function () {\n mirror.current && mirror.current.unmount();\n };\n }, []);\n} ////////////////////////////////////////////////////////////////////////////////\n\nexport default Alert;\nexport { Alert };\n","import { useRef, useEffect } from 'react';\n\n/**\n * Returns the previous value of a reference after a component update.\n *\n * @param value\n */\n\nfunction usePrevious(value) {\n var ref = useRef(null);\n useEffect(function () {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nexport { usePrevious };\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/*\n *\n * Client Encryption of Forms.\n *\n * Includes: \n * * RSA and ECC in JavaScript | http://www-cs-students.stanford.edu/~tjw/jsbn/\n * * Stanford Javascript Crypto Library | http://crypto.stanford.edu/sjcl/\n * * JSON in JavaScript | http://www.JSON.org/\n * \n * Version: 0_1_19\n * Author: ADYEN (c) 2014\n\n\n\n \n Example Payment Form\n \n \n \n \n \n \n
\n \n \n
\n \n\n \n \n \n \n \n \n \n\n\n *\n */\n\n( function (root, fnDefine) {\n \n // Prevent libraries to die on AMD patterns\n var define, exports, df = function() {return \"\";};\n\n /* typedarray.js */\n (function(){try{var b=[new Uint8Array(1),new Uint32Array(1),new Int32Array(1)];return}catch(g){}function f(e,a){return this.slice(e,a)}function c(j,e){if(arguments.length<2){e=0}for(var a=0,h=j.length;a>2,c=((l&3)<<4)|(k>>4);var o=g+1>6):64;var m=g+2>6)+b64map.charAt(e&63)}if(b+1==d.length){e=parseInt(d.substring(b,b+1),16);a+=b64map.charAt(e<<2)}else{if(b+2==d.length){e=parseInt(d.substring(b,b+2),16);a+=b64map.charAt(e>>2)+b64map.charAt((e&3)<<4)}}while((a.length&3)>0){a+=b64padchar}return a}function b64tohex(e){var c=\"\";var d;var a=0;var b;for(d=0;d>2);b=v&3;a=1}else{if(a==1){c+=int2char((b<<2)|(v>>4));b=v&15;a=2}else{if(a==2){c+=int2char(b);c+=int2char(v>>2);b=v&3;a=3}else{c+=int2char((b<<2)|(v>>4));c+=int2char(v&15);a=0}}}}if(a==1){c+=int2char(b<<2)}return c}function b64toBA(e){var d=b64tohex(e);var c;var b=new Array();for(c=0;2*c=0){var d=a*this[f++]+b[e]+h;h=Math.floor(d/67108864);b[e++]=d&67108863}return h}function am2(f,q,r,e,o,a){var k=q&32767,p=q>>15;while(--a>=0){var d=this[f]&32767;var g=this[f++]>>15;var b=p*d+g*k;d=k*d+((b&32767)<<15)+r[e]+(o&1073741823);o=(d>>>30)+(b>>>15)+p*g+(o>>>30);r[e++]=d&1073741823}return o}function am3(f,q,r,e,o,a){var k=q&16383,p=q>>14;while(--a>=0){var d=this[f]&16383;var g=this[f++]>>14;var b=p*d+g*k;d=k*d+((b&16383)<<14)+r[e]+o;o=(d>>28)+(b>>14)+p*g;r[e++]=d&268435455}return o}if(j_lm&&(navigator.appName==\"Microsoft Internet Explorer\")){BigInteger.prototype.am=am2;dbits=30}else{if(j_lm&&(navigator.appName!=\"Netscape\")){BigInteger.prototype.am=am1;dbits=26}else{BigInteger.prototype.am=am3;dbits=28}}BigInteger.prototype.DB=dbits;BigInteger.prototype.DM=((1<=0;--a){b[a]=this[a]}b.t=this.t;b.s=this.s}function bnpFromInt(a){this.t=1;this.s=(a<0)?-1:0;if(a>0){this[0]=a}else{if(a<-1){this[0]=a+this.DV}else{this.t=0}}}function nbv(a){var b=nbi();b.fromInt(a);return b}function bnpFromString(h,c){var e;if(c==16){e=4}else{if(c==8){e=3}else{if(c==256){e=8}else{if(c==2){e=1}else{if(c==32){e=5}else{if(c==4){e=2}else{this.fromRadix(h,c);return}}}}}}this.t=0;this.s=0;var g=h.length,d=false,f=0;while(--g>=0){var a=(e==8)?h[g]&255:intAt(h,g);if(a<0){if(h.charAt(g)==\"-\"){d=true}continue}d=false;if(f==0){this[this.t++]=a}else{if(f+e>this.DB){this[this.t-1]|=(a&((1<<(this.DB-f))-1))<>(this.DB-f))}else{this[this.t-1]|=a<=this.DB){f-=this.DB}}if(e==8&&(h[0]&128)!=0){this.s=-1;if(f>0){this[this.t-1]|=((1<<(this.DB-f))-1)<0&&this[this.t-1]==a){--this.t}}function bnToString(c){if(this.s<0){return\"-\"+this.negate().toString(c)}var e;if(c==16){e=4}else{if(c==8){e=3}else{if(c==2){e=1}else{if(c==32){e=5}else{if(c==4){e=2}else{return this.toRadix(c)}}}}}var g=(1<0){if(j>j)>0){a=true;h=int2char(l)}while(f>=0){if(j>(j+=this.DB-e)}else{l=(this[f]>>(j-=e))&g;if(j<=0){j+=this.DB;--f}}if(l>0){a=true}if(a){h+=int2char(l)}}}return a?h:\"0\"}function bnNegate(){var a=nbi();BigInteger.ZERO.subTo(this,a);return a}function bnAbs(){return(this.s<0)?this.negate():this}function bnCompareTo(b){var d=this.s-b.s;if(d!=0){return d}var c=this.t;d=c-b.t;if(d!=0){return(this.s<0)?-d:d}while(--c>=0){if((d=this[c]-b[c])!=0){return d}}return 0}function nbits(a){var c=1,b;if((b=a>>>16)!=0){a=b;c+=16}if((b=a>>8)!=0){a=b;c+=8}if((b=a>>4)!=0){a=b;c+=4}if((b=a>>2)!=0){a=b;c+=2}if((b=a>>1)!=0){a=b;c+=1}return c}function bnBitLength(){if(this.t<=0){return 0}return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM))}function bnpDLShiftTo(c,b){var a;for(a=this.t-1;a>=0;--a){b[a+c]=this[a]}for(a=c-1;a>=0;--a){b[a]=0}b.t=this.t+c;b.s=this.s}function bnpDRShiftTo(c,b){for(var a=c;a=0;--d){e[d+f+1]=(this[d]>>a)|h;h=(this[d]&g)<=0;--d){e[d]=0}e[f]=h;e.t=this.t+f+1;e.s=this.s;e.clamp()}function bnpRShiftTo(g,d){d.s=this.s;var e=Math.floor(g/this.DB);if(e>=this.t){d.t=0;return}var b=g%this.DB;var a=this.DB-b;var f=(1<>b;for(var c=e+1;c>b}if(b>0){d[this.t-e-1]|=(this.s&f)<>=this.DB}if(d.t>=this.DB}g+=this.s}else{g+=this.s;while(e>=this.DB}g-=d.s}f.s=(g<0)?-1:0;if(g<-1){f[e++]=this.DV+g}else{if(g>0){f[e++]=g}}f.t=e;f.clamp()}function bnpMultiplyTo(c,e){var b=this.abs(),f=c.abs();var d=b.t;e.t=d+f.t;while(--d>=0){e[d]=0}for(d=0;d=0){d[b]=0}for(b=0;b=a.DV){d[b+a.t]-=a.DV;d[b+a.t+1]=1}}if(d.t>0){d[d.t-1]+=a.am(b,a[b],d,2*b,0,1)}d.s=0;d.clamp()}function bnpDivRemTo(n,h,g){var w=n.abs();if(w.t<=0){return}var k=this.abs();if(k.t0){w.lShiftTo(v,d);k.lShiftTo(v,g)}else{w.copyTo(d);k.copyTo(g)}var p=d.t;var b=d[p-1];if(b==0){return}var o=b*(1<1)?d[p-2]>>this.F2:0);var A=this.FV/o,z=(1<=0){g[g.t++]=1;g.subTo(f,g)}BigInteger.ONE.dlShiftTo(p,f);f.subTo(d,d);while(d.t=0){var c=(g[--u]==b)?this.DM:Math.floor(g[u]*A+(g[u-1]+x)*z);if((g[u]+=d.am(0,c,g,s,0,p))0){g.rShiftTo(v,g)}if(a<0){BigInteger.ZERO.subTo(g,g)}}function bnMod(b){var c=nbi();this.abs().divRemTo(b,null,c);if(this.s<0&&c.compareTo(BigInteger.ZERO)>0){b.subTo(c,c)}return c}function Classic(a){this.m=a}function cConvert(a){if(a.s<0||a.compareTo(this.m)>=0){return a.mod(this.m)}else{return a}}function cRevert(a){return a}function cReduce(a){a.divRemTo(this.m,null,a)}function cMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}function cSqrTo(a,b){a.squareTo(b);this.reduce(b)}Classic.prototype.convert=cConvert;Classic.prototype.revert=cRevert;Classic.prototype.reduce=cReduce;Classic.prototype.mulTo=cMulTo;Classic.prototype.sqrTo=cSqrTo;function bnpInvDigit(){if(this.t<1){return 0}var a=this[0];if((a&1)==0){return 0}var b=a&3;b=(b*(2-(a&15)*b))&15;b=(b*(2-(a&255)*b))&255;b=(b*(2-(((a&65535)*b)&65535)))&65535;b=(b*(2-a*b%this.DV))%this.DV;return(b>0)?this.DV-b:-b}function Montgomery(a){this.m=a;this.mp=a.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<<(a.DB-15))-1;this.mt2=2*a.t}function montConvert(a){var b=nbi();a.abs().dlShiftTo(this.m.t,b);b.divRemTo(this.m,null,b);if(a.s<0&&b.compareTo(BigInteger.ZERO)>0){this.m.subTo(b,b)}return b}function montRevert(a){var b=nbi();a.copyTo(b);this.reduce(b);return b}function montReduce(a){while(a.t<=this.mt2){a[a.t++]=0}for(var c=0;c>15)*this.mpl)&this.um)<<15))&a.DM;b=c+this.m.t;a[b]+=this.m.am(0,d,a,c,0,this.m.t);while(a[b]>=a.DV){a[b]-=a.DV;a[++b]++}}a.clamp();a.drShiftTo(this.m.t,a);if(a.compareTo(this.m)>=0){a.subTo(this.m,a)}}function montSqrTo(a,b){a.squareTo(b);this.reduce(b)}function montMulTo(a,c,b){a.multiplyTo(c,b);this.reduce(b)}Montgomery.prototype.convert=montConvert;Montgomery.prototype.revert=montRevert;Montgomery.prototype.reduce=montReduce;Montgomery.prototype.mulTo=montMulTo;Montgomery.prototype.sqrTo=montSqrTo;function bnpIsEven(){return((this.t>0)?(this[0]&1):this.s)==0}function bnpExp(h,j){if(h>4294967295||h<1){return BigInteger.ONE}var f=nbi(),a=nbi(),d=j.convert(this),c=nbits(h)-1;d.copyTo(f);while(--c>=0){j.sqrTo(f,a);if((h&(1<0){j.mulTo(a,d,f)}else{var b=f;f=a;a=b}}return j.revert(f)}function bnModPowInt(b,a){var c;if(b<256||a.isEven()){c=new Classic(a)}else{c=new Montgomery(a)}return this.exp(b,c)}BigInteger.prototype.copyTo=bnpCopyTo;BigInteger.prototype.fromInt=bnpFromInt;BigInteger.prototype.fromString=bnpFromString;BigInteger.prototype.clamp=bnpClamp;BigInteger.prototype.dlShiftTo=bnpDLShiftTo;BigInteger.prototype.drShiftTo=bnpDRShiftTo;BigInteger.prototype.lShiftTo=bnpLShiftTo;BigInteger.prototype.rShiftTo=bnpRShiftTo;BigInteger.prototype.subTo=bnpSubTo;BigInteger.prototype.multiplyTo=bnpMultiplyTo;BigInteger.prototype.squareTo=bnpSquareTo;BigInteger.prototype.divRemTo=bnpDivRemTo;BigInteger.prototype.invDigit=bnpInvDigit;BigInteger.prototype.isEven=bnpIsEven;BigInteger.prototype.exp=bnpExp;BigInteger.prototype.toString=bnToString;BigInteger.prototype.negate=bnNegate;BigInteger.prototype.abs=bnAbs;BigInteger.prototype.compareTo=bnCompareTo;BigInteger.prototype.bitLength=bnBitLength;BigInteger.prototype.mod=bnMod;BigInteger.prototype.modPowInt=bnModPowInt;BigInteger.ZERO=nbv(0);BigInteger.ONE=nbv(1);\n\n /* prng4.js */\n function Arcfour(){this.i=0;this.j=0;this.S=new Array}function ARC4init(c){var a,d,b;for(a=0;a<256;++a){this.S[a]=a}d=0;for(a=0;a<256;++a){d=d+this.S[a]+c[a%c.length]&255;b=this.S[a];this.S[a]=this.S[d];this.S[d]=b}this.i=0;this.j=0}function ARC4next(){var a;this.i=this.i+1&255;this.j=this.j+this.S[this.i]&255;a=this.S[this.i];this.S[this.i]=this.S[this.j];this.S[this.j]=a;return this.S[a+this.S[this.i]&255]}function prng_newstate(){return new Arcfour}Arcfour.prototype.init=ARC4init;Arcfour.prototype.next=ARC4next;var rng_psize=256;\n\n /* rng.js */\n var rng_state;var rng_pool;var rng_pptr;function rng_seed_int(a){rng_pool[rng_pptr++]^=a&255;rng_pool[rng_pptr++]^=(a>>8)&255;rng_pool[rng_pptr++]^=(a>>16)&255;rng_pool[rng_pptr++]^=(a>>24)&255;if(rng_pptr>=rng_psize){rng_pptr-=rng_psize}}function rng_seed_time(){rng_seed_int(new Date().getTime())}if(rng_pool==null){rng_pool=[];rng_pptr=0;var t;try{if(window.crypto&&window.crypto.getRandomValues){var ua=new Uint8Array(32);window.crypto.getRandomValues(ua);for(t=0;t<32;++t){rng_pool[rng_pptr++]=ua[t]}}else{if(window.msCrypto&&window.msCrypto.getRandomValues){var ua=new Uint8Array(32);window.msCrypto.getRandomValues(ua);for(t=0;t<32;++t){rng_pool[rng_pptr++]=ua[t]}}else{if(window.crypto&&window.crypto.random){var z=window.crypto.random(32);for(t=0;t>>8;rng_pool[rng_pptr++]=t&255}rng_pptr=0;rng_seed_time()}function rng_get_byte(){if(rng_state==null){rng_seed_time();rng_state=prng_newstate();rng_state.init(rng_pool);for(rng_pptr=0;rng_pptr=0&&g>0){f[--g]=c[e--]}f[--g]=0;var d=new SecureRandom();var a=new Array();while(g>2){a[0]=0;while(a[0]==0){d.nextBytes(a)}f[--g]=a[0]}f[--g]=2;f[--g]=0;return new BigInteger(f)}function RSAKey(){this.n=null;this.e=0;this.d=null;this.p=null;this.q=null;this.dmp1=null;this.dmq1=null;this.coeff=null}function RSASetPublic(b,a){if(b!=null&&a!=null&&b.length>0&&a.length>0){this.n=parseBigInt(b,16);this.e=parseInt(a,16)}else{alert(\"Invalid RSA public key\")}}function RSADoPublic(a){return a.modPowInt(this.e,this.n)}function RSAEncrypt(b){var a=pkcs1pad2(b,(this.n.bitLength()+7)>>3);if(a==null){return null}var e=this.doPublic(a);if(e==null){return null}var d=e.toString(16);if((d.length&1)==0){return d}else{return\"0\"+d}}function RSAEncryptB64(a){var b=this.encrypt(a);if(b){return hex2b64(b)}else{return null}}RSAKey.prototype.doPublic=RSADoPublic;RSAKey.prototype.setPublic=RSASetPublic;RSAKey.prototype.encrypt=RSAEncrypt;RSAKey.prototype.encrypt_b64=RSAEncryptB64;\n\n /* sjcl.js */\n \"use strict\";function q(b){throw b}var t=void 0,u=!1;var sjcl={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(b){this.toString=function(){return\"CORRUPT: \"+this.message};this.message=b},invalid:function(b){this.toString=function(){return\"INVALID: \"+this.message};this.message=b},bug:function(b){this.toString=function(){return\"BUG: \"+this.message};this.message=b},notReady:function(b){this.toString=function(){return\"NOT READY: \"+this.message};this.message=b}}};\"undefined\"!==typeof module&&module.exports&&(module.exports=sjcl);\"function\"===typeof define&&define([],function(){return sjcl});sjcl.cipher.aes=function(j){this.k[0][0][0]||this.D();var i,p,o,n,m=this.k[0][4],l=this.k[1];i=j.length;var k=1;4!==i&&(6!==i&&8!==i)&&q(new sjcl.exception.invalid(\"invalid aes key size\"));this.b=[o=j.slice(0),n=[]];for(j=i;j<4*i+28;j++){p=o[j-1];if(0===j%i||8===i&&4===j%i){p=m[p>>>24]<<24^m[p>>16&255]<<16^m[p>>8&255]<<8^m[p&255],0===j%i&&(p=p<<8^p>>>24^k<<24,k=k<<1^283*(k>>7))}o[j]=o[j-i]^p}for(i=0;j;i++,j--){p=o[i&3?j:j-4],n[i]=4>=j||4>i?p:l[0][m[p>>>24]]^l[1][m[p>>16&255]]^l[2][m[p>>8&255]]^l[3][m[p&255]]}};sjcl.cipher.aes.prototype={encrypt:function(b){return y(this,b,0)},decrypt:function(b){return y(this,b,1)},k:[[[],[],[],[],[]],[[],[],[],[],[]]],D:function(){var R=this.k[0],Q=this.k[1],P=R[4],O=Q[4],N,x,w,v=[],r=[],s,j,o,i;for(N=0;256>N;N++){r[(v[N]=N<<1^283*(N>>7))^N]=N}for(x=w=0;!P[x];x^=s||1,w=r[w]||1){o=w^w<<1^w<<2^w<<3^w<<4;o=o>>8^o&255^99;P[x]=o;O[o]=x;j=v[N=v[s=v[x]]];i=16843009*j^65537*N^257*s^16843008*x;j=257*v[o]^16843008*o;for(N=0;4>N;N++){R[N][x]=j=j<<24^j>>>8,Q[N][o]=i=i<<24^i>>>8}}for(N=0;5>N;N++){R[N]=R[N].slice(0),Q[N]=Q[N].slice(0)}}};function y(ab,aa,Z){4!==aa.length&&q(new sjcl.exception.invalid(\"invalid aes block size\"));var Y=ab.b[Z],X=aa[0]^Y[0],W=aa[Z?3:1]^Y[1],V=aa[2]^Y[2];aa=aa[Z?1:3]^Y[3];var U,S,T,Q=Y.length/4-2,R,P=4,N=[0,0,0,0];U=ab.k[Z];ab=U[0];var O=U[1],o=U[2],j=U[3],i=U[4];for(R=0;R>>24]^O[W>>16&255]^o[V>>8&255]^j[aa&255]^Y[P],S=ab[W>>>24]^O[V>>16&255]^o[aa>>8&255]^j[X&255]^Y[P+1],T=ab[V>>>24]^O[aa>>16&255]^o[X>>8&255]^j[W&255]^Y[P+2],aa=ab[aa>>>24]^O[X>>16&255]^o[W>>8&255]^j[V&255]^Y[P+3],P+=4,X=U,W=S,V=T}for(R=0;4>R;R++){N[Z?3&-R:R]=i[X>>>24]<<24^i[W>>16&255]<<16^i[V>>8&255]<<8^i[aa&255]^Y[P++],U=X,X=W,W=V,V=aa,aa=U}return N}sjcl.bitArray={bitSlice:function(e,d,f){e=sjcl.bitArray.P(e.slice(d/32),32-(d&31)).slice(1);return f===t?e:sjcl.bitArray.clamp(e,f-d)},extract:function(f,e,h){var g=Math.floor(-e-h&31);return((e+h-1^e)&-32?f[e/32|0]<<32-g^f[e/32+1|0]>>>g:f[e/32|0]>>>g)&(1<>d-1,1));return e},partial:function(e,d,f){return 32===e?d:(f?d|0:d<<32-e)+1099511627776*e},getPartial:function(b){return Math.round(b/1099511627776)||32},equal:function(f,e){if(sjcl.bitArray.bitLength(f)!==sjcl.bitArray.bitLength(e)){return u}var h=0,g;for(g=0;g>>f),j=g[h]<<32-f}h=g.length?g[g.length-1]:0;g=sjcl.bitArray.getPartial(h);i.push(sjcl.bitArray.partial(f+g&31,32>>24|f>>>8&65280|(f&65280)<<8|f<<24}return e}};sjcl.codec.utf8String={fromBits:function(g){var f=\"\",j=sjcl.bitArray.bitLength(g),i,h;for(i=0;i>>24),h<<=8}return decodeURIComponent(escape(f))},toBits:function(f){f=unescape(encodeURIComponent(f));var e=[],h,g=0;for(h=0;h>>n)>>>26),6>n?(l=j[p]<<6-n,n+=26,p++):(l<<=6,n-=6)}for(;o.length&3&&!i;){o+=\"=\"}return o},toBits:function(j,i){j=j.replace(/\\s|=/g,\"\");var p=[],o,n=0,m=sjcl.codec.base64.J,l=0,k;i&&(m=m.substr(0,62)+\"-_\");for(o=0;ok&&q(new sjcl.exception.invalid(\"this isn't base64!\")),26>>n),l=k<<32-n):(n+=6,l^=k<<32-n)}n&56&&p.push(sjcl.bitArray.partial(n&56,l,1));return p}};sjcl.codec.base64url={fromBits:function(b){return sjcl.codec.base64.fromBits(b,1,1)},toBits:function(b){return sjcl.codec.base64.toBits(b,1)}};sjcl.hash.sha256=function(b){this.b[0]||this.D();b?(this.r=b.r.slice(0),this.o=b.o.slice(0),this.h=b.h):this.reset()};sjcl.hash.sha256.hash=function(b){return(new sjcl.hash.sha256).update(b).finalize()};sjcl.hash.sha256.prototype={blockSize:512,reset:function(){this.r=this.N.slice(0);this.o=[];this.h=0;return this},update:function(e){\"string\"===typeof e&&(e=sjcl.codec.utf8String.toBits(e));var d,f=this.o=sjcl.bitArray.concat(this.o,e);d=this.h;e=this.h=d+sjcl.bitArray.bitLength(e);for(d=512+d&-512;d<=e;d+=512){z(this,f.splice(0,16))}return this},finalize:function(){var e,d=this.o,f=this.r,d=sjcl.bitArray.concat(d,[sjcl.bitArray.partial(1,1)]);for(e=d.length+2;e&15;e++){d.push(0)}d.push(Math.floor(this.h/4294967296));for(d.push(this.h|0);d.length;){z(this,d.splice(0,16))}this.reset();return f},N:[],b:[],D:function(){function f(b){return 4294967296*(b-Math.floor(b))|0}var e=0,h=2,g;f:for(;64>e;h++){for(g=2;g*g<=h;g++){if(0===h%g){continue f}}8>e&&(this.N[e]=f(Math.pow(h,0.5)));this.b[e]=f(Math.pow(h,1/3));e++}}};function z(V,U){var T,S,R,Q=U.slice(0),P=V.r,O=V.b,x=P[0],N=P[1],o=P[2],w=P[3],j=P[4],X=P[5],i=P[6],W=P[7];for(T=0;64>T;T++){16>T?S=Q[T]:(S=Q[T+1&15],R=Q[T+14&15],S=Q[T&15]=(S>>>7^S>>>18^S>>>3^S<<25^S<<14)+(R>>>17^R>>>19^R>>>10^R<<15^R<<13)+Q[T&15]+Q[T+9&15]|0),S=S+W+(j>>>6^j>>>11^j>>>25^j<<26^j<<21^j<<7)+(i^j&(X^i))+O[T],W=i,i=X,X=j,j=w+S|0,w=o,o=N,N=x,x=S+(N&o^w&(N^o))+(N>>>2^N>>>13^N>>>22^N<<30^N<<19^N<<10)|0}P[0]=P[0]+x|0;P[1]=P[1]+N|0;P[2]=P[2]+o|0;P[3]=P[3]+w|0;P[4]=P[4]+j|0;P[5]=P[5]+X|0;P[6]=P[6]+i|0;P[7]=P[7]+W|0}sjcl.mode.ccm={name:\"ccm\",encrypt:function(w,v,s,r,p){var o,n=v.slice(0),m=sjcl.bitArray,i=m.bitLength(s)/8,j=m.bitLength(n)/8;p=p||64;r=r||[];7>i&&q(new sjcl.exception.invalid(\"ccm: iv must be at least 7 bytes\"));for(o=2;4>o&&j>>>8*o;o++){}o<15-i&&(o=15-i);s=m.clamp(s,8*(15-o));v=sjcl.mode.ccm.L(w,v,s,r,p,o);n=sjcl.mode.ccm.p(w,n,s,v,p,o);return m.concat(n.data,n.tag)},decrypt:function(w,v,s,r,p){p=p||64;r=r||[];var o=sjcl.bitArray,n=o.bitLength(s)/8,m=o.bitLength(v),i=o.clamp(v,m-p),j=o.bitSlice(v,m-p),m=(m-p)/8;7>n&&q(new sjcl.exception.invalid(\"ccm: iv must be at least 7 bytes\"));for(v=2;4>v&&m>>>8*v;v++){}v<15-n&&(v=15-n);s=o.clamp(s,8*(15-v));i=sjcl.mode.ccm.p(w,i,s,j,p,v);w=sjcl.mode.ccm.L(w,i.data,s,r,p,v);o.equal(i.tag,w)||q(new sjcl.exception.corrupt(\"ccm: tag doesn't match\"));return i.data},L:function(s,r,p,o,n,m){var k=[],j=sjcl.bitArray,i=j.l;n/=8;(n%2||4>n||16=p?k=[j.partial(16,p)]:4294967295>=p&&(k=j.concat([j.partial(16,65534)],[p]));k=j.concat(k,o);for(o=0;on.bitLength(p)&&(k=m(k,o(k)),p=n.concat(p,[-2147483648,0,0,0]));l=m(l,p);return j.encrypt(m(o(m(k,o(k))),l))},H:function(b){return[b[0]<<1^b[1]>>>31,b[1]<<1^b[2]>>>31,b[2]<<1^b[3]>>>31,b[3]<<1^135*(b[0]>>>31)]}};sjcl.mode.gcm={name:\"gcm\",encrypt:function(h,g,l,k,j){var i=g.slice(0);g=sjcl.bitArray;k=k||[];h=sjcl.mode.gcm.p(!0,h,i,k,l,j||128);return g.concat(h.data,h.tag)},decrypt:function(j,i,p,o,n){var m=i.slice(0),l=sjcl.bitArray,k=l.bitLength(m);n=n||128;o=o||[];n<=k?(i=l.bitSlice(m,k-n),m=l.bitSlice(m,0,k-n)):(i=m,m=[]);j=sjcl.mode.gcm.p(u,j,m,o,p,n);l.equal(j.tag,i)||q(new sjcl.exception.corrupt(\"gcm: tag doesn't match\"));return j.data},Z:function(j,i){var p,o,n,m,l,k=sjcl.bitArray.l;n=[0,0,0,0];m=i.slice(0);for(p=0;128>p;p++){(o=0!==(j[Math.floor(p/32)]&1<<31-p%32))&&(n=k(n,m));l=0!==(m[3]&1);for(o=3;0>>1|(m[o-1]&1)<<31}m[0]>>>=1;l&&(m[0]^=-520093696)}return n},g:function(g,f,j){var i,h=j.length;f=f.slice(0);for(i=0;ih&&(g=f.hash(g));for(i=0;iv||0>w)&&q(sjcl.exception.invalid(\"invalid params to pbkdf2\"));\"string\"===typeof N&&(N=sjcl.codec.utf8String.toBits(N));\"string\"===typeof x&&(x=sjcl.codec.utf8String.toBits(x));s=s||sjcl.misc.hmac;N=new s(N);var r,p,o,j,m=[],i=sjcl.bitArray;for(j=1;32*m.length<(v||1);j++){s=r=N.encrypt(i.concat(x,[j]));for(p=1;pj;j++){l.push(4294967296*Math.random()|0)}for(j=0;j=1<this.j&&(this.j=k);this.F++;this.b=sjcl.hash.sha256.hash(this.b.concat(l));this.A=new sjcl.cipher.aes(this.b);for(m=0;4>m&&!(this.f[m]=this.f[m]+1|0,this.f[m]);m++){}}for(m=0;m>>=1}}}this.c[k].update([o,this.C++,2,r,m,s.length].concat(s))}break;case\"string\":r===t&&(r=s.length);this.c[k].update([o,this.C++,3,r,m,s.length]);this.c[k].update(s);break;default:i=1}i&&q(new sjcl.exception.bug(\"random: addEntropy only supports number, array of numbers or string\"));this.i[k]+=r;this.d+=r;j===this.m&&(this.isReady()!==this.m&&C(\"seeded\",Math.max(this.j,this.d)),C(\"progress\",this.getProgress()))},isReady:function(b){b=this.I[b!==t?b:this.B];return this.j&&this.j>=b?this.i[0]>this.R&&(new Date).valueOf()>this.O?this.u|this.t:this.t:this.d>=b?this.u|this.m:this.m},getProgress:function(b){b=this.I[b?b:this.B];return this.j>=b?1:this.d>b?1:this.d/b},startCollectors:function(){this.q||(this.a={loadTimeCollector:D(this,this.aa),mouseCollector:D(this,this.ba),keyboardCollector:D(this,this.$),accelerometerCollector:D(this,this.U)},window.addEventListener?(window.addEventListener(\"load\",this.a.loadTimeCollector,u),window.addEventListener(\"mousemove\",this.a.mouseCollector,u),window.addEventListener(\"keypress\",this.a.keyboardCollector,u),window.addEventListener(\"devicemotion\",this.a.accelerometerCollector,u)):document.attachEvent?(document.attachEvent(\"onload\",this.a.loadTimeCollector),document.attachEvent(\"onmousemove\",this.a.mouseCollector),document.attachEvent(\"keypress\",this.a.keyboardCollector)):q(new sjcl.exception.bug(\"can't attach event\")),this.q=!0)},stopCollectors:function(){this.q&&(window.removeEventListener?(window.removeEventListener(\"load\",this.a.loadTimeCollector,u),window.removeEventListener(\"mousemove\",this.a.mouseCollector,u),window.removeEventListener(\"keypress\",this.a.keyboardCollector,u),window.removeEventListener(\"devicemotion\",this.a.accelerometerCollector,u)):document.detachEvent&&(document.detachEvent(\"onload\",this.a.loadTimeCollector),document.detachEvent(\"onmousemove\",this.a.mouseCollector),document.detachEvent(\"keypress\",this.a.keyboardCollector)),this.q=u)},addEventListener:function(d,c){this.w[d][this.V++]=c},removeEventListener:function(h,g){var l,k,j=this.w[h],i=[];for(k in j){j.hasOwnProperty(k)&&j[k]===g&&i.push(k)}for(l=0;lc&&!(d.f[c]=d.f[c]+1|0,d.f[c]);c++){}return d.A.encrypt(d.f)}function D(d,c){return function(){c.apply(d,arguments)}}sjcl.random=new sjcl.prng(6);a:try{var F,G,H,I;if(I=\"undefined\"!==typeof module){var J;if(J=module.exports){var K;try{K=require(\"crypto\")}catch(L){K=null}J=(G=K)&&G.randomBytes}I=J}if(I){F=G.randomBytes(128),F=new Uint32Array((new Uint8Array(F)).buffer),sjcl.random.addEntropy(F,1024,\"crypto['randomBytes']\")}else{if(\"undefined\"!==typeof window&&\"undefined\"!==typeof Uint32Array){H=new Uint32Array(32);if(window.crypto&&window.crypto.getRandomValues){window.crypto.getRandomValues(H)}else{if(window.msCrypto&&window.msCrypto.getRandomValues){window.msCrypto.getRandomValues(H)}else{break a}}sjcl.random.addEntropy(H,1024,\"crypto['getRandomValues']\")}}}catch(M){\"undefined\"!==typeof window&&window.console&&(console.log(\"There was an error collecting entropy from the browser:\"),console.log(M))}sjcl.json={defaults:{v:1,iter:1000,ks:128,ts:64,mode:\"ccm\",adata:\"\",cipher:\"aes\"},Y:function(i,h,n,m){n=n||{};m=m||{};var l=sjcl.json,k=l.e({iv:sjcl.random.randomWords(4,0)},l.defaults),j;l.e(k,n);n=k.adata;\"string\"===typeof k.salt&&(k.salt=sjcl.codec.base64.toBits(k.salt));\"string\"===typeof k.iv&&(k.iv=sjcl.codec.base64.toBits(k.iv));(!sjcl.mode[k.mode]||!sjcl.cipher[k.cipher]||\"string\"===typeof i&&100>=k.iter||64!==k.ts&&96!==k.ts&&128!==k.ts||128!==k.ks&&192!==k.ks&&256!==k.ks||2>k.iv.length||4=h.iter||64!==h.ts&&96!==h.ts&&128!==h.ts||128!==h.ks&&192!==h.ks&&256!==h.ks||!h.iv||2>h.iv.length||4>>24);e<<=8}return d};b.toBits=b.toBits||function(c){var d=[],f,e=0;for(f=0;f=48&&i.keyCode<=57||i.keyCode>=96&&i.keyCode<=105){evLog(\"log\",e,\"KN\")}else{if(i.keyCode>=65&&i.keyCode<=90){evLog(\"log\",e,\"KL\")}else{evLog(\"log\",e,\"KU\");evLog(\"log\",e+\"UnkKeys\",i.keyCode)}}break}},true);return}if(j===\"set\"){d[h]=e;return}if(j===\"log\"){var k=h+\"FieldLog\";var f=(new Date().getTime())-a;f=Math.round(f/100);if(!d.hasOwnProperty(k)){d[k]=e+\"@\"+f}else{d[k]+=\",\"+e+\"@\"+f}if(d[k].length>1500){d[k]=d[k].substring(d[k].length-1500);d[k]=d[k].substring(d[k].indexOf(\",\")+1)}return}if(j===\"extend\"){for(var g in d){if(g===\"number\"||g===\"expiryMonth\"||g===\"expiryYear\"||g===\"generationtime\"||g===\"holderName\"||g===\"cvc\"){continue}if(d.hasOwnProperty(g)){h[g]=\"\"+d[g]}}return}if(!d.hasOwnProperty(j)){d[j]=1}else{d[j]++}}})();function b(j){var p=function(){return{}};if(window.jQuery&&typeof window.jQuery._data==\"function\"){p=function(o){return window.jQuery._data(o,\"events\")}}var n=j,d=0,q=[],u=[\"onmousedown\",\"onmouseup\",\"onmouseover\",\"onmouseout\",\"onclick\",\"onmousemove\",\"ondblclick\",\"onerror\",\"onresize\",\"onscroll\",\"onkeydown\",\"onkeyup\",\"onkeypress\",\"onchange\",\"onsubmit\"],k=\"Own\",s=\"Par\",t=u.length;var i=0;while(n&&n!==n.documentElement){i++;var m=t,g,l,h=(n.nodeName||n.tagName||\"\").toUpperCase().substring(0,3);while(m--){g=u[m];if(n[name]){g=g+((n===j)?k:s)+h;d++;q[g]=q[g]||0;q[g]++}}var r=p(n);if(typeof r===\"object\"){for(var g in r){if(r.hasOwnProperty(g)){l=r[g].length;g=g+((n===j)?k:s)+h;q[g]=q[g]||0;q[g]+=l;d+=l}}}if(!n.parentNode){break}n=n.parentNode}var e=[\"total=\"+d];for(var f in q){if(q.hasOwnProperty(f)&&q[f]>0){e.push(f+\"=\"+q[f])}}return e.join(\"&\")}if(window&&(window.attachEvent||window.addEventListener)){c(window,\"focus\",function(){evLog(\"activate\");if(window.location&&typeof window.location.href==\"string\"){evLog(\"set\",\"referrer\",window.location.href)}});c(window,\"blur\",function(){evLog(\"deactivate\")})}}());\n \n /* adyen */\n var adyen = root.adyen = root.adyen || {};\n\n var encrypt = adyen.encrypt = adyen.encrypt || {\n \n createEncryption : function ( key, options ) {\n return new Encryption( key, options );\n }\n };\n \n if (typeof fnDefine === 'function' && fnDefine.amd) {\n fnDefine('adyen/encrypt', [], function() {\n return encrypt;\n });\n } else if (typeof module !== 'undefined' && module.exports) {\n module.exports = encrypt;\n }\n \n \n\n encrypt.errors = encrypt.errors || {};\n \n\n encrypt.version = '0_1_19';\n\n \n\n // Validations\n var validations = {};\n\n /***************************************************************************\n * boolean luhnCheck([String CardNumber]) return true if CardNumber pass the\n * luhn check else return false. Reference:\n * http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl \\\n **************************************************************************/\n validations.luhnCheck = (function() {\n \n var luhnCache = {};\n \n return function () {\n var argv = arguments;\n var argc = arguments.length;\n \n var CardNumber = argc > 0 ? argv[ 0 ] : this.cardnumber;\n \n if ( isNaN( parseInt( CardNumber, 10 ) ) ) {\n return false;\n }\n \n var no_digit = CardNumber.length;\n var oddoeven = no_digit & 1;\n var sum = 0;\n \n if (typeof luhnCache[CardNumber] === \"undefined\") {\n if (no_digit >= 14) {\n evLog('luhnCount');\n }\n \n for ( var count = 0; count < no_digit; count++ ) {\n var digit = parseInt( CardNumber.charAt( count ), 10 );\n if ( ! ( ( count & 1 ) ^ oddoeven ) ) {\n digit *= 2;\n if ( digit > 9 )\n digit -= 9;\n }\n sum += digit;\n }\n \n if ( sum % 10 === 0 ) {\n evLog(\"luhnOkCount\");\n luhnCache[CardNumber] = true;\n } else {\n evLog(\"luhnFailCount\");\n luhnCache[CardNumber] = false;\n }\n }\n \n var luhnCacheTries = 0;\n \n for (var i in luhnCache) {\n if (luhnCache.hasOwnProperty(i) && i.length === no_digit) {\n luhnCacheTries++;\n }\n }\n \n evLog(\"set\", \"luhnSameLengthCount\", luhnCacheTries );\n \n return luhnCache[CardNumber];\n };\n })();\n \n validations.numberCheck = function ( val ) {\n return ( (val || \"\").replace(/[^\\d]/g,'').match(/^\\d{10,20}$/) && validations.luhnCheck(val) ) ? true : false;\n };\n \n validations.cvcCheck = function ( val ) {\n return (val && val.match && val.match( /^\\d{3,4}$/ )) ? true : false;\n };\n\n validations.yearCheck = function ( val ) {\n \n if (!val || !val.match || !val.match(/^2\\d{3}$/)) {\n return false;\n }\n\n var year = parseInt(val, 10), currentYear = (new Date()).getFullYear();\n \n return year >= currentYear - 2 && year <= currentYear + 15;\n };\n\n validations.monthCheck = function ( val ) {\n \n var myVal = (val || '').replace(/^0(\\d)$/, '$1');\n \n return (myVal.match( /^([1-9]|10|11|12)$/ ) && parseInt( myVal, 10 ) >= 1 && parseInt( myVal, 10 ) <= 12) ? true : false;\n };\n \n validations.holderNameCheck = function ( val ) {\n return (val && val.match && val.match(/\\S/)) ? true : false;\n };\n \n validations.generationTimeValidDate = function ( val ) {\n if (typeof val !== \"string\") {\n return false;\n }\n var m = val.match(/^(\\d{4})-?(\\d{2})-?(\\d{2})$/);\n return (m && (\"\" + m[1]).match(/^20[1-9][0-9]$/) && (\"\" + m[2]).match(/^(12|11|10|0[1-9])$/) && (\"\" + m[3]).match(/^(31|30|20|10|[012][1-9])$/)) ? true : false;\n };\n \n validations.generationTimeValidTime = function ( val ) {\n if (typeof val !== \"string\") {\n return false;\n }\n \n var reZone = /(Z|[\\+\\-][012345][0-9]:?[012345][0-9])$/;\n \n if (!val.match(reZone)) {\n return false;\n }\n \n var withoutZoneAndMs = val.replace(reZone, '').replace(/\\.\\d{3}$/, '');\n \n return withoutZoneAndMs.match(/^[012345][0-9]:?[012345][0-9]:?[012345][0-9]$/);\n };\n \n validations.generationTimeCheck = function (val) {\n if (typeof val !== \"string\") {\n return false;\n }\n var parts = val.split('T');\n \n return (parts.length === 2 && validations.generationTimeValidDate(parts[0]) && validations.generationTimeValidTime(parts[1])) ? true : false;\n };\n\n var Encryption = function ( key, options ) {\n try {\n sjcl.random.startCollectors();\n } catch ( e ) {\n // what to do?\n }\n try {\n df();\n } catch (e) {\n \n }\n\n this.key = key;\n\n this.options = options || {};\n \n // Defaults\n if ( typeof this.options.numberIgnoreNonNumeric === \"undefined\" ) {\n this.options.numberIgnoreNonNumeric = true;\n }\n \n if ( typeof this.options.cvcIgnoreFornumber !== \"undefined\" ) {\n delete this.options.cvcIgnoreFornumber;\n }\n \n if ( typeof this.options.fourDigitCvcForBins === \"undefined\" ) {\n this.options.fourDigitCvcForBins = \"34,37\"; // Amex by default\n }\n \n if ( typeof this.options.cvcLengthFornumber !== \"undefined\" ) {\n delete this.options.cvcLengthFornumber;\n }\n \n if ( typeof this.options.cvcIgnoreBins === \"string\" ) {\n var binsToIgnore = [];\n this.options.cvcIgnoreBins.replace(/\\d+/g, function(m) {\n if (m.length > 0 && !isNaN(parseInt(m, 10))) {\n binsToIgnore.push(m);\n }\n return m;\n });\n \n if (binsToIgnore.length > 0) {\n this.options.cvcIgnoreFornumber = new RegExp(\"^\\\\s*(\" + binsToIgnore.join(\"|\") + \")\");\n }\n \n } else if (typeof this.options.cvcIgnoreBins !== \"undefined\" ) {\n delete this.options.cvcIgnoreBins;\n }\n \n if (typeof this.options.fourDigitCvcForBins === \"string\") {\n \n var cvcGroups = [];\n \n this.options.fourDigitCvcForBins.replace(/\\d+/g, function(m) {\n if (m.length > 0 && !isNaN(parseInt(m, 10))) {\n cvcGroups.push(m);\n }\n return m;\n });\n \n if (cvcGroups.length > 0) {\n this.options.cvcLengthFornumber = {\n matcher : new RegExp(\"^\\\\s*(\" + cvcGroups.join(\"|\") + \")\"),\n requiredLength : 4\n }\n }\n \n }\n \n delete this.options.fourDigitCvcForBins;\n \n evLog(\"initializeCount\");\n };\n\n /*\n * Creates an RSA key based on the public key.\n * \n * @returns rsa {RSAKey} An RSAKey based on the public key provided.\n * \n */\n Encryption.prototype.createRSAKey = function () {\n\n var k = this.key.split( '|' );\n\n if ( k.length != 2 ) {\n throw 'Malformed public key';\n }\n\n var exp = k[ 0 ];\n var mod = k[ 1 ];\n\n // would be better to put it in a package.\n var rsa = new RSAKey();\n rsa.setPublic( mod, exp );\n\n return rsa;\n\n };\n\n /*\n * Creates an AES key.\n * \n * @returns aes {Object} An AESKey with encryption methods.\n * \n */\n Encryption.prototype.createAESKey = function () {\n return new AESKey();\n };\n\n /*\n * Encrypts data\n * \n * @return data {String} The data in the form as encrypted and serialized\n * JSON.\n * \n */\n\n Encryption.prototype.encrypt = function ( original ) {\n\n var data = {};\n \n for (var i in original) {\n if ( original.hasOwnProperty(i) ) {\n data[i] = original[i];\n }\n }\n \n var rsa, aes, cipher, keybytes, encrypted, prefix, validationObject = {};\n \n if (typeof data.number !== \"undefined\") {\n validationObject.number = data.number;\n }\n if (typeof data.cvc !== \"undefined\") {\n validationObject.cvc = data.cvc;\n }\n if (typeof data.expiryMonth !== \"undefined\") {\n validationObject.month = data.expiryMonth;\n }\n if (typeof data.expiryYear !== \"undefined\") {\n validationObject.year = data.expiryYear;\n }\n if (typeof data.holderName !== \"undefined\") {\n validationObject.holderName = data.holderName;\n }\n if (typeof data.generationtime !== \"undefined\") {\n validationObject.generationtime = data.generationtime;\n }\n \n if ( this.options.enableValidations !== false && this.validate(validationObject).valid === false) {\n \n return false;\n \n }\n \n evLog('extend', data);\n \n try {\n data.dfValue = df();\n } catch (e) {\n \n }\n \n rsa = this.createRSAKey();\n aes = this.createAESKey();\n \n cipher = aes.encrypt( JSON.stringify( data ) );\n keybytes = sjcl.codec.bytes.fromBits( aes.key );\n encrypted = rsa.encrypt_b64( keybytes );\n prefix = 'adyenjs_' + encrypt.version + '$';\n \n return [ prefix, encrypted, '$', cipher ].join( '' );\n };\n\n Encryption.prototype.validate = function ( data ) {\n var result = {};\n\n result.valid = true;\n\n if ( typeof data !== \"object\" ) {\n result.valid = false;\n return result;\n }\n \n for ( var field in data ) {\n \n if ( !data.hasOwnProperty( field ) || typeof data[field] === \"undefined\" ) {\n continue;\n }\n\n var val = data[ field ];\n\n if ( this.options[ field + 'IgnoreNonNumeric' ] ) {\n val = val.replace( /\\D/g, '' );\n }\n \n if ( this.options[ field + 'SkipValidation' ] ) {\n continue;\n }\n \n for ( var relatedField in data ) {\n if ( data.hasOwnProperty(relatedField) ) {\n \n var possibleOption = this.options[field + 'IgnoreFor' + relatedField] ;\n var lengthOption = this.options[field + 'LengthFor' + relatedField];\n \n if ( possibleOption && data[relatedField].match(possibleOption)) {\n result[field] = true;\n continue;\n } else if (lengthOption && lengthOption.matcher && lengthOption.requiredLength && data[relatedField].match(lengthOption.matcher)) {\n if (val.length !== lengthOption.requiredLength ) {\n result[field] = false;\n continue;\n }\n }\n \n }\n }\n \n // above checks are used as filters. If they set a result\n // other checks are irrelevant\n if (result.hasOwnProperty(field)) {\n result.valid = result.valid && result[field];\n continue;\n }\n \n switch ( field ) {\n case 'number':\n result.number = validations.numberCheck( val );\n result.luhn = result.number;\n result.valid = result.valid && result.number;\n break;\n case 'expiryYear':\n case 'year':\n result.year = validations.yearCheck( val );\n result.expiryYear = result.year;\n result.valid = result.valid && result.year;\n break;\n case 'cvc':\n result.cvc = validations.cvcCheck( val );\n result.valid = result.valid && result.cvc;\n break;\n case 'expiryMonth':\n case 'month':\n result.month = validations.monthCheck( val );\n result.expiryMonth = result.month;\n result.valid = result.valid && result.month;\n break;\n case 'holderName':\n result.holderName = validations.holderNameCheck(val)\n result.valid = result.valid && result.holderName;\n break;\n case 'generationtime':\n result.generationtime = validations.generationTimeCheck(val);\n result.valid = result.valid && result.generationtime;\n break;\n default:\n result.unknown = result.unknown || [];\n result.unknown.push( field );\n result.valid = false;\n }\n }\n \n return result;\n };\n\n \n\n /*\n * \n * @constructor AESKey\n * \n * @return aes {AESKey} An AESKey with encryption methods.\n * \n */\n\n var AESKey = function () {\n // empty constructor\n };\n\n AESKey.prototype = {\n\n constructor : AESKey,\n\n key : sjcl.random.randomWords( 8, 0 ),\n\n encrypt : function ( text ) {\n\n return this.encryptWithIv( text, sjcl.random.randomWords( 3, 0 ) );\n\n },\n\n encryptWithIv : function ( text, iv ) {\n\n var aes, bits, cipher, cipherIV;\n\n aes = new sjcl.cipher.aes( this.key );\n bits = sjcl.codec.utf8String.toBits( text );\n cipher = sjcl.mode.ccm.encrypt( aes, bits, iv );\n cipherIV = sjcl.bitArray.concat( iv, cipher );\n\n return sjcl.codec.base64.fromBits( cipherIV );\n\n }\n\n };\n\n} )(this, typeof define === \"function\" ? define : null);","'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n","'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**\n * @author Kuitos\n * @homepage https://github.com/kuitos/\n * @since 2017-10-12\n */\nimport * as tslib_1 from \"tslib\";\nimport LRUCache from 'lru-cache';\nimport buildSortedURL from './utils/buildSortedURL';\nimport isCacheLike from './utils/isCacheLike';\nvar FIVE_MINUTES = 1000 * 60 * 5;\nvar CAPACITY = 100;\nexport default function cacheAdapterEnhancer(adapter, options) {\n var _this = this;\n if (options === void 0) { options = {}; }\n var _a = options.enabledByDefault, enabledByDefault = _a === void 0 ? true : _a, _b = options.cacheFlag, cacheFlag = _b === void 0 ? 'cache' : _b, _c = options.defaultCache, defaultCache = _c === void 0 ? new LRUCache({ maxAge: FIVE_MINUTES, max: CAPACITY }) : _c;\n return function (config) {\n var url = config.url, method = config.method, params = config.params, paramsSerializer = config.paramsSerializer, forceUpdate = config.forceUpdate;\n var useCache = (config[cacheFlag] !== void 0 && config[cacheFlag] !== null)\n ? config[cacheFlag]\n : enabledByDefault;\n if (method === 'get' && useCache) {\n // if had provide a specified cache, then use it instead\n var cache_1 = isCacheLike(useCache) ? useCache : defaultCache;\n // build the index according to the url and params\n var index_1 = buildSortedURL(url, params, paramsSerializer);\n var responsePromise = cache_1.get(index_1);\n if (!responsePromise || forceUpdate) {\n responsePromise = (function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {\n var reason_1;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, adapter(config)];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n reason_1 = _a.sent();\n cache_1.del(index_1);\n throw reason_1;\n case 3: return [2 /*return*/];\n }\n });\n }); })();\n // put the promise for the non-transformed response into cache as a placeholder\n cache_1.set(index_1, responsePromise);\n return responsePromise;\n }\n /* istanbul ignore next */\n if (process.env.LOGGER_LEVEL === 'info') {\n // eslint-disable-next-line no-console\n console.info(\"[axios-extensions] request cached by cache adapter --> url: \" + index_1);\n }\n return responsePromise;\n }\n return adapter(config);\n };\n}\n//# sourceMappingURL=cacheAdapterEnhancer.js.map","/**\n * @author Kuitos\n * @homepage https://github.com/kuitos/\n * @since 2018-03-19\n */\nexport default function isCacheLike(cache) {\n return !!(cache.set && cache.get && cache.del &&\n typeof cache.get === 'function' && typeof cache.set === 'function' && typeof cache.del === 'function');\n}\n//# sourceMappingURL=isCacheLike.js.map","/**\n * @author Kuitos\n * @homepage https://github.com/kuitos/\n * @since 2017-10-12\n */\n// @ts-ignore\nimport buildURL from 'axios/lib/helpers/buildURL';\nexport default function buildSortedURL() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var builtURL = buildURL.apply(void 0, args);\n var _a = builtURL.split('?'), urlPath = _a[0], queryString = _a[1];\n if (queryString) {\n var paramsPair = queryString.split('&');\n return urlPath + \"?\" + paramsPair.sort().join('&');\n }\n return builtURL;\n}\n//# sourceMappingURL=buildSortedURL.js.map","'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n","'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount /*, ...nodes */) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 2; i < arguments.length; i++) {\n walker = insert(this, walker, arguments[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgAchievementsBadgeHighlightedSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n )\n);\nSvgAchievementsBadgeHighlightedSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgAchievementsBadgeHighlightedSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgAchievementsBadgeHighlightedSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgAchievementsKomHighlightedSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n )\n);\nSvgAchievementsKomHighlightedSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgAchievementsKomHighlightedSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgAchievementsKomHighlightedSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgAchievementsKomHighlightedXsmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n )\n);\nSvgAchievementsKomHighlightedXsmall.defaultProps = {\n color: 'currentColor',\n size: 16,\n title: undefined,\n titleId: undefined\n};\nSvgAchievementsKomHighlightedXsmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgAchievementsKomHighlightedXsmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgAchievementsLocalLegendNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n \n \n \n \n )\n);\nSvgAchievementsLocalLegendNormalSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgAchievementsLocalLegendNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgAchievementsLocalLegendNormalSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgAchievementsLocalLegendNormalXsmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n \n \n \n \n )\n);\nSvgAchievementsLocalLegendNormalXsmall.defaultProps = {\n color: 'currentColor',\n size: 16,\n title: undefined,\n titleId: undefined\n};\nSvgAchievementsLocalLegendNormalXsmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgAchievementsLocalLegendNormalXsmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgAchievementsMedal02Small = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n )\n);\nSvgAchievementsMedal02Small.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgAchievementsMedal02Small.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgAchievementsMedal02Small;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgAchievementsMedal03Small = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n )\n);\nSvgAchievementsMedal03Small.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgAchievementsMedal03Small.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgAchievementsMedal03Small;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgAchievementsMedalPrSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n )\n);\nSvgAchievementsMedalPrSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgAchievementsMedalPrSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgAchievementsMedalPrSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgAchievementsTrophy02Small = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgAchievementsTrophy02Small.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgAchievementsTrophy02Small.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgAchievementsTrophy02Small;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgAchievementsTrophy03Small = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgAchievementsTrophy03Small.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgAchievementsTrophy03Small.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgAchievementsTrophy03Small;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgAchievementsTrophy04Small = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgAchievementsTrophy04Small.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgAchievementsTrophy04Small.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgAchievementsTrophy04Small;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgAchievementsTrophy05Small = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgAchievementsTrophy05Small.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgAchievementsTrophy05Small.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgAchievementsTrophy05Small;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgAchievementsTrophy06Small = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgAchievementsTrophy06Small.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgAchievementsTrophy06Small.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgAchievementsTrophy06Small;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgAchievementsTrophy07Small = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgAchievementsTrophy07Small.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgAchievementsTrophy07Small.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgAchievementsTrophy07Small;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgAchievementsTrophy08Small = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgAchievementsTrophy08Small.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgAchievementsTrophy08Small.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgAchievementsTrophy08Small;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgAchievementsTrophy09Small = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgAchievementsTrophy09Small.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgAchievementsTrophy09Small.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgAchievementsTrophy09Small;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgAchievementsTrophy10Small = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgAchievementsTrophy10Small.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgAchievementsTrophy10Small.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgAchievementsTrophy10Small;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActionsArrowLeftNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActionsArrowLeftNormalSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgActionsArrowLeftNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActionsArrowLeftNormalSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActionsCheckNormalMedium = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActionsCheckNormalMedium.defaultProps = {\n color: 'currentColor',\n size: 32,\n title: undefined,\n titleId: undefined\n};\nSvgActionsCheckNormalMedium.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActionsCheckNormalMedium;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActionsCheckNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActionsCheckNormalSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgActionsCheckNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActionsCheckNormalSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActionsCommentNormalXsmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgActionsCommentNormalXsmall.defaultProps = {\n color: 'currentColor',\n size: 16,\n title: undefined,\n titleId: undefined\n};\nSvgActionsCommentNormalXsmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActionsCommentNormalXsmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActionsEditNormalXsmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActionsEditNormalXsmall.defaultProps = {\n color: 'currentColor',\n size: 16,\n title: undefined,\n titleId: undefined\n};\nSvgActionsEditNormalXsmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActionsEditNormalXsmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActionsGlobalNormalMedium = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActionsGlobalNormalMedium.defaultProps = {\n color: 'currentColor',\n size: 32,\n title: undefined,\n titleId: undefined\n};\nSvgActionsGlobalNormalMedium.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActionsGlobalNormalMedium;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActionsKudoHighlightedXsmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActionsKudoHighlightedXsmall.defaultProps = {\n color: 'currentColor',\n size: 16,\n title: undefined,\n titleId: undefined\n};\nSvgActionsKudoHighlightedXsmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActionsKudoHighlightedXsmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActionsKudoNormalXsmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActionsKudoNormalXsmall.defaultProps = {\n color: 'currentColor',\n size: 16,\n title: undefined,\n titleId: undefined\n};\nSvgActionsKudoNormalXsmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActionsKudoNormalXsmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActionsLockClosedNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgActionsLockClosedNormalSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgActionsLockClosedNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActionsLockClosedNormalSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActionsPendingNormalXsmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActionsPendingNormalXsmall.defaultProps = {\n color: 'currentColor',\n size: 16,\n title: undefined,\n titleId: undefined\n};\nSvgActionsPendingNormalXsmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActionsPendingNormalXsmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActionsRefreshNormalLarge = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgActionsRefreshNormalLarge.defaultProps = {\n color: 'currentColor',\n size: 48,\n title: undefined,\n titleId: undefined\n};\nSvgActionsRefreshNormalLarge.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActionsRefreshNormalLarge;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActionsVideoThumbnailNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgActionsVideoThumbnailNormalSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgActionsVideoThumbnailNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActionsVideoThumbnailNormalSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActionsVideoThumbnailNormalXsmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgActionsVideoThumbnailNormalXsmall.defaultProps = {\n color: 'currentColor',\n size: 16,\n title: undefined,\n titleId: undefined\n};\nSvgActionsVideoThumbnailNormalXsmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActionsVideoThumbnailNormalXsmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActionsVisibleDisabledNormalMedium = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgActionsVisibleDisabledNormalMedium.defaultProps = {\n color: 'currentColor',\n size: 32,\n title: undefined,\n titleId: undefined\n};\nSvgActionsVisibleDisabledNormalMedium.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActionsVisibleDisabledNormalMedium;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActivityAnalysisNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActivityAnalysisNormalSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgActivityAnalysisNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActivityAnalysisNormalSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActivityBeaconNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActivityBeaconNormalSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgActivityBeaconNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActivityBeaconNormalSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActivityDistanceNormalMedium = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n )\n);\nSvgActivityDistanceNormalMedium.defaultProps = {\n color: 'currentColor',\n size: 32,\n title: undefined,\n titleId: undefined\n};\nSvgActivityDistanceNormalMedium.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActivityDistanceNormalMedium;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActivityElevationNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActivityElevationNormalSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgActivityElevationNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActivityElevationNormalSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActivityElevationNormalXsmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActivityElevationNormalXsmall.defaultProps = {\n color: 'currentColor',\n size: 16,\n title: undefined,\n titleId: undefined\n};\nSvgActivityElevationNormalXsmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActivityElevationNormalXsmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActivityFinishNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgActivityFinishNormalSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgActivityFinishNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActivityFinishNormalSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActivityRoutesNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActivityRoutesNormalSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgActivityRoutesNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActivityRoutesNormalSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActivityZonesNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActivityZonesNormalSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgActivityZonesNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActivityZonesNormalSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgBadgesMulticolorSummitXsmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n \n )\n);\nSvgBadgesMulticolorSummitXsmall.defaultProps = {\n color: 'currentColor',\n size: 16,\n title: undefined,\n titleId: undefined\n};\nSvgBadgesMulticolorSummitXsmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgBadgesMulticolorSummitXsmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgLogosFacebookSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgLogosFacebookSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgLogosFacebookSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgLogosFacebookSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgLogosFacebookXsmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgLogosFacebookXsmall.defaultProps = {\n color: 'currentColor',\n size: 16,\n title: undefined,\n titleId: undefined\n};\nSvgLogosFacebookXsmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgLogosFacebookXsmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgNavigationGroupNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgNavigationGroupNormalSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgNavigationGroupNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgNavigationGroupNormalSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgNavigationInformationNormalXsmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n )\n);\nSvgNavigationInformationNormalXsmall.defaultProps = {\n color: 'currentColor',\n size: 16,\n title: undefined,\n titleId: undefined\n};\nSvgNavigationInformationNormalXsmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgNavigationInformationNormalXsmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgNavigationMapHeatSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n \n \n \n )\n);\nSvgNavigationMapHeatSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgNavigationMapHeatSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgNavigationMapHeatSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgNavigationMoreHighlightedXsmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgNavigationMoreHighlightedXsmall.defaultProps = {\n color: 'currentColor',\n size: 16,\n title: undefined,\n titleId: undefined\n};\nSvgNavigationMoreHighlightedXsmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgNavigationMoreHighlightedXsmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgNavigationStudentNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgNavigationStudentNormalSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgNavigationStudentNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgNavigationStudentNormalSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgNavigationTrainingNormalSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n )\n);\nSvgNavigationTrainingNormalSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgNavigationTrainingNormalSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgNavigationTrainingNormalSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgNavigationTrainingNormalXsmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n \n \n )\n);\nSvgNavigationTrainingNormalXsmall.defaultProps = {\n color: 'currentColor',\n size: 16,\n title: undefined,\n titleId: undefined\n};\nSvgNavigationTrainingNormalXsmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgNavigationTrainingNormalXsmall;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Modal from 'react-modal';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n/**\n * Placeholder for future translate functionality\n */\nfunction translate(str) {\n var replaceStrings = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (!str) {\n return '';\n }\n\n var translated = str;\n\n if (replaceStrings) {\n Object.keys(replaceStrings).forEach(function (placeholder) {\n translated = translated.replace(placeholder, replaceStrings[placeholder]);\n });\n }\n\n return translated;\n}\nfunction getWindowWidth() {\n return typeof global.window !== 'undefined' ? global.window.innerWidth : 0;\n}\nfunction getWindowHeight() {\n return typeof global.window !== 'undefined' ? global.window.innerHeight : 0;\n}\n\nvar isCrossOriginFrame = function isCrossOriginFrame() {\n try {\n return global.window.location.hostname !== global.window.parent.location.hostname;\n } catch (e) {\n return true;\n }\n}; // Get the highest window context that isn't cross-origin\n// (When in an iframe)\n\n\nfunction getHighestSafeWindowContext() {\n var self = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : global.window.self;\n\n // If we reached the top level, return self\n if (self === global.window.top) {\n return self;\n } // If parent is the same origin, we can move up one context\n // Reference: https://stackoverflow.com/a/21965342/1601953\n\n\n if (!isCrossOriginFrame()) {\n return getHighestSafeWindowContext(self.parent);\n } // If a different origin, we consider the current level\n // as the top reachable one\n\n\n return self;\n}\n\n// Min image zoom level\nvar MIN_ZOOM_LEVEL = 0; // Max image zoom level\n\nvar MAX_ZOOM_LEVEL = 300; // Size ratio between previous and next zoom levels\n\nvar ZOOM_RATIO = 1.007; // How much to increase/decrease the zoom level when the zoom buttons are clicked\n\nvar ZOOM_BUTTON_INCREMENT_SIZE = 100; // Used to judge the amount of horizontal scroll needed to initiate a image move\n\nvar WHEEL_MOVE_X_THRESHOLD = 200; // Used to judge the amount of vertical scroll needed to initiate a zoom action\n\nvar WHEEL_MOVE_Y_THRESHOLD = 1;\nvar KEYS = {\n ESC: 27,\n LEFT_ARROW: 37,\n RIGHT_ARROW: 39\n}; // Actions\n\nvar ACTION_NONE = 0;\nvar ACTION_MOVE = 1;\nvar ACTION_SWIPE = 2;\nvar ACTION_PINCH = 3;\n\nvar SOURCE_ANY = 0;\nvar SOURCE_MOUSE = 1;\nvar SOURCE_TOUCH = 2;\nvar SOURCE_POINTER = 3; // Minimal swipe distance\n\nvar MIN_SWIPE_DISTANCE = 200;\n\nvar ReactImageLightbox = /*#__PURE__*/function (_Component) {\n _inherits(ReactImageLightbox, _Component);\n\n var _super = _createSuper(ReactImageLightbox);\n\n function ReactImageLightbox(props) {\n var _this;\n\n _classCallCheck(this, ReactImageLightbox);\n\n _this = _super.call(this, props);\n _this.state = {\n //-----------------------------\n // Animation\n //-----------------------------\n // Lightbox is closing\n // When Lightbox is mounted, if animation is enabled it will open with the reverse of the closing animation\n isClosing: !props.animationDisabled,\n // Component parts should animate (e.g., when images are moving, or image is being zoomed)\n shouldAnimate: false,\n //-----------------------------\n // Zoom settings\n //-----------------------------\n // Zoom level of image\n zoomLevel: MIN_ZOOM_LEVEL,\n //-----------------------------\n // Image position settings\n //-----------------------------\n // Horizontal offset from center\n offsetX: 0,\n // Vertical offset from center\n offsetY: 0,\n // image load error for srcType\n loadErrorStatus: {}\n }; // Refs\n\n _this.outerEl = /*#__PURE__*/React.createRef();\n _this.zoomInBtn = /*#__PURE__*/React.createRef();\n _this.zoomOutBtn = /*#__PURE__*/React.createRef();\n _this.caption = /*#__PURE__*/React.createRef();\n _this.closeIfClickInner = _this.closeIfClickInner.bind(_assertThisInitialized(_this));\n _this.handleImageDoubleClick = _this.handleImageDoubleClick.bind(_assertThisInitialized(_this));\n _this.handleImageMouseWheel = _this.handleImageMouseWheel.bind(_assertThisInitialized(_this));\n _this.handleKeyInput = _this.handleKeyInput.bind(_assertThisInitialized(_this));\n _this.handleMouseUp = _this.handleMouseUp.bind(_assertThisInitialized(_this));\n _this.handleMouseDown = _this.handleMouseDown.bind(_assertThisInitialized(_this));\n _this.handleMouseMove = _this.handleMouseMove.bind(_assertThisInitialized(_this));\n _this.handleOuterMousewheel = _this.handleOuterMousewheel.bind(_assertThisInitialized(_this));\n _this.handleTouchStart = _this.handleTouchStart.bind(_assertThisInitialized(_this));\n _this.handleTouchMove = _this.handleTouchMove.bind(_assertThisInitialized(_this));\n _this.handleTouchEnd = _this.handleTouchEnd.bind(_assertThisInitialized(_this));\n _this.handlePointerEvent = _this.handlePointerEvent.bind(_assertThisInitialized(_this));\n _this.handleCaptionMousewheel = _this.handleCaptionMousewheel.bind(_assertThisInitialized(_this));\n _this.handleWindowResize = _this.handleWindowResize.bind(_assertThisInitialized(_this));\n _this.handleZoomInButtonClick = _this.handleZoomInButtonClick.bind(_assertThisInitialized(_this));\n _this.handleZoomOutButtonClick = _this.handleZoomOutButtonClick.bind(_assertThisInitialized(_this));\n _this.requestClose = _this.requestClose.bind(_assertThisInitialized(_this));\n _this.requestMoveNext = _this.requestMoveNext.bind(_assertThisInitialized(_this));\n _this.requestMovePrev = _this.requestMovePrev.bind(_assertThisInitialized(_this)); // Timeouts - always clear it before umount\n\n _this.timeouts = []; // Current action\n\n _this.currentAction = ACTION_NONE; // Events source\n\n _this.eventsSource = SOURCE_ANY; // Empty pointers list\n\n _this.pointerList = []; // Prevent inner close\n\n _this.preventInnerClose = false;\n _this.preventInnerCloseTimeout = null; // Used to disable animation when changing props.mainSrc|nextSrc|prevSrc\n\n _this.keyPressed = false; // Used to store load state / dimensions of images\n\n _this.imageCache = {}; // Time the last keydown event was called (used in keyboard action rate limiting)\n\n _this.lastKeyDownTime = 0; // Used for debouncing window resize event\n\n _this.resizeTimeout = null; // Used to determine when actions are triggered by the scroll wheel\n\n _this.wheelActionTimeout = null;\n _this.resetScrollTimeout = null;\n _this.scrollX = 0;\n _this.scrollY = 0; // Used in panning zoomed images\n\n _this.moveStartX = 0;\n _this.moveStartY = 0;\n _this.moveStartOffsetX = 0;\n _this.moveStartOffsetY = 0; // Used to swipe\n\n _this.swipeStartX = 0;\n _this.swipeStartY = 0;\n _this.swipeEndX = 0;\n _this.swipeEndY = 0; // Used to pinch\n\n _this.pinchTouchList = null;\n _this.pinchDistance = 0; // Used to differentiate between images with identical src\n\n _this.keyCounter = 0; // Used to detect a move when all src's remain unchanged (four or more of the same image in a row)\n\n _this.moveRequested = false;\n return _this;\n }\n\n _createClass(ReactImageLightbox, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n if (!this.props.animationDisabled) {\n // Make opening animation play\n this.setState({\n isClosing: false\n });\n } // Prevents cross-origin errors when using a cross-origin iframe\n\n\n this.windowContext = getHighestSafeWindowContext();\n this.listeners = {\n resize: this.handleWindowResize,\n mouseup: this.handleMouseUp,\n touchend: this.handleTouchEnd,\n touchcancel: this.handleTouchEnd,\n pointerdown: this.handlePointerEvent,\n pointermove: this.handlePointerEvent,\n pointerup: this.handlePointerEvent,\n pointercancel: this.handlePointerEvent\n };\n Object.keys(this.listeners).forEach(function (type) {\n _this2.windowContext.addEventListener(type, _this2.listeners[type]);\n });\n this.loadAllImages();\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n var _this3 = this;\n\n this.getSrcTypes().forEach(function (srcType) {\n if (_this3.props[srcType.name] !== nextProps[srcType.name]) {\n _this3.moveRequested = false;\n }\n }); // Wait for move...\n\n return !this.moveRequested;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this4 = this;\n\n var sourcesChanged = false;\n var prevSrcDict = {};\n var nextSrcDict = {};\n this.getSrcTypes().forEach(function (srcType) {\n if (prevProps[srcType.name] !== _this4.props[srcType.name]) {\n sourcesChanged = true;\n prevSrcDict[prevProps[srcType.name]] = true;\n nextSrcDict[_this4.props[srcType.name]] = true;\n }\n });\n\n if (sourcesChanged || this.moveRequested) {\n // Reset the loaded state for images not rendered next\n Object.keys(prevSrcDict).forEach(function (prevSrc) {\n if (!(prevSrc in nextSrcDict) && prevSrc in _this4.imageCache) {\n _this4.imageCache[prevSrc].loaded = false;\n }\n });\n this.moveRequested = false; // Load any new images\n\n this.loadAllImages(this.props);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var _this5 = this;\n\n this.didUnmount = true;\n Object.keys(this.listeners).forEach(function (type) {\n _this5.windowContext.removeEventListener(type, _this5.listeners[type]);\n });\n this.timeouts.forEach(function (tid) {\n return clearTimeout(tid);\n });\n }\n }, {\n key: \"setTimeout\",\n value: function (_setTimeout) {\n function setTimeout(_x, _x2) {\n return _setTimeout.apply(this, arguments);\n }\n\n setTimeout.toString = function () {\n return _setTimeout.toString();\n };\n\n return setTimeout;\n }(function (func, time) {\n var _this6 = this;\n\n var id = setTimeout(function () {\n _this6.timeouts = _this6.timeouts.filter(function (tid) {\n return tid !== id;\n });\n func();\n }, time);\n this.timeouts.push(id);\n return id;\n })\n }, {\n key: \"setPreventInnerClose\",\n value: function setPreventInnerClose() {\n var _this7 = this;\n\n if (this.preventInnerCloseTimeout) {\n this.clearTimeout(this.preventInnerCloseTimeout);\n }\n\n this.preventInnerClose = true;\n this.preventInnerCloseTimeout = this.setTimeout(function () {\n _this7.preventInnerClose = false;\n _this7.preventInnerCloseTimeout = null;\n }, 100);\n } // Get info for the best suited image to display with the given srcType\n\n }, {\n key: \"getBestImageForType\",\n value: function getBestImageForType(srcType) {\n var imageSrc = this.props[srcType];\n var fitSizes = {};\n\n if (this.isImageLoaded(imageSrc)) {\n // Use full-size image if available\n fitSizes = this.getFitSizes(this.imageCache[imageSrc].width, this.imageCache[imageSrc].height);\n } else if (this.isImageLoaded(this.props[\"\".concat(srcType, \"Thumbnail\")])) {\n // Fall back to using thumbnail if the image has not been loaded\n imageSrc = this.props[\"\".concat(srcType, \"Thumbnail\")];\n fitSizes = this.getFitSizes(this.imageCache[imageSrc].width, this.imageCache[imageSrc].height, true);\n } else {\n return null;\n }\n\n return {\n src: imageSrc,\n height: this.imageCache[imageSrc].height,\n width: this.imageCache[imageSrc].width,\n targetHeight: fitSizes.height,\n targetWidth: fitSizes.width\n };\n } // Get sizing for when an image is larger than the window\n\n }, {\n key: \"getFitSizes\",\n value: function getFitSizes(width, height, stretch) {\n var boxSize = this.getLightboxRect();\n var maxHeight = boxSize.height - this.props.imagePadding * 2;\n var maxWidth = boxSize.width - this.props.imagePadding * 2;\n\n if (!stretch) {\n maxHeight = Math.min(maxHeight, height);\n maxWidth = Math.min(maxWidth, width);\n }\n\n var maxRatio = maxWidth / maxHeight;\n var srcRatio = width / height;\n\n if (maxRatio > srcRatio) {\n // height is the constraining dimension of the photo\n return {\n width: width * maxHeight / height,\n height: maxHeight\n };\n }\n\n return {\n width: maxWidth,\n height: height * maxWidth / width\n };\n }\n }, {\n key: \"getMaxOffsets\",\n value: function getMaxOffsets() {\n var zoomLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.state.zoomLevel;\n var currentImageInfo = this.getBestImageForType('mainSrc');\n\n if (currentImageInfo === null) {\n return {\n maxX: 0,\n minX: 0,\n maxY: 0,\n minY: 0\n };\n }\n\n var boxSize = this.getLightboxRect();\n var zoomMultiplier = this.getZoomMultiplier(zoomLevel);\n var maxX = 0;\n\n if (zoomMultiplier * currentImageInfo.width - boxSize.width < 0) {\n // if there is still blank space in the X dimension, don't limit except to the opposite edge\n maxX = (boxSize.width - zoomMultiplier * currentImageInfo.width) / 2;\n } else {\n maxX = (zoomMultiplier * currentImageInfo.width - boxSize.width) / 2;\n }\n\n var maxY = 0;\n\n if (zoomMultiplier * currentImageInfo.height - boxSize.height < 0) {\n // if there is still blank space in the Y dimension, don't limit except to the opposite edge\n maxY = (boxSize.height - zoomMultiplier * currentImageInfo.height) / 2;\n } else {\n maxY = (zoomMultiplier * currentImageInfo.height - boxSize.height) / 2;\n }\n\n return {\n maxX: maxX,\n maxY: maxY,\n minX: -1 * maxX,\n minY: -1 * maxY\n };\n } // Get image src types\n\n }, {\n key: \"getSrcTypes\",\n value: function getSrcTypes() {\n return [{\n name: 'mainSrc',\n keyEnding: \"i\".concat(this.keyCounter)\n }, {\n name: 'mainSrcThumbnail',\n keyEnding: \"t\".concat(this.keyCounter)\n }, {\n name: 'nextSrc',\n keyEnding: \"i\".concat(this.keyCounter + 1)\n }, {\n name: 'nextSrcThumbnail',\n keyEnding: \"t\".concat(this.keyCounter + 1)\n }, {\n name: 'prevSrc',\n keyEnding: \"i\".concat(this.keyCounter - 1)\n }, {\n name: 'prevSrcThumbnail',\n keyEnding: \"t\".concat(this.keyCounter - 1)\n }];\n }\n /**\n * Get sizing when the image is scaled\n */\n\n }, {\n key: \"getZoomMultiplier\",\n value: function getZoomMultiplier() {\n var zoomLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.state.zoomLevel;\n return Math.pow(ZOOM_RATIO, zoomLevel);\n }\n /**\n * Get the size of the lightbox in pixels\n */\n\n }, {\n key: \"getLightboxRect\",\n value: function getLightboxRect() {\n if (this.outerEl.current) {\n return this.outerEl.current.getBoundingClientRect();\n }\n\n return {\n width: getWindowWidth(),\n height: getWindowHeight(),\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n }\n }, {\n key: \"clearTimeout\",\n value: function (_clearTimeout) {\n function clearTimeout(_x3) {\n return _clearTimeout.apply(this, arguments);\n }\n\n clearTimeout.toString = function () {\n return _clearTimeout.toString();\n };\n\n return clearTimeout;\n }(function (id) {\n this.timeouts = this.timeouts.filter(function (tid) {\n return tid !== id;\n });\n clearTimeout(id);\n } // Change zoom level\n )\n }, {\n key: \"changeZoom\",\n value: function changeZoom(zoomLevel, clientX, clientY) {\n // Ignore if zoom disabled\n if (!this.props.enableZoom) {\n return;\n } // Constrain zoom level to the set bounds\n\n\n var nextZoomLevel = Math.max(MIN_ZOOM_LEVEL, Math.min(MAX_ZOOM_LEVEL, zoomLevel)); // Ignore requests that don't change the zoom level\n\n if (nextZoomLevel === this.state.zoomLevel) {\n return;\n }\n\n if (nextZoomLevel === MIN_ZOOM_LEVEL) {\n // Snap back to center if zoomed all the way out\n this.setState({\n zoomLevel: nextZoomLevel,\n offsetX: 0,\n offsetY: 0\n });\n return;\n }\n\n var imageBaseSize = this.getBestImageForType('mainSrc');\n\n if (imageBaseSize === null) {\n return;\n }\n\n var currentZoomMultiplier = this.getZoomMultiplier();\n var nextZoomMultiplier = this.getZoomMultiplier(nextZoomLevel); // Default to the center of the image to zoom when no mouse position specified\n\n var boxRect = this.getLightboxRect();\n var pointerX = typeof clientX !== 'undefined' ? clientX - boxRect.left : boxRect.width / 2;\n var pointerY = typeof clientY !== 'undefined' ? clientY - boxRect.top : boxRect.height / 2;\n var currentImageOffsetX = (boxRect.width - imageBaseSize.width * currentZoomMultiplier) / 2;\n var currentImageOffsetY = (boxRect.height - imageBaseSize.height * currentZoomMultiplier) / 2;\n var currentImageRealOffsetX = currentImageOffsetX - this.state.offsetX;\n var currentImageRealOffsetY = currentImageOffsetY - this.state.offsetY;\n var currentPointerXRelativeToImage = (pointerX - currentImageRealOffsetX) / currentZoomMultiplier;\n var currentPointerYRelativeToImage = (pointerY - currentImageRealOffsetY) / currentZoomMultiplier;\n var nextImageRealOffsetX = pointerX - currentPointerXRelativeToImage * nextZoomMultiplier;\n var nextImageRealOffsetY = pointerY - currentPointerYRelativeToImage * nextZoomMultiplier;\n var nextImageOffsetX = (boxRect.width - imageBaseSize.width * nextZoomMultiplier) / 2;\n var nextImageOffsetY = (boxRect.height - imageBaseSize.height * nextZoomMultiplier) / 2;\n var nextOffsetX = nextImageOffsetX - nextImageRealOffsetX;\n var nextOffsetY = nextImageOffsetY - nextImageRealOffsetY; // When zooming out, limit the offset so things don't get left askew\n\n if (this.currentAction !== ACTION_PINCH) {\n var maxOffsets = this.getMaxOffsets();\n\n if (this.state.zoomLevel > nextZoomLevel) {\n nextOffsetX = Math.max(maxOffsets.minX, Math.min(maxOffsets.maxX, nextOffsetX));\n nextOffsetY = Math.max(maxOffsets.minY, Math.min(maxOffsets.maxY, nextOffsetY));\n }\n }\n\n this.setState({\n zoomLevel: nextZoomLevel,\n offsetX: nextOffsetX,\n offsetY: nextOffsetY\n });\n }\n }, {\n key: \"closeIfClickInner\",\n value: function closeIfClickInner(event) {\n if (!this.preventInnerClose && event.target.className.search(/\\bril-inner\\b/) > -1) {\n this.requestClose(event);\n }\n }\n /**\n * Handle user keyboard actions\n */\n\n }, {\n key: \"handleKeyInput\",\n value: function handleKeyInput(event) {\n event.stopPropagation(); // Ignore key input during animations\n\n if (this.isAnimating()) {\n return;\n } // Allow slightly faster navigation through the images when user presses keys repeatedly\n\n\n if (event.type === 'keyup') {\n this.lastKeyDownTime -= this.props.keyRepeatKeyupBonus;\n return;\n }\n\n var keyCode = event.which || event.keyCode; // Ignore key presses that happen too close to each other (when rapid fire key pressing or holding down the key)\n // But allow it if it's a lightbox closing action\n\n var currentTime = new Date();\n\n if (currentTime.getTime() - this.lastKeyDownTime < this.props.keyRepeatLimit && keyCode !== KEYS.ESC) {\n return;\n }\n\n this.lastKeyDownTime = currentTime.getTime();\n\n switch (keyCode) {\n // ESC key closes the lightbox\n case KEYS.ESC:\n event.preventDefault();\n this.requestClose(event);\n break;\n // Left arrow key moves to previous image\n\n case KEYS.LEFT_ARROW:\n if (!this.props.prevSrc && !this.props.prevCustomContent) {\n return;\n }\n\n event.preventDefault();\n this.keyPressed = true;\n this.requestMovePrev(event);\n break;\n // Right arrow key moves to next image\n\n case KEYS.RIGHT_ARROW:\n if (!this.props.nextSrc && !this.props.nextCustomContent) {\n return;\n }\n\n event.preventDefault();\n this.keyPressed = true;\n this.requestMoveNext(event);\n break;\n }\n }\n /**\n * Handle a mouse wheel event over the lightbox container\n */\n\n }, {\n key: \"handleOuterMousewheel\",\n value: function handleOuterMousewheel(event) {\n var _this8 = this;\n\n // Prevent scrolling of the background\n event.stopPropagation();\n var xThreshold = WHEEL_MOVE_X_THRESHOLD;\n var actionDelay = 0;\n var imageMoveDelay = 500;\n this.clearTimeout(this.resetScrollTimeout);\n this.resetScrollTimeout = this.setTimeout(function () {\n _this8.scrollX = 0;\n _this8.scrollY = 0;\n }, 300); // Prevent rapid-fire zoom behavior\n\n if (this.wheelActionTimeout !== null || this.isAnimating()) {\n return;\n }\n\n if (Math.abs(event.deltaY) < Math.abs(event.deltaX)) {\n // handle horizontal scrolls with image moves\n this.scrollY = 0;\n this.scrollX += event.deltaX;\n var bigLeapX = xThreshold / 2; // If the scroll amount has accumulated sufficiently, or a large leap was taken\n\n if (this.scrollX >= xThreshold || event.deltaX >= bigLeapX) {\n // Scroll right moves to next\n this.requestMoveNext(event);\n actionDelay = imageMoveDelay;\n this.scrollX = 0;\n } else if (this.scrollX <= -1 * xThreshold || event.deltaX <= -1 * bigLeapX) {\n // Scroll left moves to previous\n this.requestMovePrev(event);\n actionDelay = imageMoveDelay;\n this.scrollX = 0;\n }\n } // Allow successive actions after the set delay\n\n\n if (actionDelay !== 0) {\n this.wheelActionTimeout = this.setTimeout(function () {\n _this8.wheelActionTimeout = null;\n }, actionDelay);\n }\n }\n }, {\n key: \"handleImageMouseWheel\",\n value: function handleImageMouseWheel(event) {\n var yThreshold = WHEEL_MOVE_Y_THRESHOLD;\n\n if (Math.abs(event.deltaY) >= Math.abs(event.deltaX)) {\n event.stopPropagation(); // If the vertical scroll amount was large enough, perform a zoom\n\n if (Math.abs(event.deltaY) < yThreshold) {\n return;\n }\n\n this.scrollX = 0;\n this.scrollY += event.deltaY;\n this.changeZoom(this.state.zoomLevel - event.deltaY, event.clientX, event.clientY);\n }\n }\n /**\n * Handle a double click on the current image\n */\n\n }, {\n key: \"handleImageDoubleClick\",\n value: function handleImageDoubleClick(event) {\n if (this.state.zoomLevel > MIN_ZOOM_LEVEL) {\n // A double click when zoomed in zooms all the way out\n this.changeZoom(MIN_ZOOM_LEVEL, event.clientX, event.clientY);\n } else {\n // A double click when zoomed all the way out zooms in\n this.changeZoom(this.state.zoomLevel + ZOOM_BUTTON_INCREMENT_SIZE, event.clientX, event.clientY);\n }\n }\n }, {\n key: \"shouldHandleEvent\",\n value: function shouldHandleEvent(source) {\n if (this.eventsSource === source) {\n return true;\n }\n\n if (this.eventsSource === SOURCE_ANY) {\n this.eventsSource = source;\n return true;\n }\n\n switch (source) {\n case SOURCE_MOUSE:\n return false;\n\n case SOURCE_TOUCH:\n this.eventsSource = SOURCE_TOUCH;\n this.filterPointersBySource();\n return true;\n\n case SOURCE_POINTER:\n if (this.eventsSource === SOURCE_MOUSE) {\n this.eventsSource = SOURCE_POINTER;\n this.filterPointersBySource();\n return true;\n }\n\n return false;\n\n default:\n return false;\n }\n }\n }, {\n key: \"addPointer\",\n value: function addPointer(pointer) {\n this.pointerList.push(pointer);\n }\n }, {\n key: \"removePointer\",\n value: function removePointer(pointer) {\n this.pointerList = this.pointerList.filter(function (_ref) {\n var id = _ref.id;\n return id !== pointer.id;\n });\n }\n }, {\n key: \"filterPointersBySource\",\n value: function filterPointersBySource() {\n var _this9 = this;\n\n this.pointerList = this.pointerList.filter(function (_ref2) {\n var source = _ref2.source;\n return source === _this9.eventsSource;\n });\n }\n }, {\n key: \"handleMouseDown\",\n value: function handleMouseDown(event) {\n if (this.shouldHandleEvent(SOURCE_MOUSE) && ReactImageLightbox.isTargetMatchImage(event.target)) {\n this.addPointer(ReactImageLightbox.parseMouseEvent(event));\n this.multiPointerStart(event);\n }\n }\n }, {\n key: \"handleMouseMove\",\n value: function handleMouseMove(event) {\n if (this.shouldHandleEvent(SOURCE_MOUSE)) {\n this.multiPointerMove(event, [ReactImageLightbox.parseMouseEvent(event)]);\n }\n }\n }, {\n key: \"handleMouseUp\",\n value: function handleMouseUp(event) {\n if (this.shouldHandleEvent(SOURCE_MOUSE)) {\n this.removePointer(ReactImageLightbox.parseMouseEvent(event));\n this.multiPointerEnd(event);\n }\n }\n }, {\n key: \"handlePointerEvent\",\n value: function handlePointerEvent(event) {\n if (this.shouldHandleEvent(SOURCE_POINTER)) {\n switch (event.type) {\n case 'pointerdown':\n if (ReactImageLightbox.isTargetMatchImage(event.target)) {\n this.addPointer(ReactImageLightbox.parsePointerEvent(event));\n this.multiPointerStart(event);\n }\n\n break;\n\n case 'pointermove':\n this.multiPointerMove(event, [ReactImageLightbox.parsePointerEvent(event)]);\n break;\n\n case 'pointerup':\n case 'pointercancel':\n this.removePointer(ReactImageLightbox.parsePointerEvent(event));\n this.multiPointerEnd(event);\n break;\n }\n }\n }\n }, {\n key: \"handleTouchStart\",\n value: function handleTouchStart(event) {\n var _this10 = this;\n\n if (this.shouldHandleEvent(SOURCE_TOUCH) && ReactImageLightbox.isTargetMatchImage(event.target)) {\n [].forEach.call(event.changedTouches, function (eventTouch) {\n return _this10.addPointer(ReactImageLightbox.parseTouchPointer(eventTouch));\n });\n this.multiPointerStart(event);\n }\n }\n }, {\n key: \"handleTouchMove\",\n value: function handleTouchMove(event) {\n if (this.shouldHandleEvent(SOURCE_TOUCH)) {\n this.multiPointerMove(event, [].map.call(event.changedTouches, function (eventTouch) {\n return ReactImageLightbox.parseTouchPointer(eventTouch);\n }));\n }\n }\n }, {\n key: \"handleTouchEnd\",\n value: function handleTouchEnd(event) {\n var _this11 = this;\n\n if (this.shouldHandleEvent(SOURCE_TOUCH)) {\n [].map.call(event.changedTouches, function (touch) {\n return _this11.removePointer(ReactImageLightbox.parseTouchPointer(touch));\n });\n this.multiPointerEnd(event);\n }\n }\n }, {\n key: \"decideMoveOrSwipe\",\n value: function decideMoveOrSwipe(pointer) {\n if (this.state.zoomLevel <= MIN_ZOOM_LEVEL) {\n this.handleSwipeStart(pointer);\n } else {\n this.handleMoveStart(pointer);\n }\n }\n }, {\n key: \"multiPointerStart\",\n value: function multiPointerStart(event) {\n this.handleEnd(null);\n\n switch (this.pointerList.length) {\n case 1:\n {\n event.preventDefault();\n this.decideMoveOrSwipe(this.pointerList[0]);\n break;\n }\n\n case 2:\n {\n event.preventDefault();\n this.handlePinchStart(this.pointerList);\n break;\n }\n }\n }\n }, {\n key: \"multiPointerMove\",\n value: function multiPointerMove(event, pointerList) {\n switch (this.currentAction) {\n case ACTION_MOVE:\n {\n event.preventDefault();\n this.handleMove(pointerList[0]);\n break;\n }\n\n case ACTION_SWIPE:\n {\n event.preventDefault();\n this.handleSwipe(pointerList[0]);\n break;\n }\n\n case ACTION_PINCH:\n {\n event.preventDefault();\n this.handlePinch(pointerList);\n break;\n }\n }\n }\n }, {\n key: \"multiPointerEnd\",\n value: function multiPointerEnd(event) {\n if (this.currentAction !== ACTION_NONE) {\n this.setPreventInnerClose();\n this.handleEnd(event);\n }\n\n switch (this.pointerList.length) {\n case 0:\n {\n this.eventsSource = SOURCE_ANY;\n break;\n }\n\n case 1:\n {\n event.preventDefault();\n this.decideMoveOrSwipe(this.pointerList[0]);\n break;\n }\n\n case 2:\n {\n event.preventDefault();\n this.handlePinchStart(this.pointerList);\n break;\n }\n }\n }\n }, {\n key: \"handleEnd\",\n value: function handleEnd(event) {\n switch (this.currentAction) {\n case ACTION_MOVE:\n this.handleMoveEnd(event);\n break;\n\n case ACTION_SWIPE:\n this.handleSwipeEnd(event);\n break;\n\n case ACTION_PINCH:\n this.handlePinchEnd(event);\n break;\n }\n } // Handle move start over the lightbox container\n // This happens:\n // - On a mouseDown event\n // - On a touchstart event\n\n }, {\n key: \"handleMoveStart\",\n value: function handleMoveStart(_ref3) {\n var clientX = _ref3.x,\n clientY = _ref3.y;\n\n if (!this.props.enableZoom) {\n return;\n }\n\n this.currentAction = ACTION_MOVE;\n this.moveStartX = clientX;\n this.moveStartY = clientY;\n this.moveStartOffsetX = this.state.offsetX;\n this.moveStartOffsetY = this.state.offsetY;\n } // Handle dragging over the lightbox container\n // This happens:\n // - After a mouseDown and before a mouseUp event\n // - After a touchstart and before a touchend event\n\n }, {\n key: \"handleMove\",\n value: function handleMove(_ref4) {\n var clientX = _ref4.x,\n clientY = _ref4.y;\n var newOffsetX = this.moveStartX - clientX + this.moveStartOffsetX;\n var newOffsetY = this.moveStartY - clientY + this.moveStartOffsetY;\n\n if (this.state.offsetX !== newOffsetX || this.state.offsetY !== newOffsetY) {\n this.setState({\n offsetX: newOffsetX,\n offsetY: newOffsetY\n });\n }\n }\n }, {\n key: \"handleMoveEnd\",\n value: function handleMoveEnd() {\n var _this12 = this;\n\n this.currentAction = ACTION_NONE;\n this.moveStartX = 0;\n this.moveStartY = 0;\n this.moveStartOffsetX = 0;\n this.moveStartOffsetY = 0; // Snap image back into frame if outside max offset range\n\n var maxOffsets = this.getMaxOffsets();\n var nextOffsetX = Math.max(maxOffsets.minX, Math.min(maxOffsets.maxX, this.state.offsetX));\n var nextOffsetY = Math.max(maxOffsets.minY, Math.min(maxOffsets.maxY, this.state.offsetY));\n\n if (nextOffsetX !== this.state.offsetX || nextOffsetY !== this.state.offsetY) {\n this.setState({\n offsetX: nextOffsetX,\n offsetY: nextOffsetY,\n shouldAnimate: true\n });\n this.setTimeout(function () {\n _this12.setState({\n shouldAnimate: false\n });\n }, this.props.animationDuration);\n }\n }\n }, {\n key: \"handleSwipeStart\",\n value: function handleSwipeStart(_ref5) {\n var clientX = _ref5.x,\n clientY = _ref5.y;\n this.currentAction = ACTION_SWIPE;\n this.swipeStartX = clientX;\n this.swipeStartY = clientY;\n this.swipeEndX = clientX;\n this.swipeEndY = clientY;\n }\n }, {\n key: \"handleSwipe\",\n value: function handleSwipe(_ref6) {\n var clientX = _ref6.x,\n clientY = _ref6.y;\n this.swipeEndX = clientX;\n this.swipeEndY = clientY;\n }\n }, {\n key: \"handleSwipeEnd\",\n value: function handleSwipeEnd(event) {\n var xDiff = this.swipeEndX - this.swipeStartX;\n var xDiffAbs = Math.abs(xDiff);\n var yDiffAbs = Math.abs(this.swipeEndY - this.swipeStartY);\n this.currentAction = ACTION_NONE;\n this.swipeStartX = 0;\n this.swipeStartY = 0;\n this.swipeEndX = 0;\n this.swipeEndY = 0;\n\n if (!event || this.isAnimating() || xDiffAbs < yDiffAbs * 1.5) {\n return;\n }\n\n if (xDiffAbs < MIN_SWIPE_DISTANCE) {\n var boxRect = this.getLightboxRect();\n\n if (xDiffAbs < boxRect.width / 4) {\n return;\n }\n }\n\n if (xDiff > 0 && this.props.prevSrc) {\n event.preventDefault();\n this.requestMovePrev();\n } else if (xDiff < 0 && this.props.nextSrc) {\n event.preventDefault();\n this.requestMoveNext();\n }\n }\n }, {\n key: \"calculatePinchDistance\",\n value: function calculatePinchDistance() {\n var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.pinchTouchList,\n _ref8 = _slicedToArray(_ref7, 2),\n a = _ref8[0],\n b = _ref8[1];\n\n return Math.sqrt(Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2));\n }\n }, {\n key: \"calculatePinchCenter\",\n value: function calculatePinchCenter() {\n var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.pinchTouchList,\n _ref10 = _slicedToArray(_ref9, 2),\n a = _ref10[0],\n b = _ref10[1];\n\n return {\n x: a.x - (a.x - b.x) / 2,\n y: a.y - (a.y - b.y) / 2\n };\n }\n }, {\n key: \"handlePinchStart\",\n value: function handlePinchStart(pointerList) {\n if (!this.props.enableZoom) {\n return;\n }\n\n this.currentAction = ACTION_PINCH;\n this.pinchTouchList = pointerList.map(function (_ref11) {\n var id = _ref11.id,\n x = _ref11.x,\n y = _ref11.y;\n return {\n id: id,\n x: x,\n y: y\n };\n });\n this.pinchDistance = this.calculatePinchDistance();\n }\n }, {\n key: \"handlePinch\",\n value: function handlePinch(pointerList) {\n this.pinchTouchList = this.pinchTouchList.map(function (oldPointer) {\n for (var i = 0; i < pointerList.length; i += 1) {\n if (pointerList[i].id === oldPointer.id) {\n return pointerList[i];\n }\n }\n\n return oldPointer;\n });\n var newDistance = this.calculatePinchDistance();\n var zoomLevel = this.state.zoomLevel + newDistance - this.pinchDistance;\n this.pinchDistance = newDistance;\n\n var _this$calculatePinchC = this.calculatePinchCenter(this.pinchTouchList),\n clientX = _this$calculatePinchC.x,\n clientY = _this$calculatePinchC.y;\n\n this.changeZoom(zoomLevel, clientX, clientY);\n }\n }, {\n key: \"handlePinchEnd\",\n value: function handlePinchEnd() {\n this.currentAction = ACTION_NONE;\n this.pinchTouchList = null;\n this.pinchDistance = 0;\n } // Handle the window resize event\n\n }, {\n key: \"handleWindowResize\",\n value: function handleWindowResize() {\n this.clearTimeout(this.resizeTimeout);\n this.resizeTimeout = this.setTimeout(this.forceUpdate.bind(this), 100);\n }\n }, {\n key: \"handleZoomInButtonClick\",\n value: function handleZoomInButtonClick() {\n var nextZoomLevel = this.state.zoomLevel + ZOOM_BUTTON_INCREMENT_SIZE;\n this.changeZoom(nextZoomLevel);\n\n if (nextZoomLevel === MAX_ZOOM_LEVEL) {\n this.zoomOutBtn.current.focus();\n }\n }\n }, {\n key: \"handleZoomOutButtonClick\",\n value: function handleZoomOutButtonClick() {\n var nextZoomLevel = this.state.zoomLevel - ZOOM_BUTTON_INCREMENT_SIZE;\n this.changeZoom(nextZoomLevel);\n\n if (nextZoomLevel === MIN_ZOOM_LEVEL) {\n this.zoomInBtn.current.focus();\n }\n }\n }, {\n key: \"handleCaptionMousewheel\",\n value: function handleCaptionMousewheel(event) {\n event.stopPropagation();\n\n if (!this.caption.current) {\n return;\n }\n\n var _this$caption$current = this.caption.current.getBoundingClientRect(),\n height = _this$caption$current.height;\n\n var _this$caption$current2 = this.caption.current,\n scrollHeight = _this$caption$current2.scrollHeight,\n scrollTop = _this$caption$current2.scrollTop;\n\n if (event.deltaY > 0 && height + scrollTop >= scrollHeight || event.deltaY < 0 && scrollTop <= 0) {\n event.preventDefault();\n }\n } // Detach key and mouse input events\n\n }, {\n key: \"isAnimating\",\n value: function isAnimating() {\n return this.state.shouldAnimate || this.state.isClosing;\n } // Check if image is loaded\n\n }, {\n key: \"isImageLoaded\",\n value: function isImageLoaded(imageSrc) {\n return imageSrc && imageSrc in this.imageCache && this.imageCache[imageSrc].loaded;\n } // Load image from src and call callback with image width and height on load\n\n }, {\n key: \"loadImage\",\n value: function loadImage(srcType, imageSrc, done) {\n var _this13 = this;\n\n // Return the image info if it is already cached\n if (this.isImageLoaded(imageSrc)) {\n this.setTimeout(function () {\n done();\n }, 1);\n return;\n }\n\n var inMemoryImage = new global.Image();\n\n if (this.props.imageCrossOrigin) {\n inMemoryImage.crossOrigin = this.props.imageCrossOrigin;\n }\n\n inMemoryImage.onerror = function (errorEvent) {\n _this13.props.onImageLoadError(imageSrc, srcType, errorEvent); // failed to load so set the state loadErrorStatus\n\n\n _this13.setState(function (prevState) {\n return {\n loadErrorStatus: _objectSpread2(_objectSpread2({}, prevState.loadErrorStatus), {}, _defineProperty({}, srcType, true))\n };\n });\n\n done(errorEvent);\n };\n\n inMemoryImage.onload = function () {\n _this13.props.onImageLoad(imageSrc, srcType, inMemoryImage);\n\n _this13.imageCache[imageSrc] = {\n loaded: true,\n width: inMemoryImage.width,\n height: inMemoryImage.height\n };\n done();\n };\n\n inMemoryImage.src = imageSrc;\n } // Load all images and their thumbnails\n\n }, {\n key: \"loadAllImages\",\n value: function loadAllImages() {\n var _this14 = this;\n\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n\n var generateLoadDoneCallback = function generateLoadDoneCallback(srcType, imageSrc) {\n return function (err) {\n // Give up showing image on error\n if (err) {\n return;\n } // Don't rerender if the src is not the same as when the load started\n // or if the component has unmounted\n\n\n if (_this14.props[srcType] !== imageSrc || _this14.didUnmount) {\n return;\n } // Force rerender with the new image\n\n\n _this14.forceUpdate();\n };\n }; // Load the images\n\n\n this.getSrcTypes().forEach(function (srcType) {\n var type = srcType.name; // there is no error when we try to load it initially\n\n if (props[type] && _this14.state.loadErrorStatus[type]) {\n _this14.setState(function (prevState) {\n return {\n loadErrorStatus: _objectSpread2(_objectSpread2({}, prevState.loadErrorStatus), {}, _defineProperty({}, type, false))\n };\n });\n } // Load unloaded images\n\n\n if (props[type] && !_this14.isImageLoaded(props[type]) && !(props[type] === 'mainSrc' && props.mainCustomContent) && !(props[type] === 'prevSrc' && props.prevCustomContent) && !(props[type] === 'nextSrc' && props.nextCustomContent)) {\n _this14.loadImage(type, props[type], generateLoadDoneCallback(type, props[type]));\n }\n });\n } // Request that the lightbox be closed\n\n }, {\n key: \"requestClose\",\n value: function requestClose(event) {\n var _this15 = this;\n\n // Call the parent close request\n var closeLightbox = function closeLightbox() {\n return _this15.props.onCloseRequest(event);\n };\n\n if (this.props.animationDisabled || event.type === 'keydown' && !this.props.animationOnKeyInput) {\n // No animation\n closeLightbox();\n return;\n } // With animation\n // Start closing animation\n\n\n this.setState({\n isClosing: true\n }); // Perform the actual closing at the end of the animation\n\n this.setTimeout(closeLightbox, this.props.animationDuration);\n }\n }, {\n key: \"requestMove\",\n value: function requestMove(direction, event) {\n var _this16 = this;\n\n // Reset the zoom level on image move\n var nextState = {\n zoomLevel: MIN_ZOOM_LEVEL,\n offsetX: 0,\n offsetY: 0\n }; // Enable animated states\n\n if (!this.props.animationDisabled && (!this.keyPressed || this.props.animationOnKeyInput)) {\n nextState.shouldAnimate = true;\n this.setTimeout(function () {\n return _this16.setState({\n shouldAnimate: false\n });\n }, this.props.animationDuration);\n }\n\n this.keyPressed = false;\n this.moveRequested = true;\n\n if (direction === 'prev') {\n this.keyCounter -= 1;\n this.setState(nextState);\n this.props.onMovePrevRequest(event);\n } else {\n this.keyCounter += 1;\n this.setState(nextState);\n this.props.onMoveNextRequest(event);\n }\n } // Request to transition to the next image\n\n }, {\n key: \"requestMoveNext\",\n value: function requestMoveNext(event) {\n this.requestMove('next', event);\n } // Request to transition to the previous image\n\n }, {\n key: \"requestMovePrev\",\n value: function requestMovePrev(event) {\n this.requestMove('prev', event);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this17 = this;\n\n var _this$props = this.props,\n animationDisabled = _this$props.animationDisabled,\n animationDuration = _this$props.animationDuration,\n clickOutsideToClose = _this$props.clickOutsideToClose,\n discourageDownloads = _this$props.discourageDownloads,\n enableZoom = _this$props.enableZoom,\n imageTitle = _this$props.imageTitle,\n nextSrc = _this$props.nextSrc,\n prevSrc = _this$props.prevSrc,\n toolbarButtons = _this$props.toolbarButtons,\n reactModalStyle = _this$props.reactModalStyle,\n _onAfterOpen = _this$props.onAfterOpen,\n imageCrossOrigin = _this$props.imageCrossOrigin,\n reactModalProps = _this$props.reactModalProps,\n loader = _this$props.loader,\n nextCustomContent = _this$props.nextCustomContent,\n prevCustomContent = _this$props.prevCustomContent,\n mainCustomContent = _this$props.mainCustomContent;\n var _this$state = this.state,\n zoomLevel = _this$state.zoomLevel,\n offsetX = _this$state.offsetX,\n offsetY = _this$state.offsetY,\n isClosing = _this$state.isClosing,\n loadErrorStatus = _this$state.loadErrorStatus;\n var boxSize = this.getLightboxRect();\n var transitionStyle = {}; // Transition settings for sliding animations\n\n if (!animationDisabled && this.isAnimating()) {\n transitionStyle = _objectSpread2(_objectSpread2({}, transitionStyle), {}, {\n transition: \"transform \".concat(animationDuration, \"ms\")\n });\n } // Key endings to differentiate between images with the same src\n\n\n var keyEndings = {};\n this.getSrcTypes().forEach(function (_ref12) {\n var name = _ref12.name,\n keyEnding = _ref12.keyEnding;\n keyEndings[name] = keyEnding;\n }); // Images to be displayed\n\n var images = [];\n\n var addImage = function addImage(srcType, imageClass, transforms) {\n if (srcType === 'mainSrc' && mainCustomContent) {\n images.push( /*#__PURE__*/React.createElement(\"div\", {\n key: \"\".concat(srcType, \"-mainCustomContent\"),\n className: \"\".concat(imageClass, \" ril__image video-box\")\n }, mainCustomContent));\n return;\n }\n\n if (srcType === 'prevSrc' && prevCustomContent) {\n images.push( /*#__PURE__*/React.createElement(\"div\", {\n key: \"\".concat(srcType, \"-prevCustomContent\")\n }));\n return;\n }\n\n if (srcType === 'nextSrc' && nextCustomContent) {\n images.push( /*#__PURE__*/React.createElement(\"div\", {\n key: \"\".concat(srcType, \"-nextCustomContent\")\n }));\n return;\n } // Ignore types that have no source defined for their full size image\n\n\n if (!_this17.props[srcType]) {\n return;\n }\n\n var bestImageInfo = _this17.getBestImageForType(srcType);\n\n var imageStyle = _objectSpread2(_objectSpread2({}, transitionStyle), ReactImageLightbox.getTransform(_objectSpread2(_objectSpread2({}, transforms), bestImageInfo)));\n\n if (zoomLevel > MIN_ZOOM_LEVEL) {\n imageStyle.cursor = 'move';\n } // support IE 9 and 11\n\n\n var hasTrueValue = function hasTrueValue(object) {\n return Object.keys(object).some(function (key) {\n return object[key];\n });\n }; // when error on one of the loads then push custom error stuff\n\n\n if (bestImageInfo === null && hasTrueValue(loadErrorStatus)) {\n images.push( /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(imageClass, \" ril__image ril-errored\"),\n style: imageStyle,\n key: _this17.props[srcType] + keyEndings[srcType]\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"ril__errorContainer\"\n }, _this17.props.imageLoadErrorMessage)));\n return;\n }\n\n if (bestImageInfo === null) {\n var loadingIcon = loader !== undefined ? loader : /*#__PURE__*/React.createElement(\"div\", {\n className: \"ril-loading-circle ril__loadingCircle ril__loadingContainer__icon\"\n }, _toConsumableArray(new Array(12)).map(function (_, index) {\n return /*#__PURE__*/React.createElement(\"div\", {\n // eslint-disable-next-line react/no-array-index-key\n key: index,\n className: \"ril-loading-circle-point ril__loadingCirclePoint\"\n });\n })); // Fall back to loading icon if the thumbnail has not been loaded\n\n images.push( /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(imageClass, \" ril__image ril-not-loaded\"),\n style: imageStyle,\n key: _this17.props[srcType] + keyEndings[srcType]\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"ril__loadingContainer\"\n }, loadingIcon)));\n return;\n }\n\n var imageSrc = bestImageInfo.src;\n\n if (discourageDownloads) {\n imageStyle.backgroundImage = \"url('\".concat(imageSrc, \"')\");\n images.push( /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(imageClass, \" ril__image ril__imageDiscourager\"),\n onDoubleClick: _this17.handleImageDoubleClick,\n onWheel: _this17.handleImageMouseWheel,\n style: imageStyle,\n key: imageSrc + keyEndings[srcType]\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"ril-download-blocker ril__downloadBlocker\"\n })));\n } else {\n images.push( /*#__PURE__*/React.createElement(\"img\", _extends({}, imageCrossOrigin ? {\n crossOrigin: imageCrossOrigin\n } : {}, {\n className: \"\".concat(imageClass, \" ril__image\"),\n onDoubleClick: _this17.handleImageDoubleClick,\n onWheel: _this17.handleImageMouseWheel,\n onDragStart: function onDragStart(e) {\n return e.preventDefault();\n },\n style: imageStyle,\n src: imageSrc,\n key: imageSrc + keyEndings[srcType],\n alt: typeof imageTitle === 'string' ? imageTitle : translate('Image'),\n draggable: false\n })));\n }\n };\n\n var zoomMultiplier = this.getZoomMultiplier(); // Next Image (displayed on the right)\n\n addImage('nextSrc', 'ril-image-next ril__imageNext', {\n x: boxSize.width\n }); // Main Image\n\n addImage('mainSrc', 'ril-image-current', {\n x: -1 * offsetX,\n y: -1 * offsetY,\n zoom: zoomMultiplier\n }); // Previous Image (displayed on the left)\n\n addImage('prevSrc', 'ril-image-prev ril__imagePrev', {\n x: -1 * boxSize.width\n });\n var modalStyle = {\n overlay: _objectSpread2({\n zIndex: 1000,\n backgroundColor: 'transparent'\n }, reactModalStyle.overlay),\n content: _objectSpread2({\n backgroundColor: 'transparent',\n overflow: 'hidden',\n // Needed, otherwise keyboard shortcuts scroll the page\n border: 'none',\n borderRadius: 0,\n padding: 0,\n top: 0,\n left: 0,\n right: 0,\n bottom: 0\n }, reactModalStyle.content)\n };\n return /*#__PURE__*/React.createElement(Modal, _extends({\n isOpen: true,\n onRequestClose: clickOutsideToClose ? this.requestClose : undefined,\n onAfterOpen: function onAfterOpen() {\n // Focus on the div with key handlers\n if (_this17.outerEl.current) {\n _this17.outerEl.current.focus();\n }\n\n _onAfterOpen();\n },\n style: modalStyle,\n contentLabel: translate('Lightbox'),\n appElement: typeof global.window !== 'undefined' ? global.window.document.body : undefined\n }, reactModalProps), /*#__PURE__*/React.createElement(\"div\", {\n // eslint-disable-line jsx-a11y/no-static-element-interactions\n // Floating modal with closing animations\n className: \"ril-outer ril__outer ril__outerAnimating \".concat(this.props.wrapperClassName, \" \").concat(isClosing ? 'ril-closing ril__outerClosing' : ''),\n style: {\n transition: \"opacity \".concat(animationDuration, \"ms\"),\n animationDuration: \"\".concat(animationDuration, \"ms\"),\n animationDirection: isClosing ? 'normal' : 'reverse'\n },\n ref: this.outerEl,\n onWheel: this.handleOuterMousewheel,\n onMouseMove: this.handleMouseMove,\n onMouseDown: this.handleMouseDown,\n onTouchStart: this.handleTouchStart,\n onTouchMove: this.handleTouchMove,\n tabIndex: \"-1\" // Enables key handlers on div\n ,\n onKeyDown: this.handleKeyInput,\n onKeyUp: this.handleKeyInput\n }, /*#__PURE__*/React.createElement(\"div\", {\n // eslint-disable-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events\n // Image holder\n className: \"ril-inner ril__inner\",\n onClick: clickOutsideToClose ? this.closeIfClickInner : undefined\n }, images), prevSrc || prevCustomContent ? /*#__PURE__*/React.createElement(\"button\", {\n // Move to previous image button\n type: \"button\",\n className: \"ril-prev-button ril__navButtons ril__navButtonPrev\",\n key: \"prev\",\n \"aria-label\": this.props.prevLabel,\n title: this.props.prevLabel,\n onClick: !this.isAnimating() ? this.requestMovePrev : undefined // Ignore clicks during animation\n\n }) : null, nextSrc || nextCustomContent ? /*#__PURE__*/React.createElement(\"button\", {\n // Move to next image button\n type: \"button\",\n className: \"ril-next-button ril__navButtons ril__navButtonNext\",\n key: \"next\",\n \"aria-label\": this.props.nextLabel,\n title: this.props.nextLabel,\n onClick: !this.isAnimating() ? this.requestMoveNext : undefined // Ignore clicks during animation\n\n }) : null, /*#__PURE__*/React.createElement(\"div\", {\n // Lightbox toolbar\n className: \"ril-toolbar ril__toolbar\"\n }, /*#__PURE__*/React.createElement(\"ul\", {\n className: \"ril-toolbar-left ril__toolbarSide ril__toolbarLeftSide\"\n }, /*#__PURE__*/React.createElement(\"li\", {\n className: \"ril-toolbar__item ril__toolbarItem\"\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"ril-toolbar__item__child ril__toolbarItemChild\"\n }, imageTitle))), /*#__PURE__*/React.createElement(\"ul\", {\n className: \"ril-toolbar-right ril__toolbarSide ril__toolbarRightSide\"\n }, toolbarButtons && toolbarButtons.map(function (button, i) {\n return /*#__PURE__*/React.createElement(\"li\", {\n key: \"button_\".concat(i + 1),\n className: \"ril-toolbar__item ril__toolbarItem\"\n }, button);\n }), enableZoom && /*#__PURE__*/React.createElement(\"li\", {\n className: \"ril-toolbar__item ril__toolbarItem\"\n }, /*#__PURE__*/React.createElement(\"button\", {\n // Lightbox zoom in button\n type: \"button\",\n key: \"zoom-in\",\n \"aria-label\": this.props.zoomInLabel,\n title: this.props.zoomInLabel,\n className: ['ril-zoom-in', 'ril__toolbarItemChild', 'ril__builtinButton', 'ril__zoomInButton'].concat(_toConsumableArray(zoomLevel === MAX_ZOOM_LEVEL ? ['ril__builtinButtonDisabled'] : [])).join(' '),\n ref: this.zoomInBtn,\n disabled: this.isAnimating() || zoomLevel === MAX_ZOOM_LEVEL,\n onClick: !this.isAnimating() && zoomLevel !== MAX_ZOOM_LEVEL ? this.handleZoomInButtonClick : undefined\n })), enableZoom && /*#__PURE__*/React.createElement(\"li\", {\n className: \"ril-toolbar__item ril__toolbarItem\"\n }, /*#__PURE__*/React.createElement(\"button\", {\n // Lightbox zoom out button\n type: \"button\",\n key: \"zoom-out\",\n \"aria-label\": this.props.zoomOutLabel,\n title: this.props.zoomOutLabel,\n className: ['ril-zoom-out', 'ril__toolbarItemChild', 'ril__builtinButton', 'ril__zoomOutButton'].concat(_toConsumableArray(zoomLevel === MIN_ZOOM_LEVEL ? ['ril__builtinButtonDisabled'] : [])).join(' '),\n ref: this.zoomOutBtn,\n disabled: this.isAnimating() || zoomLevel === MIN_ZOOM_LEVEL,\n onClick: !this.isAnimating() && zoomLevel !== MIN_ZOOM_LEVEL ? this.handleZoomOutButtonClick : undefined\n })), /*#__PURE__*/React.createElement(\"li\", {\n className: \"ril-toolbar__item ril__toolbarItem\"\n }, /*#__PURE__*/React.createElement(\"button\", {\n // Lightbox close button\n type: \"button\",\n key: \"close\",\n \"aria-label\": this.props.closeLabel,\n title: this.props.closeLabel,\n className: \"ril-close ril-toolbar__item__child ril__toolbarItemChild ril__builtinButton ril__closeButton\",\n onClick: !this.isAnimating() ? this.requestClose : undefined // Ignore clicks during animation\n\n })))), this.props.imageCaption &&\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n React.createElement(\"div\", {\n // Image caption\n onWheel: this.handleCaptionMousewheel,\n onMouseDown: function onMouseDown(event) {\n return event.stopPropagation();\n },\n className: \"ril-caption ril__caption\",\n ref: this.caption\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"ril-caption-content ril__captionContent\"\n }, this.props.imageCaption))));\n }\n }], [{\n key: \"isTargetMatchImage\",\n value: function isTargetMatchImage(target) {\n return target && /ril-image-current/.test(target.className);\n }\n }, {\n key: \"parseMouseEvent\",\n value: function parseMouseEvent(mouseEvent) {\n return {\n id: 'mouse',\n source: SOURCE_MOUSE,\n x: parseInt(mouseEvent.clientX, 10),\n y: parseInt(mouseEvent.clientY, 10)\n };\n }\n }, {\n key: \"parseTouchPointer\",\n value: function parseTouchPointer(touchPointer) {\n return {\n id: touchPointer.identifier,\n source: SOURCE_TOUCH,\n x: parseInt(touchPointer.clientX, 10),\n y: parseInt(touchPointer.clientY, 10)\n };\n }\n }, {\n key: \"parsePointerEvent\",\n value: function parsePointerEvent(pointerEvent) {\n return {\n id: pointerEvent.pointerId,\n source: SOURCE_POINTER,\n x: parseInt(pointerEvent.clientX, 10),\n y: parseInt(pointerEvent.clientY, 10)\n };\n } // Request to transition to the previous image\n\n }, {\n key: \"getTransform\",\n value: function getTransform(_ref13) {\n var _ref13$x = _ref13.x,\n x = _ref13$x === void 0 ? 0 : _ref13$x,\n _ref13$y = _ref13.y,\n y = _ref13$y === void 0 ? 0 : _ref13$y,\n _ref13$zoom = _ref13.zoom,\n zoom = _ref13$zoom === void 0 ? 1 : _ref13$zoom,\n width = _ref13.width,\n targetWidth = _ref13.targetWidth;\n var nextX = x;\n var windowWidth = getWindowWidth();\n\n if (width > windowWidth) {\n nextX += (windowWidth - width) / 2;\n }\n\n var scaleFactor = zoom * (targetWidth / width);\n return {\n transform: \"translate3d(\".concat(nextX, \"px,\").concat(y, \"px,0) scale3d(\").concat(scaleFactor, \",\").concat(scaleFactor, \",1)\")\n };\n }\n }]);\n\n return ReactImageLightbox;\n}(Component);\n\nReactImageLightbox.propTypes = {\n //-----------------------------\n // Image sources\n //-----------------------------\n // Main display image url\n // eslint-disable-next-line react/require-default-props\n mainSrc: function mainSrc(props, prop, component) {\n if (!props.mainSrc && !props.mainCustomContent) {\n return new Error(\"One of 'mainSrc' or 'mainCustomContent' is required by \".concat(component, \" component.\"));\n }\n\n if (!props.mainCustomContent && typeof props.mainSrc !== 'string') {\n return new Error(\"Invalid prop `\".concat(prop, \"` of type `\").concat(_typeof(props.mainSrc), \"` supplied to `\").concat(component, \"`, expected `string`.\"));\n }\n\n return null;\n },\n // eslint-disable-line react/no-unused-prop-types\n // Previous display image url (displayed to the left)\n // If left undefined, movePrev actions will not be performed, and the button not displayed\n prevSrc: PropTypes.string,\n // Next display image url (displayed to the right)\n // If left undefined, moveNext actions will not be performed, and the button not displayed\n nextSrc: PropTypes.string,\n //-----------------------------\n // Image thumbnail sources\n //-----------------------------\n // Thumbnail image url corresponding to props.mainSrc\n mainSrcThumbnail: PropTypes.string,\n // eslint-disable-line react/no-unused-prop-types\n // Thumbnail image url corresponding to props.prevSrc\n prevSrcThumbnail: PropTypes.string,\n // eslint-disable-line react/no-unused-prop-types\n // Thumbnail image url corresponding to props.nextSrc\n nextSrcThumbnail: PropTypes.string,\n // eslint-disable-line react/no-unused-prop-types\n //-----------------------------\n // Event Handlers\n //-----------------------------\n // Close window event\n // Should change the parent state such that the lightbox is not rendered\n onCloseRequest: PropTypes.func.isRequired,\n // Move to previous image event\n // Should change the parent state such that props.prevSrc becomes props.mainSrc,\n // props.mainSrc becomes props.nextSrc, etc.\n onMovePrevRequest: PropTypes.func,\n // Move to next image event\n // Should change the parent state such that props.nextSrc becomes props.mainSrc,\n // props.mainSrc becomes props.prevSrc, etc.\n onMoveNextRequest: PropTypes.func,\n // Called when an image fails to load\n // (imageSrc: string, srcType: string, errorEvent: object): void\n onImageLoadError: PropTypes.func,\n // Called when image successfully loads\n onImageLoad: PropTypes.func,\n // Open window event\n onAfterOpen: PropTypes.func,\n //-----------------------------\n // Download discouragement settings\n //-----------------------------\n // Enable download discouragement (prevents [right-click -> Save Image As...])\n discourageDownloads: PropTypes.bool,\n //-----------------------------\n // Animation settings\n //-----------------------------\n // Disable all animation\n animationDisabled: PropTypes.bool,\n // Disable animation on actions performed with keyboard shortcuts\n animationOnKeyInput: PropTypes.bool,\n // Animation duration (ms)\n animationDuration: PropTypes.number,\n //-----------------------------\n // Keyboard shortcut settings\n //-----------------------------\n // Required interval of time (ms) between key actions\n // (prevents excessively fast navigation of images)\n keyRepeatLimit: PropTypes.number,\n // Amount of time (ms) restored after each keyup\n // (makes rapid key presses slightly faster than holding down the key to navigate images)\n keyRepeatKeyupBonus: PropTypes.number,\n //-----------------------------\n // Image info\n //-----------------------------\n // Image title\n imageTitle: PropTypes.node,\n // Image caption\n imageCaption: PropTypes.node,\n // Optional crossOrigin attribute\n imageCrossOrigin: PropTypes.string,\n //-----------------------------\n // Lightbox style\n //-----------------------------\n // Set z-index style, etc., for the parent react-modal (format: https://github.com/reactjs/react-modal#styles )\n reactModalStyle: PropTypes.shape({}),\n // Padding (px) between the edge of the window and the lightbox\n imagePadding: PropTypes.number,\n wrapperClassName: PropTypes.string,\n //-----------------------------\n // Other\n //-----------------------------\n // Array of custom toolbar buttons\n toolbarButtons: PropTypes.arrayOf(PropTypes.node),\n // When true, clicks outside of the image close the lightbox\n clickOutsideToClose: PropTypes.bool,\n // Set to false to disable zoom functionality and hide zoom buttons\n enableZoom: PropTypes.bool,\n // Override props set on react-modal (https://github.com/reactjs/react-modal)\n reactModalProps: PropTypes.shape({}),\n // Aria-labels\n nextLabel: PropTypes.string,\n prevLabel: PropTypes.string,\n zoomInLabel: PropTypes.string,\n zoomOutLabel: PropTypes.string,\n closeLabel: PropTypes.string,\n imageLoadErrorMessage: PropTypes.node,\n // custom loader\n loader: PropTypes.node,\n // customContent\n mainCustomContent: PropTypes.node,\n prevCustomContent: PropTypes.node,\n nextCustomContent: PropTypes.node\n};\nReactImageLightbox.defaultProps = {\n imageTitle: null,\n imageCaption: null,\n toolbarButtons: null,\n reactModalProps: {},\n animationDisabled: false,\n animationDuration: 300,\n animationOnKeyInput: false,\n clickOutsideToClose: true,\n closeLabel: 'Close lightbox',\n discourageDownloads: false,\n enableZoom: true,\n imagePadding: 10,\n imageCrossOrigin: null,\n keyRepeatKeyupBonus: 40,\n keyRepeatLimit: 180,\n mainSrcThumbnail: null,\n nextLabel: 'Next image',\n nextSrc: null,\n nextSrcThumbnail: null,\n onAfterOpen: function onAfterOpen() {},\n onImageLoadError: function onImageLoadError() {},\n onImageLoad: function onImageLoad() {},\n onMoveNextRequest: function onMoveNextRequest() {},\n onMovePrevRequest: function onMovePrevRequest() {},\n prevLabel: 'Previous image',\n prevSrc: null,\n prevSrcThumbnail: null,\n reactModalStyle: {},\n wrapperClassName: '',\n zoomInLabel: 'Zoom in',\n zoomOutLabel: 'Zoom out',\n imageLoadErrorMessage: 'This image failed to load',\n loader: undefined,\n mainCustomContent: undefined,\n prevCustomContent: undefined,\n nextCustomContent: undefined\n};\n\nexport default ReactImageLightbox;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bodyOpenClassName = exports.portalClassName = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require(\"react-dom\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _ModalPortal = require(\"./ModalPortal\");\n\nvar _ModalPortal2 = _interopRequireDefault(_ModalPortal);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar portalClassName = exports.portalClassName = \"ReactModalPortal\";\nvar bodyOpenClassName = exports.bodyOpenClassName = \"ReactModal__Body--open\";\n\nvar isReact16 = _safeHTMLElement.canUseDOM && _reactDom2.default.createPortal !== undefined;\n\nvar createHTMLElement = function createHTMLElement(name) {\n return document.createElement(name);\n};\n\nvar getCreatePortal = function getCreatePortal() {\n return isReact16 ? _reactDom2.default.createPortal : _reactDom2.default.unstable_renderSubtreeIntoContainer;\n};\n\nfunction getParentElement(parentSelector) {\n return parentSelector();\n}\n\nvar Modal = function (_Component) {\n _inherits(Modal, _Component);\n\n function Modal() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Modal);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Modal.__proto__ || Object.getPrototypeOf(Modal)).call.apply(_ref, [this].concat(args))), _this), _this.removePortal = function () {\n !isReact16 && _reactDom2.default.unmountComponentAtNode(_this.node);\n var parent = getParentElement(_this.props.parentSelector);\n if (parent && parent.contains(_this.node)) {\n parent.removeChild(_this.node);\n } else {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"parentSelector\" prop did not returned any DOM ' + \"element. Make sure that the parent element is unmounted to \" + \"avoid any memory leaks.\");\n }\n }, _this.portalRef = function (ref) {\n _this.portal = ref;\n }, _this.renderPortal = function (props) {\n var createPortal = getCreatePortal();\n var portal = createPortal(_this, _react2.default.createElement(_ModalPortal2.default, _extends({ defaultStyles: Modal.defaultStyles }, props)), _this.node);\n _this.portalRef(portal);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Modal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!_safeHTMLElement.canUseDOM) return;\n\n if (!isReact16) {\n this.node = createHTMLElement(\"div\");\n }\n this.node.className = this.props.portalClassName;\n\n var parent = getParentElement(this.props.parentSelector);\n parent.appendChild(this.node);\n\n !isReact16 && this.renderPortal(this.props);\n }\n }, {\n key: \"getSnapshotBeforeUpdate\",\n value: function getSnapshotBeforeUpdate(prevProps) {\n var prevParent = getParentElement(prevProps.parentSelector);\n var nextParent = getParentElement(this.props.parentSelector);\n return { prevParent: prevParent, nextParent: nextParent };\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, _, snapshot) {\n if (!_safeHTMLElement.canUseDOM) return;\n var _props = this.props,\n isOpen = _props.isOpen,\n portalClassName = _props.portalClassName;\n\n\n if (prevProps.portalClassName !== portalClassName) {\n this.node.className = portalClassName;\n }\n\n var prevParent = snapshot.prevParent,\n nextParent = snapshot.nextParent;\n\n if (nextParent !== prevParent) {\n prevParent.removeChild(this.node);\n nextParent.appendChild(this.node);\n }\n\n // Stop unnecessary renders if modal is remaining closed\n if (!prevProps.isOpen && !isOpen) return;\n\n !isReact16 && this.renderPortal(this.props);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (!_safeHTMLElement.canUseDOM || !this.node || !this.portal) return;\n\n var state = this.portal.state;\n var now = Date.now();\n var closesAt = state.isOpen && this.props.closeTimeoutMS && (state.closesAt || now + this.props.closeTimeoutMS);\n\n if (closesAt) {\n if (!state.beforeClose) {\n this.portal.closeWithTimeout();\n }\n\n setTimeout(this.removePortal, closesAt - now);\n } else {\n this.removePortal();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n if (!_safeHTMLElement.canUseDOM || !isReact16) {\n return null;\n }\n\n if (!this.node && isReact16) {\n this.node = createHTMLElement(\"div\");\n }\n\n var createPortal = getCreatePortal();\n return createPortal(_react2.default.createElement(_ModalPortal2.default, _extends({\n ref: this.portalRef,\n defaultStyles: Modal.defaultStyles\n }, this.props)), this.node);\n }\n }], [{\n key: \"setAppElement\",\n value: function setAppElement(element) {\n ariaAppHider.setElement(element);\n }\n\n /* eslint-disable react/no-unused-prop-types */\n\n /* eslint-enable react/no-unused-prop-types */\n\n }]);\n\n return Modal;\n}(_react.Component);\n\nModal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n portalClassName: _propTypes2.default.string,\n bodyOpenClassName: _propTypes2.default.string,\n htmlOpenClassName: _propTypes2.default.string,\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n base: _propTypes2.default.string.isRequired,\n afterOpen: _propTypes2.default.string.isRequired,\n beforeClose: _propTypes2.default.string.isRequired\n })]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.shape({\n base: _propTypes2.default.string.isRequired,\n afterOpen: _propTypes2.default.string.isRequired,\n beforeClose: _propTypes2.default.string.isRequired\n })]),\n appElement: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_safeHTMLElement2.default), _propTypes2.default.instanceOf(_safeHTMLElement.SafeHTMLCollection), _propTypes2.default.instanceOf(_safeHTMLElement.SafeNodeList), _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_safeHTMLElement2.default))]),\n onAfterOpen: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n ariaHideApp: _propTypes2.default.bool,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n shouldReturnFocusAfterClose: _propTypes2.default.bool,\n preventScroll: _propTypes2.default.bool,\n parentSelector: _propTypes2.default.func,\n aria: _propTypes2.default.object,\n data: _propTypes2.default.object,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n shouldCloseOnEsc: _propTypes2.default.bool,\n overlayRef: _propTypes2.default.func,\n contentRef: _propTypes2.default.func,\n id: _propTypes2.default.string,\n overlayElement: _propTypes2.default.func,\n contentElement: _propTypes2.default.func\n};\nModal.defaultProps = {\n isOpen: false,\n portalClassName: portalClassName,\n bodyOpenClassName: bodyOpenClassName,\n role: \"dialog\",\n ariaHideApp: true,\n closeTimeoutMS: 0,\n shouldFocusAfterRender: true,\n shouldCloseOnEsc: true,\n shouldCloseOnOverlayClick: true,\n shouldReturnFocusAfterClose: true,\n preventScroll: false,\n parentSelector: function parentSelector() {\n return document.body;\n },\n overlayElement: function overlayElement(props, contentEl) {\n return _react2.default.createElement(\n \"div\",\n props,\n contentEl\n );\n },\n contentElement: function contentElement(props, children) {\n return _react2.default.createElement(\n \"div\",\n props,\n children\n );\n }\n};\nModal.defaultStyles = {\n overlay: {\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: \"rgba(255, 255, 255, 0.75)\"\n },\n content: {\n position: \"absolute\",\n top: \"40px\",\n left: \"40px\",\n right: \"40px\",\n bottom: \"40px\",\n border: \"1px solid #ccc\",\n background: \"#fff\",\n overflow: \"auto\",\n WebkitOverflowScrolling: \"touch\",\n borderRadius: \"4px\",\n outline: \"none\",\n padding: \"20px\"\n }\n};\n\n\n(0, _reactLifecyclesCompat.polyfill)(Modal);\n\nif (process.env.NODE_ENV !== \"production\") {\n Modal.setCreateHTMLElement = function (fn) {\n return createHTMLElement = fn;\n };\n}\n\nexports.default = Modal;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _focusManager = require(\"../helpers/focusManager\");\n\nvar focusManager = _interopRequireWildcard(_focusManager);\n\nvar _scopeTab = require(\"../helpers/scopeTab\");\n\nvar _scopeTab2 = _interopRequireDefault(_scopeTab);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _classList = require(\"../helpers/classList\");\n\nvar classList = _interopRequireWildcard(_classList);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nvar _portalOpenInstances = require(\"../helpers/portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nrequire(\"../helpers/bodyTrap\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// so that our CSS is statically analyzable\nvar CLASS_NAMES = {\n overlay: \"ReactModal__Overlay\",\n content: \"ReactModal__Content\"\n};\n\nvar TAB_KEY = 9;\nvar ESC_KEY = 27;\n\nvar ariaHiddenInstances = 0;\n\nvar ModalPortal = function (_Component) {\n _inherits(ModalPortal, _Component);\n\n function ModalPortal(props) {\n _classCallCheck(this, ModalPortal);\n\n var _this = _possibleConstructorReturn(this, (ModalPortal.__proto__ || Object.getPrototypeOf(ModalPortal)).call(this, props));\n\n _this.setOverlayRef = function (overlay) {\n _this.overlay = overlay;\n _this.props.overlayRef && _this.props.overlayRef(overlay);\n };\n\n _this.setContentRef = function (content) {\n _this.content = content;\n _this.props.contentRef && _this.props.contentRef(content);\n };\n\n _this.afterClose = function () {\n var _this$props = _this.props,\n appElement = _this$props.appElement,\n ariaHideApp = _this$props.ariaHideApp,\n htmlOpenClassName = _this$props.htmlOpenClassName,\n bodyOpenClassName = _this$props.bodyOpenClassName;\n\n // Remove classes.\n\n bodyOpenClassName && classList.remove(document.body, bodyOpenClassName);\n\n htmlOpenClassName && classList.remove(document.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n // Reset aria-hidden attribute if all modals have been removed\n if (ariaHideApp && ariaHiddenInstances > 0) {\n ariaHiddenInstances -= 1;\n\n if (ariaHiddenInstances === 0) {\n ariaAppHider.show(appElement);\n }\n }\n\n if (_this.props.shouldFocusAfterRender) {\n if (_this.props.shouldReturnFocusAfterClose) {\n focusManager.returnFocus(_this.props.preventScroll);\n focusManager.teardownScopedFocus();\n } else {\n focusManager.popWithoutFocus();\n }\n }\n\n if (_this.props.onAfterClose) {\n _this.props.onAfterClose();\n }\n\n _portalOpenInstances2.default.deregister(_this);\n };\n\n _this.open = function () {\n _this.beforeOpen();\n if (_this.state.afterOpen && _this.state.beforeClose) {\n clearTimeout(_this.closeTimer);\n _this.setState({ beforeClose: false });\n } else {\n if (_this.props.shouldFocusAfterRender) {\n focusManager.setupScopedFocus(_this.node);\n focusManager.markForFocusLater();\n }\n\n _this.setState({ isOpen: true }, function () {\n _this.openAnimationFrame = requestAnimationFrame(function () {\n _this.setState({ afterOpen: true });\n\n if (_this.props.isOpen && _this.props.onAfterOpen) {\n _this.props.onAfterOpen({\n overlayEl: _this.overlay,\n contentEl: _this.content\n });\n }\n });\n });\n }\n };\n\n _this.close = function () {\n if (_this.props.closeTimeoutMS > 0) {\n _this.closeWithTimeout();\n } else {\n _this.closeWithoutTimeout();\n }\n };\n\n _this.focusContent = function () {\n return _this.content && !_this.contentHasFocus() && _this.content.focus({ preventScroll: true });\n };\n\n _this.closeWithTimeout = function () {\n var closesAt = Date.now() + _this.props.closeTimeoutMS;\n _this.setState({ beforeClose: true, closesAt: closesAt }, function () {\n _this.closeTimer = setTimeout(_this.closeWithoutTimeout, _this.state.closesAt - Date.now());\n });\n };\n\n _this.closeWithoutTimeout = function () {\n _this.setState({\n beforeClose: false,\n isOpen: false,\n afterOpen: false,\n closesAt: null\n }, _this.afterClose);\n };\n\n _this.handleKeyDown = function (event) {\n if (event.keyCode === TAB_KEY) {\n (0, _scopeTab2.default)(_this.content, event);\n }\n\n if (_this.props.shouldCloseOnEsc && event.keyCode === ESC_KEY) {\n event.stopPropagation();\n _this.requestClose(event);\n }\n };\n\n _this.handleOverlayOnClick = function (event) {\n if (_this.shouldClose === null) {\n _this.shouldClose = true;\n }\n\n if (_this.shouldClose && _this.props.shouldCloseOnOverlayClick) {\n if (_this.ownerHandlesClose()) {\n _this.requestClose(event);\n } else {\n _this.focusContent();\n }\n }\n _this.shouldClose = null;\n };\n\n _this.handleContentOnMouseUp = function () {\n _this.shouldClose = false;\n };\n\n _this.handleOverlayOnMouseDown = function (event) {\n if (!_this.props.shouldCloseOnOverlayClick && event.target == _this.overlay) {\n event.preventDefault();\n }\n };\n\n _this.handleContentOnClick = function () {\n _this.shouldClose = false;\n };\n\n _this.handleContentOnMouseDown = function () {\n _this.shouldClose = false;\n };\n\n _this.requestClose = function (event) {\n return _this.ownerHandlesClose() && _this.props.onRequestClose(event);\n };\n\n _this.ownerHandlesClose = function () {\n return _this.props.onRequestClose;\n };\n\n _this.shouldBeClosed = function () {\n return !_this.state.isOpen && !_this.state.beforeClose;\n };\n\n _this.contentHasFocus = function () {\n return document.activeElement === _this.content || _this.content.contains(document.activeElement);\n };\n\n _this.buildClassName = function (which, additional) {\n var classNames = (typeof additional === \"undefined\" ? \"undefined\" : _typeof(additional)) === \"object\" ? additional : {\n base: CLASS_NAMES[which],\n afterOpen: CLASS_NAMES[which] + \"--after-open\",\n beforeClose: CLASS_NAMES[which] + \"--before-close\"\n };\n var className = classNames.base;\n if (_this.state.afterOpen) {\n className = className + \" \" + classNames.afterOpen;\n }\n if (_this.state.beforeClose) {\n className = className + \" \" + classNames.beforeClose;\n }\n return typeof additional === \"string\" && additional ? className + \" \" + additional : className;\n };\n\n _this.attributesFromObject = function (prefix, items) {\n return Object.keys(items).reduce(function (acc, name) {\n acc[prefix + \"-\" + name] = items[name];\n return acc;\n }, {});\n };\n\n _this.state = {\n afterOpen: false,\n beforeClose: false\n };\n\n _this.shouldClose = null;\n _this.moveFromContentToOverlay = null;\n return _this;\n }\n\n _createClass(ModalPortal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.props.isOpen) {\n this.open();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n if (process.env.NODE_ENV !== \"production\") {\n if (prevProps.bodyOpenClassName !== this.props.bodyOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"bodyOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n if (prevProps.htmlOpenClassName !== this.props.htmlOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"htmlOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n }\n\n if (this.props.isOpen && !prevProps.isOpen) {\n this.open();\n } else if (!this.props.isOpen && prevProps.isOpen) {\n this.close();\n }\n\n // Focus only needs to be set once when the modal is being opened\n if (this.props.shouldFocusAfterRender && this.state.isOpen && !prevState.isOpen) {\n this.focusContent();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.state.isOpen) {\n this.afterClose();\n }\n clearTimeout(this.closeTimer);\n cancelAnimationFrame(this.openAnimationFrame);\n }\n }, {\n key: \"beforeOpen\",\n value: function beforeOpen() {\n var _props = this.props,\n appElement = _props.appElement,\n ariaHideApp = _props.ariaHideApp,\n htmlOpenClassName = _props.htmlOpenClassName,\n bodyOpenClassName = _props.bodyOpenClassName;\n\n // Add classes.\n\n bodyOpenClassName && classList.add(document.body, bodyOpenClassName);\n\n htmlOpenClassName && classList.add(document.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n if (ariaHideApp) {\n ariaHiddenInstances += 1;\n ariaAppHider.hide(appElement);\n }\n\n _portalOpenInstances2.default.register(this);\n }\n\n // Don't steal focus from inner elements\n\n }, {\n key: \"render\",\n value: function render() {\n var _props2 = this.props,\n id = _props2.id,\n className = _props2.className,\n overlayClassName = _props2.overlayClassName,\n defaultStyles = _props2.defaultStyles,\n children = _props2.children;\n\n var contentStyles = className ? {} : defaultStyles.content;\n var overlayStyles = overlayClassName ? {} : defaultStyles.overlay;\n\n if (this.shouldBeClosed()) {\n return null;\n }\n\n var overlayProps = {\n ref: this.setOverlayRef,\n className: this.buildClassName(\"overlay\", overlayClassName),\n style: _extends({}, overlayStyles, this.props.style.overlay),\n onClick: this.handleOverlayOnClick,\n onMouseDown: this.handleOverlayOnMouseDown\n };\n\n var contentProps = _extends({\n id: id,\n ref: this.setContentRef,\n style: _extends({}, contentStyles, this.props.style.content),\n className: this.buildClassName(\"content\", className),\n tabIndex: \"-1\",\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleContentOnMouseDown,\n onMouseUp: this.handleContentOnMouseUp,\n onClick: this.handleContentOnClick,\n role: this.props.role,\n \"aria-label\": this.props.contentLabel\n }, this.attributesFromObject(\"aria\", _extends({ modal: true }, this.props.aria)), this.attributesFromObject(\"data\", this.props.data || {}), {\n \"data-testid\": this.props.testId\n });\n\n var contentElement = this.props.contentElement(contentProps, children);\n return this.props.overlayElement(overlayProps, contentElement);\n }\n }]);\n\n return ModalPortal;\n}(_react.Component);\n\nModalPortal.defaultProps = {\n style: {\n overlay: {},\n content: {}\n },\n defaultStyles: {}\n};\nModalPortal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n defaultStyles: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n bodyOpenClassName: _propTypes2.default.string,\n htmlOpenClassName: _propTypes2.default.string,\n ariaHideApp: _propTypes2.default.bool,\n appElement: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_safeHTMLElement2.default), _propTypes2.default.instanceOf(_safeHTMLElement.SafeHTMLCollection), _propTypes2.default.instanceOf(_safeHTMLElement.SafeNodeList), _propTypes2.default.arrayOf(_propTypes2.default.instanceOf(_safeHTMLElement2.default))]),\n onAfterOpen: _propTypes2.default.func,\n onAfterClose: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n shouldReturnFocusAfterClose: _propTypes2.default.bool,\n preventScroll: _propTypes2.default.bool,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n aria: _propTypes2.default.object,\n data: _propTypes2.default.object,\n children: _propTypes2.default.node,\n shouldCloseOnEsc: _propTypes2.default.bool,\n overlayRef: _propTypes2.default.func,\n contentRef: _propTypes2.default.func,\n id: _propTypes2.default.string,\n overlayElement: _propTypes2.default.func,\n contentElement: _propTypes2.default.func,\n testId: _propTypes2.default.string\n};\nexports.default = ModalPortal;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.assertNodeList = assertNodeList;\nexports.setElement = setElement;\nexports.validateElement = validateElement;\nexports.hide = hide;\nexports.show = show;\nexports.documentNotReadyOrSSRTesting = documentNotReadyOrSSRTesting;\n\nvar _warning = require(\"warning\");\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _safeHTMLElement = require(\"./safeHTMLElement\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar globalElement = null;\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n if (globalElement) {\n if (globalElement.removeAttribute) {\n globalElement.removeAttribute(\"aria-hidden\");\n } else if (globalElement.length != null) {\n globalElement.forEach(function (element) {\n return element.removeAttribute(\"aria-hidden\");\n });\n } else {\n document.querySelectorAll(globalElement).forEach(function (element) {\n return element.removeAttribute(\"aria-hidden\");\n });\n }\n }\n globalElement = null;\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n var check = globalElement || {};\n console.log(\"ariaAppHider ----------\");\n console.log(check.nodeName, check.className, check.id);\n console.log(\"end ariaAppHider ----------\");\n }\n}\n/* eslint-enable no-console */\n\nfunction assertNodeList(nodeList, selector) {\n if (!nodeList || !nodeList.length) {\n throw new Error(\"react-modal: No elements were found for selector \" + selector + \".\");\n }\n}\n\nfunction setElement(element) {\n var useElement = element;\n if (typeof useElement === \"string\" && _safeHTMLElement.canUseDOM) {\n var el = document.querySelectorAll(useElement);\n assertNodeList(el, useElement);\n useElement = el;\n }\n globalElement = useElement || globalElement;\n return globalElement;\n}\n\nfunction validateElement(appElement) {\n var el = appElement || globalElement;\n if (el) {\n return Array.isArray(el) || el instanceof HTMLCollection || el instanceof NodeList ? el : [el];\n } else {\n (0, _warning2.default)(false, [\"react-modal: App element is not defined.\", \"Please use `Modal.setAppElement(el)` or set `appElement={el}`.\", \"This is needed so screen readers don't see main content\", \"when modal is opened. It is not recommended, but you can opt-out\", \"by setting `ariaHideApp={false}`.\"].join(\" \"));\n\n return [];\n }\n}\n\nfunction hide(appElement) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = validateElement(appElement)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var el = _step.value;\n\n el.setAttribute(\"aria-hidden\", \"true\");\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\nfunction show(appElement) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = validateElement(appElement)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var el = _step2.value;\n\n el.removeAttribute(\"aria-hidden\");\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n}\n\nfunction documentNotReadyOrSSRTesting() {\n globalElement = null;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\n\nvar _portalOpenInstances = require(\"./portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Body focus trap see Issue #742\n\nvar before = void 0,\n after = void 0,\n instances = [];\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n var _arr = [before, after];\n\n for (var _i = 0; _i < _arr.length; _i++) {\n var item = _arr[_i];\n if (!item) continue;\n item.parentNode && item.parentNode.removeChild(item);\n }\n before = after = null;\n instances = [];\n}\n\n/* istanbul ignore next */\nfunction log() {\n console.log(\"bodyTrap ----------\");\n console.log(instances.length);\n var _arr2 = [before, after];\n for (var _i2 = 0; _i2 < _arr2.length; _i2++) {\n var item = _arr2[_i2];\n var check = item || {};\n console.log(check.nodeName, check.className, check.id);\n }\n console.log(\"edn bodyTrap ----------\");\n}\n/* eslint-enable no-console */\n\nfunction focusContent() {\n if (instances.length === 0) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Open instances > 0 expected\");\n }\n return;\n }\n instances[instances.length - 1].focusContent();\n}\n\nfunction bodyTrap(eventType, openInstances) {\n if (!before && !after) {\n before = document.createElement(\"div\");\n before.setAttribute(\"data-react-modal-body-trap\", \"\");\n before.style.position = \"absolute\";\n before.style.opacity = \"0\";\n before.setAttribute(\"tabindex\", \"0\");\n before.addEventListener(\"focus\", focusContent);\n after = before.cloneNode();\n after.addEventListener(\"focus\", focusContent);\n }\n\n instances = openInstances;\n\n if (instances.length > 0) {\n // Add focus trap\n if (document.body.firstChild !== before) {\n document.body.insertBefore(before, document.body.firstChild);\n }\n if (document.body.lastChild !== after) {\n document.body.appendChild(after);\n }\n } else {\n // Remove focus trap\n if (before.parentElement) {\n before.parentElement.removeChild(before);\n }\n if (after.parentElement) {\n after.parentElement.removeChild(after);\n }\n }\n}\n\n_portalOpenInstances2.default.subscribe(bodyTrap);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nvar htmlClassList = {};\nvar docBodyClassList = {};\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction removeClass(at, cls) {\n at.classList.remove(cls);\n}\n\n/* istanbul ignore next */\nfunction resetState() {\n var htmlElement = document.getElementsByTagName(\"html\")[0];\n for (var cls in htmlClassList) {\n removeClass(htmlElement, htmlClassList[cls]);\n }\n\n var body = document.body;\n for (var _cls in docBodyClassList) {\n removeClass(body, docBodyClassList[_cls]);\n }\n\n htmlClassList = {};\n docBodyClassList = {};\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n var classes = document.getElementsByTagName(\"html\")[0].className;\n var buffer = \"Show tracked classes:\\n\\n\";\n\n buffer += \" (\" + classes + \"):\\n \";\n for (var x in htmlClassList) {\n buffer += \" \" + x + \" \" + htmlClassList[x] + \"\\n \";\n }\n\n classes = document.body.className;\n\n buffer += \"\\n\\ndoc.body (\" + classes + \"):\\n \";\n for (var _x in docBodyClassList) {\n buffer += \" \" + _x + \" \" + docBodyClassList[_x] + \"\\n \";\n }\n\n buffer += \"\\n\";\n\n console.log(buffer);\n }\n}\n/* eslint-enable no-console */\n\n/**\n * Track the number of reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\nvar incrementReference = function incrementReference(poll, className) {\n if (!poll[className]) {\n poll[className] = 0;\n }\n poll[className] += 1;\n return className;\n};\n\n/**\n * Drop the reference of a class.\n * @param {object} poll The poll to receive the reference.\n * @param {string} className The class name.\n * @return {string}\n */\nvar decrementReference = function decrementReference(poll, className) {\n if (poll[className]) {\n poll[className] -= 1;\n }\n return className;\n};\n\n/**\n * Track a class and add to the given class list.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll The poll to be used.\n * @param {Array} classes The list of classes to be tracked.\n */\nvar trackClass = function trackClass(classListRef, poll, classes) {\n classes.forEach(function (className) {\n incrementReference(poll, className);\n classListRef.add(className);\n });\n};\n\n/**\n * Untrack a class and remove from the given class list if the reference\n * reaches 0.\n * @param {Object} classListRef A class list of an element.\n * @param {Object} poll The poll to be used.\n * @param {Array} classes The list of classes to be untracked.\n */\nvar untrackClass = function untrackClass(classListRef, poll, classes) {\n classes.forEach(function (className) {\n decrementReference(poll, className);\n poll[className] === 0 && classListRef.remove(className);\n });\n};\n\n/**\n * Public inferface to add classes to the document.body.\n * @param {string} bodyClass The class string to be added.\n * It may contain more then one class\n * with ' ' as separator.\n */\nvar add = exports.add = function add(element, classString) {\n return trackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};\n\n/**\n * Public inferface to remove classes from the document.body.\n * @param {string} bodyClass The class string to be added.\n * It may contain more then one class\n * with ' ' as separator.\n */\nvar remove = exports.remove = function remove(element, classString) {\n return untrackClass(element.classList, element.nodeName.toLowerCase() == \"html\" ? htmlClassList : docBodyClassList, classString.split(\" \"));\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resetState = resetState;\nexports.log = log;\nexports.handleBlur = handleBlur;\nexports.handleFocus = handleFocus;\nexports.markForFocusLater = markForFocusLater;\nexports.returnFocus = returnFocus;\nexports.popWithoutFocus = popWithoutFocus;\nexports.setupScopedFocus = setupScopedFocus;\nexports.teardownScopedFocus = teardownScopedFocus;\n\nvar _tabbable = require(\"../helpers/tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar focusLaterElements = [];\nvar modalElement = null;\nvar needToFocus = false;\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction resetState() {\n focusLaterElements = [];\n}\n\n/* istanbul ignore next */\nfunction log() {\n if (process.env.NODE_ENV !== \"production\") {\n console.log(\"focusManager ----------\");\n focusLaterElements.forEach(function (f) {\n var check = f || {};\n console.log(check.nodeName, check.className, check.id);\n });\n console.log(\"end focusManager ----------\");\n }\n}\n/* eslint-enable no-console */\n\nfunction handleBlur() {\n needToFocus = true;\n}\n\nfunction handleFocus() {\n if (needToFocus) {\n needToFocus = false;\n if (!modalElement) {\n return;\n }\n // need to see how jQuery shims document.on('focusin') so we don't need the\n // setTimeout, firefox doesn't support focusin, if it did, we could focus\n // the element outside of a setTimeout. Side-effect of this implementation\n // is that the document.body gets focus, and then we focus our element right\n // after, seems fine.\n setTimeout(function () {\n if (modalElement.contains(document.activeElement)) {\n return;\n }\n var el = (0, _tabbable2.default)(modalElement)[0] || modalElement;\n el.focus();\n }, 0);\n }\n}\n\nfunction markForFocusLater() {\n focusLaterElements.push(document.activeElement);\n}\n\n/* eslint-disable no-console */\nfunction returnFocus() {\n var preventScroll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var toFocus = null;\n try {\n if (focusLaterElements.length !== 0) {\n toFocus = focusLaterElements.pop();\n toFocus.focus({ preventScroll: preventScroll });\n }\n return;\n } catch (e) {\n console.warn([\"You tried to return focus to\", toFocus, \"but it is not in the DOM anymore\"].join(\" \"));\n }\n}\n/* eslint-enable no-console */\n\nfunction popWithoutFocus() {\n focusLaterElements.length > 0 && focusLaterElements.pop();\n}\n\nfunction setupScopedFocus(element) {\n modalElement = element;\n\n if (window.addEventListener) {\n window.addEventListener(\"blur\", handleBlur, false);\n document.addEventListener(\"focus\", handleFocus, true);\n } else {\n window.attachEvent(\"onBlur\", handleBlur);\n document.attachEvent(\"onFocus\", handleFocus);\n }\n}\n\nfunction teardownScopedFocus() {\n modalElement = null;\n\n if (window.addEventListener) {\n window.removeEventListener(\"blur\", handleBlur);\n document.removeEventListener(\"focus\", handleFocus);\n } else {\n window.detachEvent(\"onBlur\", handleBlur);\n document.detachEvent(\"onFocus\", handleFocus);\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.log = log;\nexports.resetState = resetState;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// Tracks portals that are open and emits events to subscribers\n\nvar PortalOpenInstances = function PortalOpenInstances() {\n var _this = this;\n\n _classCallCheck(this, PortalOpenInstances);\n\n this.register = function (openInstance) {\n if (_this.openInstances.indexOf(openInstance) !== -1) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Cannot register modal instance that's already open\");\n }\n return;\n }\n _this.openInstances.push(openInstance);\n _this.emit(\"register\");\n };\n\n this.deregister = function (openInstance) {\n var index = _this.openInstances.indexOf(openInstance);\n if (index === -1) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Unable to deregister \" + openInstance + \" as \" + \"it was never registered\");\n }\n return;\n }\n _this.openInstances.splice(index, 1);\n _this.emit(\"deregister\");\n };\n\n this.subscribe = function (callback) {\n _this.subscribers.push(callback);\n };\n\n this.emit = function (eventType) {\n _this.subscribers.forEach(function (subscriber) {\n return subscriber(eventType,\n // shallow copy to avoid accidental mutation\n _this.openInstances.slice());\n });\n };\n\n this.openInstances = [];\n this.subscribers = [];\n};\n\nvar portalOpenInstances = new PortalOpenInstances();\n\n/* eslint-disable no-console */\n/* istanbul ignore next */\nfunction log() {\n console.log(\"portalOpenInstances ----------\");\n console.log(portalOpenInstances.openInstances.length);\n portalOpenInstances.openInstances.forEach(function (p) {\n return console.log(p);\n });\n console.log(\"end portalOpenInstances ----------\");\n}\n\n/* istanbul ignore next */\nfunction resetState() {\n portalOpenInstances = new PortalOpenInstances();\n}\n/* eslint-enable no-console */\n\nexports.default = portalOpenInstances;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canUseDOM = exports.SafeNodeList = exports.SafeHTMLCollection = undefined;\n\nvar _exenv = require(\"exenv\");\n\nvar _exenv2 = _interopRequireDefault(_exenv);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EE = _exenv2.default;\n\nvar SafeHTMLElement = EE.canUseDOM ? window.HTMLElement : {};\n\nvar SafeHTMLCollection = exports.SafeHTMLCollection = EE.canUseDOM ? window.HTMLCollection : {};\n\nvar SafeNodeList = exports.SafeNodeList = EE.canUseDOM ? window.NodeList : {};\n\nvar canUseDOM = exports.canUseDOM = EE.canUseDOM;\n\nexports.default = SafeHTMLElement;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = scopeTab;\n\nvar _tabbable = require(\"./tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getActiveElement() {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n\n return el.activeElement.shadowRoot ? getActiveElement(el.activeElement.shadowRoot) : el.activeElement;\n}\n\nfunction scopeTab(node, event) {\n var tabbable = (0, _tabbable2.default)(node);\n\n if (!tabbable.length) {\n // Do nothing, since there are no elements that can receive focus.\n event.preventDefault();\n return;\n }\n\n var target = void 0;\n\n var shiftKey = event.shiftKey;\n var head = tabbable[0];\n var tail = tabbable[tabbable.length - 1];\n var activeElement = getActiveElement();\n\n // proceed with default browser behavior on tab.\n // Focus on last element on shift + tab.\n if (node === activeElement) {\n if (!shiftKey) return;\n target = tail;\n }\n\n if (tail === activeElement && !shiftKey) {\n target = head;\n }\n\n if (head === activeElement && shiftKey) {\n target = tail;\n }\n\n if (target) {\n event.preventDefault();\n target.focus();\n return;\n }\n\n // Safari radio issue.\n //\n // Safari does not move the focus to the radio button,\n // so we need to force it to really walk through all elements.\n //\n // This is very error prone, since we are trying to guess\n // if it is a safari browser from the first occurence between\n // chrome or safari.\n //\n // The chrome user agent contains the first ocurrence\n // as the 'chrome/version' and later the 'safari/version'.\n var checkSafari = /(\\bChrome\\b|\\bSafari\\b)\\//.exec(navigator.userAgent);\n var isSafariDesktop = checkSafari != null && checkSafari[1] != \"Chrome\" && /\\biPod\\b|\\biPad\\b/g.exec(navigator.userAgent) == null;\n\n // If we are not in safari desktop, let the browser control\n // the focus\n if (!isSafariDesktop) return;\n\n var x = tabbable.indexOf(activeElement);\n\n if (x > -1) {\n x += shiftKey ? -1 : 1;\n }\n\n target = tabbable[x];\n\n // If the tabbable element does not exist,\n // focus head/tail based on shiftKey\n if (typeof target === \"undefined\") {\n event.preventDefault();\n target = shiftKey ? tail : head;\n target.focus();\n return;\n }\n\n event.preventDefault();\n\n target.focus();\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = findTabbableDescendants;\n/*!\n * Adapted from jQuery UI core\n *\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n\nvar tabbableNode = /input|select|textarea|button|object|iframe/;\n\nfunction hidesContents(element) {\n var zeroSize = element.offsetWidth <= 0 && element.offsetHeight <= 0;\n\n // If the node is empty, this is good enough\n if (zeroSize && !element.innerHTML) return true;\n\n try {\n // Otherwise we need to check some styles\n var style = window.getComputedStyle(element);\n return zeroSize ? style.getPropertyValue(\"overflow\") !== \"visible\" ||\n // if 'overflow: visible' set, check if there is actually any overflow\n element.scrollWidth <= 0 && element.scrollHeight <= 0 : style.getPropertyValue(\"display\") == \"none\";\n } catch (exception) {\n // eslint-disable-next-line no-console\n console.warn(\"Failed to inspect element style\");\n return false;\n }\n}\n\nfunction visible(element) {\n var parentElement = element;\n var rootNode = element.getRootNode && element.getRootNode();\n while (parentElement) {\n if (parentElement === document.body) break;\n\n // if we are not hidden yet, skip to checking outside the Web Component\n if (rootNode && parentElement === rootNode) parentElement = rootNode.host.parentNode;\n\n if (hidesContents(parentElement)) return false;\n parentElement = parentElement.parentNode;\n }\n return true;\n}\n\nfunction focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n var res = tabbableNode.test(nodeName) && !element.disabled || (nodeName === \"a\" ? element.href || isTabIndexNotNaN : isTabIndexNotNaN);\n return res && visible(element);\n}\n\nfunction tabbable(element) {\n var tabIndex = element.getAttribute(\"tabindex\");\n if (tabIndex === null) tabIndex = undefined;\n var isTabIndexNaN = isNaN(tabIndex);\n return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN);\n}\n\nfunction findTabbableDescendants(element) {\n var descendants = [].slice.call(element.querySelectorAll(\"*\"), 0).reduce(function (finished, el) {\n return finished.concat(!el.shadowRoot ? [el] : findTabbableDescendants(el.shadowRoot));\n }, []);\n return descendants.filter(tabbable);\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Modal = require(\"./components/Modal\");\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Modal2.default;\nmodule.exports = exports[\"default\"];","// extracted by mini-css-extract-plugin\nexport default {\"button-group\":\"ButtonGroup--button-group--13xTd\",\"buttonGroup\":\"ButtonGroup--button-group--13xTd\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport styles from './styles.scss';\n\nconst ButtonGroup = ({ children, className, ...otherProps }) => {\n const classNames = [styles.buttonGroup, className];\n\n return (\n
\n {children}\n
\n );\n};\n\nButtonGroup.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string\n};\n\nButtonGroup.defaultProps = {\n className: null\n};\n\nexport default ButtonGroup;\n","import MediaQuery from 'react-responsive';\n\nexport const breakpoints = {\n screenXs: 480,\n screenXsMax: 767,\n screenSm: 768,\n screenSmMax: 991,\n screenMd: 992,\n screenMdMax: 1199,\n screenLg: 1200,\n screenLgMax: 1249,\n screenXl: 1250\n};\n\nexport const matchMedia = {\n screenXs() {\n return window.matchMedia(`(max-width: ${breakpoints.screenXs}px)`).matches;\n },\n\n screenSm() {\n return window.matchMedia(`(max-width: ${breakpoints.screenSm}px)`).matches;\n },\n\n screenMd() {\n return window.matchMedia(`(max-width: ${breakpoints.screenMd}px)`).matches;\n },\n\n screenLg() {\n return window.matchMedia(`(max-width: ${breakpoints.screenLg}px)`).matches;\n },\n\n screenXl() {\n return window.matchMedia(`(max-width: ${breakpoints.screenXl}px)`).matches;\n }\n};\n\nexport default MediaQuery;\n","/**\n * defines a focus group\n */\nexport var FOCUS_GROUP = 'data-focus-lock';\n/**\n * disables element discovery inside a group marked by key\n */\nexport var FOCUS_DISABLED = 'data-focus-lock-disabled';\n/**\n * allows uncontrolled focus within the marked area, effectively disabling focus lock for it's content\n */\nexport var FOCUS_ALLOW = 'data-no-focus-lock';\n/**\n * instructs autofocus engine to pick default autofocus inside a given node\n * can be set on the element or container\n */\nexport var FOCUS_AUTO = 'data-autofocus-inside';\n/**\n * instructs autofocus to ignore elements within a given node\n * can be set on the element or container\n */\nexport var FOCUS_NO_AUTOFOCUS = 'data-no-autofocus';\n","import { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return
...
\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n return useCallbackRef(defaultValue || null, function (newValue) { return refs.forEach(function (ref) { return assignRef(ref, newValue); }); });\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\nexport var hiddenGuard = {\n width: '1px',\n height: '0px',\n padding: 0,\n overflow: 'hidden',\n position: 'fixed',\n top: '1px',\n left: '1px'\n};\n\nvar InFocusGuard = function InFocusGuard(_ref) {\n var children = _ref.children;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n key: \"guard-first\",\n \"data-focus-guard\": true,\n \"data-focus-auto-guard\": true,\n style: hiddenGuard\n }), children, children && /*#__PURE__*/React.createElement(\"div\", {\n key: \"guard-last\",\n \"data-focus-guard\": true,\n \"data-focus-auto-guard\": true,\n style: hiddenGuard\n }));\n};\n\nInFocusGuard.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: PropTypes.node\n} : {};\nInFocusGuard.defaultProps = {\n children: null\n};\nexport default InFocusGuard;","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { createMedium, createSidecarMedium } from 'use-sidecar';\nexport var mediumFocus = createMedium({}, function (_ref) {\n var target = _ref.target,\n currentTarget = _ref.currentTarget;\n return {\n target: target,\n currentTarget: currentTarget\n };\n});\nexport var mediumBlur = createMedium();\nexport var mediumEffect = createMedium();\nexport var mediumSidecar = createSidecarMedium({\n async: true\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { node, bool, string, any, arrayOf, oneOfType, object, func } from 'prop-types';\nimport * as constants from 'focus-lock/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { useEffect } from 'react';\nimport { hiddenGuard } from './FocusGuard';\nimport { mediumFocus, mediumBlur, mediumSidecar } from './medium';\nvar emptyArray = [];\nvar FocusLock = /*#__PURE__*/React.forwardRef(function FocusLockUI(props, parentRef) {\n var _extends2;\n\n var _React$useState = React.useState(),\n realObserved = _React$useState[0],\n setObserved = _React$useState[1];\n\n var observed = React.useRef();\n var isActive = React.useRef(false);\n var originalFocusedElement = React.useRef(null);\n var children = props.children,\n disabled = props.disabled,\n noFocusGuards = props.noFocusGuards,\n persistentFocus = props.persistentFocus,\n crossFrame = props.crossFrame,\n autoFocus = props.autoFocus,\n allowTextSelection = props.allowTextSelection,\n group = props.group,\n className = props.className,\n whiteList = props.whiteList,\n hasPositiveIndices = props.hasPositiveIndices,\n _props$shards = props.shards,\n shards = _props$shards === void 0 ? emptyArray : _props$shards,\n _props$as = props.as,\n Container = _props$as === void 0 ? 'div' : _props$as,\n _props$lockProps = props.lockProps,\n containerProps = _props$lockProps === void 0 ? {} : _props$lockProps,\n SideCar = props.sideCar,\n shouldReturnFocus = props.returnFocus,\n focusOptions = props.focusOptions,\n onActivationCallback = props.onActivation,\n onDeactivationCallback = props.onDeactivation;\n\n var _React$useState2 = React.useState({}),\n id = _React$useState2[0]; // SIDE EFFECT CALLBACKS\n\n\n var onActivation = React.useCallback(function () {\n originalFocusedElement.current = originalFocusedElement.current || document && document.activeElement;\n\n if (observed.current && onActivationCallback) {\n onActivationCallback(observed.current);\n }\n\n isActive.current = true;\n }, [onActivationCallback]);\n var onDeactivation = React.useCallback(function () {\n isActive.current = false;\n\n if (onDeactivationCallback) {\n onDeactivationCallback(observed.current);\n }\n }, [onDeactivationCallback]);\n useEffect(function () {\n if (!disabled) {\n // cleanup return focus on trap deactivation\n // sideEffect/returnFocus should happen by this time\n originalFocusedElement.current = null;\n }\n }, []);\n var returnFocus = React.useCallback(function (allowDefer) {\n var returnFocusTo = originalFocusedElement.current;\n\n if (returnFocusTo && returnFocusTo.focus) {\n var howToReturnFocus = typeof shouldReturnFocus === 'function' ? shouldReturnFocus(returnFocusTo) : shouldReturnFocus;\n\n if (howToReturnFocus) {\n var returnFocusOptions = typeof howToReturnFocus === 'object' ? howToReturnFocus : undefined;\n originalFocusedElement.current = null;\n\n if (allowDefer) {\n // React might return focus after update\n // it's safer to defer the action\n Promise.resolve().then(function () {\n return returnFocusTo.focus(returnFocusOptions);\n });\n } else {\n returnFocusTo.focus(returnFocusOptions);\n }\n }\n }\n }, [shouldReturnFocus]); // MEDIUM CALLBACKS\n\n var onFocus = React.useCallback(function (event) {\n if (isActive.current) {\n mediumFocus.useMedium(event);\n }\n }, []);\n var onBlur = mediumBlur.useMedium; // REF PROPAGATION\n // not using real refs due to race conditions\n\n var setObserveNode = React.useCallback(function (newObserved) {\n if (observed.current !== newObserved) {\n observed.current = newObserved;\n setObserved(newObserved);\n }\n }, []);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof allowTextSelection !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn('React-Focus-Lock: allowTextSelection is deprecated and enabled by default');\n }\n\n React.useEffect(function () {\n if (!observed.current) {\n // eslint-disable-next-line no-console\n console.error('FocusLock: could not obtain ref to internal node');\n }\n }, []);\n }\n\n var lockProps = _extends((_extends2 = {}, _extends2[constants.FOCUS_DISABLED] = disabled && 'disabled', _extends2[constants.FOCUS_GROUP] = group, _extends2), containerProps);\n\n var hasLeadingGuards = noFocusGuards !== true;\n var hasTailingGuards = hasLeadingGuards && noFocusGuards !== 'tail';\n var mergedRef = useMergeRefs([parentRef, setObserveNode]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, hasLeadingGuards && [\n /*#__PURE__*/\n // nearest focus guard\n React.createElement(\"div\", {\n key: \"guard-first\",\n \"data-focus-guard\": true,\n tabIndex: disabled ? -1 : 0,\n style: hiddenGuard\n }), // first tabbed element guard\n hasPositiveIndices ? /*#__PURE__*/React.createElement(\"div\", {\n key: \"guard-nearest\",\n \"data-focus-guard\": true,\n tabIndex: disabled ? -1 : 1,\n style: hiddenGuard\n }) : null], !disabled && /*#__PURE__*/React.createElement(SideCar, {\n id: id,\n sideCar: mediumSidecar,\n observed: realObserved,\n disabled: disabled,\n persistentFocus: persistentFocus,\n crossFrame: crossFrame,\n autoFocus: autoFocus,\n whiteList: whiteList,\n shards: shards,\n onActivation: onActivation,\n onDeactivation: onDeactivation,\n returnFocus: returnFocus,\n focusOptions: focusOptions\n }), /*#__PURE__*/React.createElement(Container, _extends({\n ref: mergedRef\n }, lockProps, {\n className: className,\n onBlur: onBlur,\n onFocus: onFocus\n }), children), hasTailingGuards && /*#__PURE__*/React.createElement(\"div\", {\n \"data-focus-guard\": true,\n tabIndex: disabled ? -1 : 0,\n style: hiddenGuard\n }));\n});\nFocusLock.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: node,\n disabled: bool,\n returnFocus: oneOfType([bool, object, func]),\n focusOptions: object,\n noFocusGuards: bool,\n hasPositiveIndices: bool,\n allowTextSelection: bool,\n autoFocus: bool,\n persistentFocus: bool,\n crossFrame: bool,\n group: string,\n className: string,\n whiteList: func,\n shards: arrayOf(any),\n as: oneOfType([string, func, object]),\n lockProps: object,\n onActivation: func,\n onDeactivation: func,\n sideCar: any.isRequired\n} : {};\nFocusLock.defaultProps = {\n children: undefined,\n disabled: false,\n returnFocus: false,\n focusOptions: undefined,\n noFocusGuards: false,\n autoFocus: true,\n persistentFocus: false,\n crossFrame: true,\n hasPositiveIndices: undefined,\n allowTextSelection: undefined,\n group: undefined,\n className: undefined,\n whiteList: undefined,\n shards: undefined,\n as: 'div',\n lockProps: {},\n onActivation: undefined,\n onDeactivation: undefined\n};\nexport default FocusLock;","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { PureComponent } from 'react';\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n handleStateChangeOnClient(state);\n }\n\n var SideEffect = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n SideEffect.peek = function peek() {\n return state;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n return SideEffect;\n };\n}\n\nexport default withSideEffect;\n","import { FOCUS_NO_AUTOFOCUS } from '../constants';\nvar isElementHidden = function (node) {\n // we can measure only \"elements\"\n // consider others as \"visible\"\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false;\n }\n var computedStyle = window.getComputedStyle(node, null);\n if (!computedStyle || !computedStyle.getPropertyValue) {\n return false;\n }\n return (computedStyle.getPropertyValue('display') === 'none' || computedStyle.getPropertyValue('visibility') === 'hidden');\n};\nvar getParentNode = function (node) {\n // DOCUMENT_FRAGMENT_NODE can also point on ShadowRoot. In this case .host will point on the next node\n return node.parentNode && node.parentNode.nodeType === Node.DOCUMENT_FRAGMENT_NODE\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node.parentNode.host\n : node.parentNode;\n};\nvar isTopNode = function (node) {\n // @ts-ignore\n return node === document || (node && node.nodeType === Node.DOCUMENT_NODE);\n};\nvar isVisibleUncached = function (node, checkParent) {\n return !node || isTopNode(node) || (!isElementHidden(node) && checkParent(getParentNode(node)));\n};\nexport var isVisibleCached = function (visibilityCache, node) {\n var cached = visibilityCache.get(node);\n if (cached !== undefined) {\n return cached;\n }\n var result = isVisibleUncached(node, isVisibleCached.bind(undefined, visibilityCache));\n visibilityCache.set(node, result);\n return result;\n};\nvar isAutoFocusAllowedUncached = function (node, checkParent) {\n return node && !isTopNode(node) ? (isAutoFocusAllowed(node) ? checkParent(getParentNode(node)) : false) : true;\n};\nexport var isAutoFocusAllowedCached = function (cache, node) {\n var cached = cache.get(node);\n if (cached !== undefined) {\n return cached;\n }\n var result = isAutoFocusAllowedUncached(node, isAutoFocusAllowedCached.bind(undefined, cache));\n cache.set(node, result);\n return result;\n};\nexport var getDataset = function (node) {\n // @ts-ignore\n return node.dataset;\n};\nexport var isHTMLButtonElement = function (node) { return node.tagName === 'BUTTON'; };\nexport var isHTMLInputElement = function (node) { return node.tagName === 'INPUT'; };\nexport var isRadioElement = function (node) {\n return isHTMLInputElement(node) && node.type === 'radio';\n};\nexport var notHiddenInput = function (node) {\n return !((isHTMLInputElement(node) || isHTMLButtonElement(node)) && (node.type === 'hidden' || node.disabled));\n};\nexport var isAutoFocusAllowed = function (node) {\n var attribute = node.getAttribute(FOCUS_NO_AUTOFOCUS);\n return ![true, 'true', ''].includes(attribute);\n};\nexport var isGuard = function (node) { var _a; return Boolean(node && ((_a = getDataset(node)) === null || _a === void 0 ? void 0 : _a.focusGuard)); };\nexport var isNotAGuard = function (node) { return !isGuard(node); };\nexport var isDefined = function (x) { return Boolean(x); };\n","import { isRadioElement } from './is';\nvar findSelectedRadio = function (node, nodes) {\n return nodes\n .filter(isRadioElement)\n .filter(function (el) { return el.name === node.name; })\n .filter(function (el) { return el.checked; })[0] || node;\n};\nexport var correctNode = function (node, nodes) {\n if (isRadioElement(node) && node.name) {\n return findSelectedRadio(node, nodes);\n }\n return node;\n};\n/**\n * giving a set of radio inputs keeps only selected (tabbable) ones\n * @param nodes\n */\nexport var correctNodes = function (nodes) {\n // IE11 has no Set(array) constructor\n var resultSet = new Set();\n nodes.forEach(function (node) { return resultSet.add(correctNode(node, nodes)); });\n // using filter to support IE11\n return nodes.filter(function (node) { return resultSet.has(node); });\n};\n","import { correctNode } from './correctFocus';\nexport var pickFirstFocus = function (nodes) {\n if (nodes[0] && nodes.length > 1) {\n return correctNode(nodes[0], nodes);\n }\n return nodes[0];\n};\nexport var pickFocusable = function (nodes, index) {\n if (nodes.length > 1) {\n return nodes.indexOf(correctNode(nodes[index], nodes));\n }\n return index;\n};\n","import { correctNodes } from './utils/correctFocus';\nimport { pickFocusable } from './utils/firstFocus';\nimport { isGuard } from './utils/is';\nexport var NEW_FOCUS = 'NEW_FOCUS';\n/**\n * Main solver for the \"find next focus\" question\n * @param innerNodes\n * @param outerNodes\n * @param activeElement\n * @param lastNode\n * @returns {number|string|undefined|*}\n */\nexport var newFocus = function (innerNodes, outerNodes, activeElement, lastNode) {\n var cnt = innerNodes.length;\n var firstFocus = innerNodes[0];\n var lastFocus = innerNodes[cnt - 1];\n var isOnGuard = isGuard(activeElement);\n // focus is inside\n if (activeElement && innerNodes.indexOf(activeElement) >= 0) {\n return undefined;\n }\n var activeIndex = activeElement !== undefined ? outerNodes.indexOf(activeElement) : -1;\n var lastIndex = lastNode ? outerNodes.indexOf(lastNode) : activeIndex;\n var lastNodeInside = lastNode ? innerNodes.indexOf(lastNode) : -1;\n var indexDiff = activeIndex - lastIndex;\n var firstNodeIndex = outerNodes.indexOf(firstFocus);\n var lastNodeIndex = outerNodes.indexOf(lastFocus);\n var correctedNodes = correctNodes(outerNodes);\n var correctedIndex = activeElement !== undefined ? correctedNodes.indexOf(activeElement) : -1;\n var correctedIndexDiff = correctedIndex - (lastNode ? correctedNodes.indexOf(lastNode) : activeIndex);\n var returnFirstNode = pickFocusable(innerNodes, 0);\n var returnLastNode = pickFocusable(innerNodes, cnt - 1);\n // new focus\n if (activeIndex === -1 || lastNodeInside === -1) {\n return NEW_FOCUS;\n }\n // old focus\n if (!indexDiff && lastNodeInside >= 0) {\n return lastNodeInside;\n }\n // first element\n if (activeIndex <= firstNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n return returnLastNode;\n }\n // last element\n if (activeIndex >= lastNodeIndex && isOnGuard && Math.abs(indexDiff) > 1) {\n return returnFirstNode;\n }\n // jump out, but not on the guard\n if (indexDiff && Math.abs(correctedIndexDiff) > 1) {\n return lastNodeInside;\n }\n // focus above lock\n if (activeIndex <= firstNodeIndex) {\n return returnLastNode;\n }\n // focus below lock\n if (activeIndex > lastNodeIndex) {\n return returnFirstNode;\n }\n // index is inside tab order, but outside Lock\n if (indexDiff) {\n if (Math.abs(indexDiff) > 1) {\n return lastNodeInside;\n }\n return (cnt + lastNodeInside + indexDiff) % cnt;\n }\n // do nothing\n return undefined;\n};\n","/*\nIE11 support\n */\nexport var toArray = function (a) {\n var ret = Array(a.length);\n for (var i = 0; i < a.length; ++i) {\n ret[i] = a[i];\n }\n return ret;\n};\nexport var asArray = function (a) { return (Array.isArray(a) ? a : [a]); };\n","import { toArray } from './array';\nexport var tabSort = function (a, b) {\n var tabDiff = a.tabIndex - b.tabIndex;\n var indexDiff = a.index - b.index;\n if (tabDiff) {\n if (!a.tabIndex) {\n return 1;\n }\n if (!b.tabIndex) {\n return -1;\n }\n }\n return tabDiff || indexDiff;\n};\nexport var orderByTabIndex = function (nodes, filterNegative, keepGuards) {\n return toArray(nodes)\n .map(function (node, index) { return ({\n node: node,\n index: index,\n tabIndex: keepGuards && node.tabIndex === -1 ? ((node.dataset || {}).focusGuard ? 0 : -1) : node.tabIndex,\n }); })\n .filter(function (data) { return !filterNegative || data.tabIndex >= 0; })\n .sort(tabSort);\n};\n","import { FOCUS_AUTO } from '../constants';\nimport { toArray } from './array';\nimport { tabbables } from './tabbables';\nvar queryTabbables = tabbables.join(',');\nvar queryGuardTabbables = \"\".concat(queryTabbables, \", [data-focus-guard]\");\nvar getFocusablesWithShadowDom = function (parent, withGuards) {\n var _a;\n return toArray(((_a = parent.shadowRoot) === null || _a === void 0 ? void 0 : _a.children) || parent.children).reduce(function (acc, child) {\n return acc.concat(child.matches(withGuards ? queryGuardTabbables : queryTabbables) ? [child] : [], getFocusablesWithShadowDom(child));\n }, []);\n};\nexport var getFocusables = function (parents, withGuards) {\n return parents.reduce(function (acc, parent) {\n return acc.concat(\n // add all tabbables inside and within shadow DOMs in DOM order\n getFocusablesWithShadowDom(parent, withGuards), \n // add if node is tabbable itself\n parent.parentNode\n ? toArray(parent.parentNode.querySelectorAll(queryTabbables)).filter(function (node) { return node === parent; })\n : []);\n }, []);\n};\n/**\n * return a list of focusable nodes within an area marked as \"auto-focusable\"\n * @param parent\n */\nexport var getParentAutofocusables = function (parent) {\n var parentFocus = parent.querySelectorAll(\"[\".concat(FOCUS_AUTO, \"]\"));\n return toArray(parentFocus)\n .map(function (node) { return getFocusables([node]); })\n .reduce(function (acc, nodes) { return acc.concat(nodes); }, []);\n};\n","/**\n * list of the object to be considered as focusable\n */\nexport var tabbables = [\n 'button:enabled',\n 'select:enabled',\n 'textarea:enabled',\n 'input:enabled',\n // elements with explicit roles will also use explicit tabindex\n // '[role=\"button\"]',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[tabindex]',\n '[contenteditable]',\n '[autofocus]',\n];\n","import { toArray } from './array';\nimport { isAutoFocusAllowedCached, isVisibleCached, notHiddenInput } from './is';\nimport { orderByTabIndex } from './tabOrder';\nimport { getFocusables, getParentAutofocusables } from './tabUtils';\n/**\n * given list of focusable elements keeps the ones user can interact with\n * @param nodes\n * @param visibilityCache\n */\nexport var filterFocusable = function (nodes, visibilityCache) {\n return toArray(nodes)\n .filter(function (node) { return isVisibleCached(visibilityCache, node); })\n .filter(function (node) { return notHiddenInput(node); });\n};\nexport var filterAutoFocusable = function (nodes, cache) {\n if (cache === void 0) { cache = new Map(); }\n return toArray(nodes).filter(function (node) { return isAutoFocusAllowedCached(cache, node); });\n};\n/**\n * only tabbable ones\n * (but with guards which would be ignored)\n */\nexport var getTabbableNodes = function (topNodes, visibilityCache, withGuards) {\n return orderByTabIndex(filterFocusable(getFocusables(topNodes, withGuards), visibilityCache), true, withGuards);\n};\n/**\n * actually anything \"focusable\", not only tabbable\n * (without guards, as long as they are not expected to be focused)\n */\nexport var getAllTabbableNodes = function (topNodes, visibilityCache) {\n return orderByTabIndex(filterFocusable(getFocusables(topNodes), visibilityCache), false);\n};\n/**\n * return list of nodes which are expected to be auto-focused\n * @param topNode\n * @param visibilityCache\n */\nexport var parentAutofocusables = function (topNode, visibilityCache) {\n return filterFocusable(getParentAutofocusables(topNode), visibilityCache);\n};\n/*\n * Determines if element is contained in scope, including nested shadow DOMs\n */\nexport var contains = function (scope, element) {\n return ((scope.shadowRoot\n ? contains(scope.shadowRoot, element)\n : Object.getPrototypeOf(scope).contains.call(scope, element)) ||\n toArray(scope.children).some(function (child) { return contains(child, element); }));\n};\n","import { FOCUS_DISABLED, FOCUS_GROUP } from '../constants';\nimport { asArray, toArray } from './array';\n/**\n * in case of multiple nodes nested inside each other\n * keeps only top ones\n * this is O(nlogn)\n * @param nodes\n * @returns {*}\n */\nvar filterNested = function (nodes) {\n var contained = new Set();\n var l = nodes.length;\n for (var i = 0; i < l; i += 1) {\n for (var j = i + 1; j < l; j += 1) {\n var position = nodes[i].compareDocumentPosition(nodes[j]);\n /* eslint-disable no-bitwise */\n if ((position & Node.DOCUMENT_POSITION_CONTAINED_BY) > 0) {\n contained.add(j);\n }\n if ((position & Node.DOCUMENT_POSITION_CONTAINS) > 0) {\n contained.add(i);\n }\n /* eslint-enable */\n }\n }\n return nodes.filter(function (_, index) { return !contained.has(index); });\n};\n/**\n * finds top most parent for a node\n * @param node\n * @returns {*}\n */\nvar getTopParent = function (node) {\n return node.parentNode ? getTopParent(node.parentNode) : node;\n};\n/**\n * returns all \"focus containers\" inside a given node\n * @param node\n * @returns {T}\n */\nexport var getAllAffectedNodes = function (node) {\n var nodes = asArray(node);\n return nodes.filter(Boolean).reduce(function (acc, currentNode) {\n var group = currentNode.getAttribute(FOCUS_GROUP);\n acc.push.apply(acc, (group\n ? filterNested(toArray(getTopParent(currentNode).querySelectorAll(\"[\".concat(FOCUS_GROUP, \"=\\\"\").concat(group, \"\\\"]:not([\").concat(FOCUS_DISABLED, \"=\\\"disabled\\\"])\"))))\n : [currentNode]));\n return acc;\n }, []);\n};\n","var getNestedShadowActiveElement = function (shadowRoot) {\n return shadowRoot.activeElement\n ? shadowRoot.activeElement.shadowRoot\n ? getNestedShadowActiveElement(shadowRoot.activeElement.shadowRoot)\n : shadowRoot.activeElement\n : undefined;\n};\n/**\n * returns active element from document or from nested shadowdoms\n */\nexport var getActiveElement = function () {\n return (document.activeElement\n ? document.activeElement.shadowRoot\n ? getNestedShadowActiveElement(document.activeElement.shadowRoot)\n : document.activeElement\n : undefined); // eslint-disable-next-line @typescript-eslint/no-explicit-any\n};\n","import { parentAutofocusables } from './DOMutils';\nimport { contains } from './DOMutils';\nimport { asArray } from './array';\nvar getParents = function (node, parents) {\n if (parents === void 0) { parents = []; }\n parents.push(node);\n if (node.parentNode) {\n getParents(node.parentNode.host || node.parentNode, parents);\n }\n return parents;\n};\n/**\n * finds a parent for both nodeA and nodeB\n * @param nodeA\n * @param nodeB\n * @returns {boolean|*}\n */\nexport var getCommonParent = function (nodeA, nodeB) {\n var parentsA = getParents(nodeA);\n var parentsB = getParents(nodeB);\n // tslint:disable-next-line:prefer-for-of\n for (var i = 0; i < parentsA.length; i += 1) {\n var currentParent = parentsA[i];\n if (parentsB.indexOf(currentParent) >= 0) {\n return currentParent;\n }\n }\n return false;\n};\nexport var getTopCommonParent = function (baseActiveElement, leftEntry, rightEntries) {\n var activeElements = asArray(baseActiveElement);\n var leftEntries = asArray(leftEntry);\n var activeElement = activeElements[0];\n var topCommon = false;\n leftEntries.filter(Boolean).forEach(function (entry) {\n topCommon = getCommonParent(topCommon || entry, entry) || topCommon;\n rightEntries.filter(Boolean).forEach(function (subEntry) {\n var common = getCommonParent(activeElement, subEntry);\n if (common) {\n if (!topCommon || contains(common, topCommon)) {\n topCommon = common;\n }\n else {\n topCommon = getCommonParent(common, topCommon);\n }\n }\n });\n });\n // TODO: add assert here?\n return topCommon;\n};\n/**\n * return list of nodes which are expected to be autofocused inside a given top nodes\n * @param entries\n * @param visibilityCache\n */\nexport var allParentAutofocusables = function (entries, visibilityCache) {\n return entries.reduce(function (acc, node) { return acc.concat(parentAutofocusables(node, visibilityCache)); }, []);\n};\n","import { NEW_FOCUS, newFocus } from './solver';\nimport { filterAutoFocusable, getAllTabbableNodes, getTabbableNodes } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { pickFirstFocus } from './utils/firstFocus';\nimport { getActiveElement } from './utils/getActiveElement';\nimport { getDataset, isDefined, isNotAGuard } from './utils/is';\nimport { allParentAutofocusables, getTopCommonParent } from './utils/parenting';\nvar findAutoFocused = function (autoFocusables) {\n return function (node) { var _a; \n // @ts-expect-error\n return node.autofocus || !!((_a = getDataset(node)) === null || _a === void 0 ? void 0 : _a.autofocus) || autoFocusables.indexOf(node) >= 0; };\n};\nvar reorderNodes = function (srcNodes, dstNodes) {\n var remap = new Map();\n // no Set(dstNodes) for IE11 :(\n dstNodes.forEach(function (entity) { return remap.set(entity.node, entity); });\n // remap to dstNodes\n return srcNodes.map(function (node) { return remap.get(node); }).filter(isDefined);\n};\n/**\n * given top node(s) and the last active element return the element to be focused next\n * @param topNode\n * @param lastNode\n */\nexport var getFocusMerge = function (topNode, lastNode) {\n var activeElement = document && getActiveElement();\n var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n var commonParent = getTopCommonParent(activeElement || topNode, topNode, entries);\n var visibilityCache = new Map();\n var anyFocusable = getAllTabbableNodes(entries, visibilityCache);\n var innerElements = getTabbableNodes(entries, visibilityCache).filter(function (_a) {\n var node = _a.node;\n return isNotAGuard(node);\n });\n if (!innerElements[0]) {\n innerElements = anyFocusable;\n if (!innerElements[0]) {\n return undefined;\n }\n }\n var outerNodes = getAllTabbableNodes([commonParent], visibilityCache).map(function (_a) {\n var node = _a.node;\n return node;\n });\n var orderedInnerElements = reorderNodes(outerNodes, innerElements);\n var innerNodes = orderedInnerElements.map(function (_a) {\n var node = _a.node;\n return node;\n });\n var newId = newFocus(innerNodes, outerNodes, activeElement, lastNode);\n if (newId === NEW_FOCUS) {\n var autoFocusable = filterAutoFocusable(anyFocusable.map(function (_a) {\n var node = _a.node;\n return node;\n })).filter(findAutoFocused(allParentAutofocusables(entries, visibilityCache)));\n return {\n node: autoFocusable && autoFocusable.length\n ? pickFirstFocus(autoFocusable)\n : pickFirstFocus(filterAutoFocusable(innerNodes)),\n };\n }\n if (newId === undefined) {\n return newId;\n }\n return orderedInnerElements[newId];\n};\n","import { getFocusMerge } from './focusMerge';\nexport var focusOn = function (target, focusOptions) {\n if ('focus' in target) {\n target.focus(focusOptions);\n }\n if ('contentWindow' in target && target.contentWindow) {\n target.contentWindow.focus();\n }\n};\nvar guardCount = 0;\nvar lockDisabled = false;\n/**\n * Sets focus at a given node. The last focused element will help to determine which element(first or last) should be focused.\n * HTML markers (see {@link import('./constants').FOCUS_AUTO} constants) can control autofocus\n * @param topNode\n * @param lastNode\n * @param options\n */\nexport var setFocus = function (topNode, lastNode, options) {\n if (options === void 0) { options = {}; }\n var focusable = getFocusMerge(topNode, lastNode);\n if (lockDisabled) {\n return;\n }\n if (focusable) {\n if (guardCount > 2) {\n // tslint:disable-next-line:no-console\n console.error('FocusLock: focus-fighting detected. Only one focus management system could be active. ' +\n 'See https://github.com/theKashey/focus-lock/#focus-fighting');\n lockDisabled = true;\n setTimeout(function () {\n lockDisabled = false;\n }, 1);\n return;\n }\n guardCount++;\n focusOn(focusable.node, options.focusOptions);\n guardCount--;\n }\n};\n","import * as constants from './constants';\nimport { focusInside } from './focusInside';\nimport { focusIsHidden } from './focusIsHidden';\nimport { getFocusMerge as focusMerge } from './focusMerge';\nimport { getFocusabledIn, getFocusableIn } from './focusables';\nimport { setFocus } from './setFocus';\nimport { focusNextElement, focusPrevElement } from './sibling';\nimport tabHook from './tabHook';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { getActiveElement } from './utils/getActiveElement';\nexport { tabHook, focusInside, focusIsHidden, focusMerge, getFocusableIn, getFocusabledIn, constants, getAllAffectedNodes, focusNextElement, focusPrevElement, getActiveElement, };\nexport default setFocus;\n//\n","import { contains } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { toArray } from './utils/array';\nimport { getActiveElement } from './utils/getActiveElement';\nvar focusInFrame = function (frame) { return frame === document.activeElement; };\nvar focusInsideIframe = function (topNode) {\n return Boolean(toArray(topNode.querySelectorAll('iframe')).some(function (node) { return focusInFrame(node); }));\n};\n/**\n * @returns {Boolean} true, if the current focus is inside given node or nodes\n */\nexport var focusInside = function (topNode) {\n var activeElement = document && getActiveElement();\n if (!activeElement || (activeElement.dataset && activeElement.dataset.focusGuard)) {\n return false;\n }\n return getAllAffectedNodes(topNode).some(function (node) { return contains(node, activeElement) || focusInsideIframe(node); });\n};\n","import { getTabbableNodes } from './utils/DOMutils';\nimport { getAllAffectedNodes } from './utils/all-affected';\nimport { isGuard, isNotAGuard } from './utils/is';\nimport { getTopCommonParent } from './utils/parenting';\n/**\n * return list of focusable elements inside a given top node\n * @deprecated use {@link getFocusableIn}. Yep, there is typo in the function name\n */\nexport var getFocusabledIn = function (topNode) {\n var entries = getAllAffectedNodes(topNode).filter(isNotAGuard);\n var commonParent = getTopCommonParent(topNode, topNode, entries);\n var visibilityCache = new Map();\n var outerNodes = getTabbableNodes([commonParent], visibilityCache, true);\n var innerElements = getTabbableNodes(entries, visibilityCache)\n .filter(function (_a) {\n var node = _a.node;\n return isNotAGuard(node);\n })\n .map(function (_a) {\n var node = _a.node;\n return node;\n });\n return outerNodes.map(function (_a) {\n var node = _a.node, index = _a.index;\n return ({\n node: node,\n index: index,\n lockItem: innerElements.indexOf(node) >= 0,\n guard: isGuard(node),\n });\n });\n};\n/**\n * return list of focusable elements inside a given top node\n */\nexport var getFocusableIn = getFocusabledIn;\n","export function deferAction(action) {\n // Hidding setImmediate from Webpack to avoid inserting polyfill\n var _window = window,\n setImmediate = _window.setImmediate;\n\n if (typeof setImmediate !== 'undefined') {\n setImmediate(action);\n } else {\n setTimeout(action, 1);\n }\n}\nexport var inlineProp = function inlineProp(name, value) {\n var obj = {};\n obj[name] = value;\n return obj;\n};","/* eslint-disable no-mixed-operators */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport withSideEffect from 'react-clientside-effect';\nimport moveFocusInside, { focusInside, focusIsHidden, getFocusabledIn } from 'focus-lock';\nimport { deferAction } from './util';\nimport { mediumFocus, mediumBlur, mediumEffect } from './medium';\n\nvar focusOnBody = function focusOnBody() {\n return document && document.activeElement === document.body;\n};\n\nvar isFreeFocus = function isFreeFocus() {\n return focusOnBody() || focusIsHidden();\n};\n\nvar lastActiveTrap = null;\nvar lastActiveFocus = null;\nvar lastPortaledElement = null;\nvar focusWasOutsideWindow = false;\n\nvar defaultWhitelist = function defaultWhitelist() {\n return true;\n};\n\nvar focusWhitelisted = function focusWhitelisted(activeElement) {\n return (lastActiveTrap.whiteList || defaultWhitelist)(activeElement);\n};\n\nvar recordPortal = function recordPortal(observerNode, portaledElement) {\n lastPortaledElement = {\n observerNode: observerNode,\n portaledElement: portaledElement\n };\n};\n\nvar focusIsPortaledPair = function focusIsPortaledPair(element) {\n return lastPortaledElement && lastPortaledElement.portaledElement === element;\n};\n\nfunction autoGuard(startIndex, end, step, allNodes) {\n var lastGuard = null;\n var i = startIndex;\n\n do {\n var item = allNodes[i];\n\n if (item.guard) {\n if (item.node.dataset.focusAutoGuard) {\n lastGuard = item;\n }\n } else if (item.lockItem) {\n if (i !== startIndex) {\n // we will tab to the next element\n return;\n }\n\n lastGuard = null;\n } else {\n break;\n }\n } while ((i += step) !== end);\n\n if (lastGuard) {\n lastGuard.node.tabIndex = 0;\n }\n}\n\nvar extractRef = function extractRef(ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\n\nvar focusWasOutside = function focusWasOutside(crossFrameOption) {\n if (crossFrameOption) {\n // with cross frame return true for any value\n return Boolean(focusWasOutsideWindow);\n } // in other case return only of focus went a while aho\n\n\n return focusWasOutsideWindow === 'meanwhile';\n};\n\nvar checkInHost = function checkInHost(check, el, boundary) {\n return el && ( // find host equal to active element and check nested active element\n el.host === check && (!el.activeElement || boundary.contains(el.activeElement)) // dive up\n || el.parentNode && checkInHost(check, el.parentNode, boundary));\n};\n\nvar withinHost = function withinHost(activeElement, workingArea) {\n return workingArea.some(function (area) {\n return checkInHost(activeElement, area, area);\n });\n};\n\nvar activateTrap = function activateTrap() {\n var result = false;\n\n if (lastActiveTrap) {\n var _lastActiveTrap = lastActiveTrap,\n observed = _lastActiveTrap.observed,\n persistentFocus = _lastActiveTrap.persistentFocus,\n autoFocus = _lastActiveTrap.autoFocus,\n shards = _lastActiveTrap.shards,\n crossFrame = _lastActiveTrap.crossFrame,\n focusOptions = _lastActiveTrap.focusOptions;\n var workingNode = observed || lastPortaledElement && lastPortaledElement.portaledElement;\n var activeElement = document && document.activeElement;\n\n if (workingNode) {\n var workingArea = [workingNode].concat(shards.map(extractRef).filter(Boolean));\n\n if (!activeElement || focusWhitelisted(activeElement)) {\n if (persistentFocus || focusWasOutside(crossFrame) || !isFreeFocus() || !lastActiveFocus && autoFocus) {\n if (workingNode && !( // active element is \"inside\" working area\n focusInside(workingArea) || // check for shadow-dom contained elements\n activeElement && withinHost(activeElement, workingArea) || focusIsPortaledPair(activeElement, workingNode))) {\n if (document && !lastActiveFocus && activeElement && !autoFocus) {\n // Check if blur() exists, which is missing on certain elements on IE\n if (activeElement.blur) {\n activeElement.blur();\n }\n\n document.body.focus();\n } else {\n result = moveFocusInside(workingArea, lastActiveFocus, {\n focusOptions: focusOptions\n });\n lastPortaledElement = {};\n }\n }\n\n focusWasOutsideWindow = false;\n lastActiveFocus = document && document.activeElement;\n }\n }\n\n if (document) {\n var newActiveElement = document && document.activeElement;\n var allNodes = getFocusabledIn(workingArea);\n var focusedIndex = allNodes.map(function (_ref) {\n var node = _ref.node;\n return node;\n }).indexOf(newActiveElement);\n\n if (focusedIndex > -1) {\n // remove old focus\n allNodes.filter(function (_ref2) {\n var guard = _ref2.guard,\n node = _ref2.node;\n return guard && node.dataset.focusAutoGuard;\n }).forEach(function (_ref3) {\n var node = _ref3.node;\n return node.removeAttribute('tabIndex');\n });\n autoGuard(focusedIndex, allNodes.length, +1, allNodes);\n autoGuard(focusedIndex, -1, -1, allNodes);\n }\n }\n }\n }\n\n return result;\n};\n\nvar onTrap = function onTrap(event) {\n if (activateTrap() && event) {\n // prevent scroll jump\n event.stopPropagation();\n event.preventDefault();\n }\n};\n\nvar onBlur = function onBlur() {\n return deferAction(activateTrap);\n};\n\nvar onFocus = function onFocus(event) {\n // detect portal\n var source = event.target;\n var currentNode = event.currentTarget;\n\n if (!currentNode.contains(source)) {\n recordPortal(currentNode, source);\n }\n};\n\nvar FocusWatcher = function FocusWatcher() {\n return null;\n};\n\nvar FocusTrap = function FocusTrap(_ref4) {\n var children = _ref4.children;\n return /*#__PURE__*/React.createElement(\"div\", {\n onBlur: onBlur,\n onFocus: onFocus\n }, children);\n};\n\nFocusTrap.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: PropTypes.node.isRequired\n} : {};\n\nvar onWindowBlur = function onWindowBlur() {\n focusWasOutsideWindow = 'just'; // using setTimeout to set this variable after React/sidecar reaction\n\n setTimeout(function () {\n focusWasOutsideWindow = 'meanwhile';\n }, 0);\n};\n\nvar attachHandler = function attachHandler() {\n document.addEventListener('focusin', onTrap);\n document.addEventListener('focusout', onBlur);\n window.addEventListener('blur', onWindowBlur);\n};\n\nvar detachHandler = function detachHandler() {\n document.removeEventListener('focusin', onTrap);\n document.removeEventListener('focusout', onBlur);\n window.removeEventListener('blur', onWindowBlur);\n};\n\nfunction reducePropsToState(propsList) {\n return propsList.filter(function (_ref5) {\n var disabled = _ref5.disabled;\n return !disabled;\n });\n}\n\nfunction handleStateChangeOnClient(traps) {\n var trap = traps.slice(-1)[0];\n\n if (trap && !lastActiveTrap) {\n attachHandler();\n }\n\n var lastTrap = lastActiveTrap;\n var sameTrap = lastTrap && trap && trap.id === lastTrap.id;\n lastActiveTrap = trap;\n\n if (lastTrap && !sameTrap) {\n lastTrap.onDeactivation(); // return focus only of last trap was removed\n\n if (!traps.filter(function (_ref6) {\n var id = _ref6.id;\n return id === lastTrap.id;\n }).length) {\n // allow defer is no other trap is awaiting restore\n lastTrap.returnFocus(!trap);\n }\n }\n\n if (trap) {\n lastActiveFocus = null;\n\n if (!sameTrap || lastTrap.observed !== trap.observed) {\n trap.onActivation();\n }\n\n activateTrap(true);\n deferAction(activateTrap);\n } else {\n detachHandler();\n lastActiveFocus = null;\n }\n} // bind medium\n\n\nmediumFocus.assignSyncMedium(onFocus);\nmediumBlur.assignMedium(onBlur);\nmediumEffect.assignMedium(function (cb) {\n return cb({\n moveFocusInside: moveFocusInside,\n focusInside: focusInside\n });\n});\nexport default withSideEffect(reducePropsToState, handleStateChangeOnClient)(FocusWatcher);","import { FOCUS_ALLOW } from './constants';\nimport { contains } from './utils/DOMutils';\nimport { toArray } from './utils/array';\nimport { getActiveElement } from './utils/getActiveElement';\n/**\n * focus is hidden FROM the focus-lock\n * ie contained inside a node focus-lock shall ignore\n * @returns {boolean} focus is currently is in \"allow\" area\n */\nexport var focusIsHidden = function () {\n var activeElement = document && getActiveElement();\n if (!activeElement) {\n return false;\n }\n // this does not support setting FOCUS_ALLOW within shadow dom\n return toArray(document.querySelectorAll(\"[\".concat(FOCUS_ALLOW, \"]\"))).some(function (node) { return contains(node, activeElement); });\n};\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport FocusLockUI from './Lock';\nimport FocusTrap from './Trap';\n/* that would be a BREAKING CHANGE!\n// delaying sidecar execution till the first usage\nconst RequireSideCar = (props) => {\n // eslint-disable-next-line global-require\n const SideCar = require('./Trap').default;\n return ;\n};\n*/\n\nvar FocusLockCombination = /*#__PURE__*/React.forwardRef(function FocusLockUICombination(props, ref) {\n return /*#__PURE__*/React.createElement(FocusLockUI, _extends({\n sideCar: FocusTrap,\n ref: ref\n }, props));\n});\n\nvar _ref = FocusLockUI.propTypes || {},\n sideCar = _ref.sideCar,\n propTypes = _objectWithoutPropertiesLoose(_ref, [\"sideCar\"]);\n\nFocusLockCombination.propTypes = process.env.NODE_ENV !== \"production\" ? propTypes : {};\nexport default FocusLockCombination;","import FocusLock from './Combination';\nexport * from './UI';\nexport default FocusLock;","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import { styleHookSingleton } from './hook';\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles;\n useStyle(styles);\n return null;\n };\n return Sheet;\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles]);\n };\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (props) {\n var _a = React.useState(getGapWidth(props.gapMode)), gap = _a[0], setGap = _a[1];\n React.useEffect(function () {\n setGap(getGapWidth(props.gapMode));\n }, [props.gapMode]);\n var noRelative = props.noRelative, noImportant = props.noImportant, _b = props.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n return true;\n },\n });\n // @ts-ignore\n window.addEventListener('test', options, options);\n // @ts-ignore\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var elementCouldBeVScrolled = function (node) {\n var styles = window.getComputedStyle(node);\n return (styles.overflowY !== 'hidden' && // not-not-scrollable\n !(styles.overflowY === styles.overflowX && styles.overflowY === 'visible') // scrollable\n );\n};\nvar elementCouldBeHScrolled = function (node) {\n var styles = window.getComputedStyle(node);\n return (styles.overflowX !== 'hidden' && // not-not-scrollable\n !(styles.overflowY === styles.overflowX && styles.overflowX === 'visible') // scrollable\n );\n};\nexport var locationCouldBeScrolled = function (axis, node) {\n var current = node;\n do {\n // Skip over shadow root\n if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n current = current.host;\n }\n var isScrollable = elementCouldBeScrolled(axis, current);\n if (isScrollable) {\n var _a = getScrollVariables(axis, current), s = _a[1], d = _a[2];\n if (s > d) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== document.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n target = target.parentNode;\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n if (isDeltaPositive && ((noOverscroll && availableScroll === 0) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && availableScrollTop === 0) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(function () { return styleSingleton(); })[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if ('touches' in event && event.touches.length === 2) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && e.target === event.target && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n event.preventDefault();\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n event.preventDefault();\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { gapMode: \"margin\" }) : null));\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","import React, { forwardRef, useEffect, useRef, useCallback } from 'react';\nimport Portal from '@reach/portal';\nimport { checkStyles, useForkedRef, wrapEvent, getOwnerDocument, noop, isString } from '@reach/utils';\nimport FocusLock from 'react-focus-lock';\nimport { RemoveScroll } from 'react-remove-scroll';\nimport PropTypes from 'prop-types';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar overlayPropTypes = {\n allowPinchZoom: PropTypes.bool,\n dangerouslyBypassFocusLock: PropTypes.bool,\n dangerouslyBypassScrollLock: PropTypes.bool,\n // TODO:\n initialFocusRef: function initialFocusRef() {\n return null;\n },\n onDismiss: PropTypes.func\n}; ////////////////////////////////////////////////////////////////////////////////\n\n/**\r\n * DialogOverlay\r\n *\r\n * Low-level component if you need more control over the styles or rendering of\r\n * the dialog overlay.\r\n *\r\n * Note: You must render a `DialogContent` inside.\r\n *\r\n * @see Docs https://reacttraining.com/reach-ui/dialog#dialogoverlay\r\n */\n\nvar DialogOverlay = /*#__PURE__*/forwardRef(function DialogOverlay(_ref, forwardedRef) {\n var _ref$isOpen = _ref.isOpen,\n isOpen = _ref$isOpen === void 0 ? true : _ref$isOpen,\n props = _objectWithoutPropertiesLoose(_ref, [\"isOpen\"]);\n\n useEffect(function () {\n return checkStyles(\"dialog\");\n }, []); // We want to ignore the immediate focus of a tooltip so it doesn't pop\n // up again when the menu closes, only pops up when focus returns again\n // to the tooltip (like native OS tooltips).\n\n useEffect(function () {\n if (isOpen) {\n // @ts-ignore\n window.__REACH_DISABLE_TOOLTIPS = true;\n } else {\n window.requestAnimationFrame(function () {\n // Wait a frame so that this doesn't fire before tooltip does\n // @ts-ignore\n window.__REACH_DISABLE_TOOLTIPS = false;\n });\n }\n }, [isOpen]);\n return isOpen ? React.createElement(Portal, {\n \"data-reach-dialog-wrapper\": \"\"\n }, React.createElement(DialogInner, Object.assign({\n ref: forwardedRef\n }, props))) : null;\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n DialogOverlay.displayName = \"DialogOverlay\";\n DialogOverlay.propTypes = /*#__PURE__*/_extends({}, overlayPropTypes, {\n isOpen: PropTypes.bool\n });\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\r\n * DialogInner\r\n */\n\n\nvar DialogInner = /*#__PURE__*/forwardRef(function DialogInner(_ref2, forwardedRef) {\n var allowPinchZoom = _ref2.allowPinchZoom,\n _ref2$dangerouslyBypa = _ref2.dangerouslyBypassFocusLock,\n dangerouslyBypassFocusLock = _ref2$dangerouslyBypa === void 0 ? false : _ref2$dangerouslyBypa,\n _ref2$dangerouslyBypa2 = _ref2.dangerouslyBypassScrollLock,\n dangerouslyBypassScrollLock = _ref2$dangerouslyBypa2 === void 0 ? false : _ref2$dangerouslyBypa2,\n initialFocusRef = _ref2.initialFocusRef,\n onClick = _ref2.onClick,\n _ref2$onDismiss = _ref2.onDismiss,\n onDismiss = _ref2$onDismiss === void 0 ? noop : _ref2$onDismiss,\n onKeyDown = _ref2.onKeyDown,\n onMouseDown = _ref2.onMouseDown,\n _ref2$unstable_lockFo = _ref2.unstable_lockFocusAcrossFrames,\n unstable_lockFocusAcrossFrames = _ref2$unstable_lockFo === void 0 ? true : _ref2$unstable_lockFo,\n props = _objectWithoutPropertiesLoose(_ref2, [\"allowPinchZoom\", \"dangerouslyBypassFocusLock\", \"dangerouslyBypassScrollLock\", \"initialFocusRef\", \"onClick\", \"onDismiss\", \"onKeyDown\", \"onMouseDown\", \"unstable_lockFocusAcrossFrames\"]);\n\n var mouseDownTarget = useRef(null);\n var overlayNode = useRef(null);\n var ref = useForkedRef(overlayNode, forwardedRef);\n var activateFocusLock = useCallback(function () {\n if (initialFocusRef && initialFocusRef.current) {\n initialFocusRef.current.focus();\n }\n }, [initialFocusRef]);\n\n function handleClick(event) {\n if (mouseDownTarget.current === event.target) {\n event.stopPropagation();\n onDismiss(event);\n }\n }\n\n function handleKeyDown(event) {\n if (event.key === \"Escape\") {\n event.stopPropagation();\n onDismiss(event);\n }\n }\n\n function handleMouseDown(event) {\n mouseDownTarget.current = event.target;\n }\n\n useEffect(function () {\n return overlayNode.current ? createAriaHider(overlayNode.current) : void null;\n }, []);\n return React.createElement(FocusLock, {\n autoFocus: true,\n returnFocus: true,\n onActivation: activateFocusLock,\n disabled: dangerouslyBypassFocusLock,\n crossFrame: unstable_lockFocusAcrossFrames\n }, React.createElement(RemoveScroll, {\n allowPinchZoom: allowPinchZoom,\n enabled: !dangerouslyBypassScrollLock\n }, React.createElement(\"div\", Object.assign({}, props, {\n ref: ref,\n \"data-reach-dialog-overlay\": \"\",\n\n /*\r\n * We can ignore the `no-static-element-interactions` warning here\r\n * because our overlay is only designed to capture any outside\r\n * clicks, not to serve as a clickable element itself.\r\n */\n onClick: wrapEvent(onClick, handleClick),\n onKeyDown: wrapEvent(onKeyDown, handleKeyDown),\n onMouseDown: wrapEvent(onMouseDown, handleMouseDown)\n }))));\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n DialogOverlay.displayName = \"DialogOverlay\";\n DialogOverlay.propTypes = /*#__PURE__*/_extends({}, overlayPropTypes);\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\r\n * DialogContent\r\n *\r\n * Low-level component if you need more control over the styles or rendering of\r\n * the dialog content.\r\n *\r\n * Note: Must be a child of `DialogOverlay`.\r\n *\r\n * Note: You only need to use this when you are also styling `DialogOverlay`,\r\n * otherwise you can use the high-level `Dialog` component and pass the props\r\n * to it. Any props passed to `Dialog` component (besides `isOpen` and\r\n * `onDismiss`) will be spread onto `DialogContent`.\r\n *\r\n * @see Docs https://reacttraining.com/reach-ui/dialog#dialogcontent\r\n */\n\n\nvar DialogContent = /*#__PURE__*/forwardRef(function DialogContent(_ref3, forwardedRef) {\n var onClick = _ref3.onClick,\n onKeyDown = _ref3.onKeyDown,\n props = _objectWithoutPropertiesLoose(_ref3, [\"onClick\", \"onKeyDown\"]);\n\n return React.createElement(\"div\", Object.assign({\n \"aria-modal\": \"true\",\n role: \"dialog\",\n tabIndex: -1\n }, props, {\n ref: forwardedRef,\n \"data-reach-dialog-content\": \"\",\n onClick: wrapEvent(onClick, function (event) {\n event.stopPropagation();\n })\n }));\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n DialogContent.displayName = \"DialogContent\";\n DialogContent.propTypes = {\n \"aria-label\": ariaLabelType,\n \"aria-labelledby\": ariaLabelType\n };\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\r\n * Dialog\r\n *\r\n * High-level component to render a modal dialog window over the top of the page\r\n * (or another dialog).\r\n *\r\n * @see Docs https://reacttraining.com/reach-ui/dialog#dialog\r\n */\n\n\nvar Dialog = /*#__PURE__*/forwardRef(function Dialog(_ref4, forwardedRef) {\n var _ref4$allowPinchZoom = _ref4.allowPinchZoom,\n allowPinchZoom = _ref4$allowPinchZoom === void 0 ? false : _ref4$allowPinchZoom,\n initialFocusRef = _ref4.initialFocusRef,\n isOpen = _ref4.isOpen,\n _ref4$onDismiss = _ref4.onDismiss,\n onDismiss = _ref4$onDismiss === void 0 ? noop : _ref4$onDismiss,\n props = _objectWithoutPropertiesLoose(_ref4, [\"allowPinchZoom\", \"initialFocusRef\", \"isOpen\", \"onDismiss\"]);\n\n return React.createElement(DialogOverlay, {\n allowPinchZoom: allowPinchZoom,\n initialFocusRef: initialFocusRef,\n isOpen: isOpen,\n onDismiss: onDismiss\n }, React.createElement(DialogContent, Object.assign({\n ref: forwardedRef\n }, props)));\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n Dialog.displayName = \"Dialog\";\n Dialog.propTypes = {\n isOpen: PropTypes.bool,\n onDismiss: PropTypes.func,\n \"aria-label\": ariaLabelType,\n \"aria-labelledby\": ariaLabelType\n };\n}\n\nfunction createAriaHider(dialogNode) {\n var originalValues = [];\n var rootNodes = [];\n var ownerDocument = getOwnerDocument(dialogNode) || document;\n\n if (!dialogNode) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"A ref has not yet been attached to a dialog node when attempting to call `createAriaHider`.\");\n }\n\n return noop;\n }\n\n Array.prototype.forEach.call(ownerDocument.querySelectorAll(\"body > *\"), function (node) {\n var _dialogNode$parentNod, _dialogNode$parentNod2;\n\n var portalNode = (_dialogNode$parentNod = dialogNode.parentNode) === null || _dialogNode$parentNod === void 0 ? void 0 : (_dialogNode$parentNod2 = _dialogNode$parentNod.parentNode) === null || _dialogNode$parentNod2 === void 0 ? void 0 : _dialogNode$parentNod2.parentNode;\n\n if (node === portalNode) {\n return;\n }\n\n var attr = node.getAttribute(\"aria-hidden\");\n var alreadyHidden = attr !== null && attr !== \"false\";\n\n if (alreadyHidden) {\n return;\n }\n\n originalValues.push(attr);\n rootNodes.push(node);\n node.setAttribute(\"aria-hidden\", \"true\");\n });\n return function () {\n rootNodes.forEach(function (node, index) {\n var originalValue = originalValues[index];\n\n if (originalValue === null) {\n node.removeAttribute(\"aria-hidden\");\n } else {\n node.setAttribute(\"aria-hidden\", originalValue);\n }\n });\n };\n}\n\nfunction ariaLabelType(props, propName, compName, location, propFullName) {\n var details = \"\\nSee https://www.w3.org/TR/wai-aria/#aria-label for details.\";\n\n if (!props[\"aria-label\"] && !props[\"aria-labelledby\"]) {\n return new Error(\"A <\" + compName + \"> must have either an `aria-label` or `aria-labelledby` prop.\\n \" + details);\n }\n\n if (props[\"aria-label\"] && props[\"aria-labelledby\"]) {\n return new Error(\"You provided both `aria-label` and `aria-labelledby` props to a <\" + compName + \">. If the a label for this component is visible on the screen, that label's component should be given a unique ID prop, and that ID should be passed as the `aria-labelledby` prop into <\" + compName + \">. If the label cannot be determined programmatically from the content of the element, an alternative label should be provided as the `aria-label` prop, which will be used as an `aria-label` on the HTML tag.\" + details);\n } else if (props[propName] != null && !isString(props[propName])) {\n return new Error(\"Invalid prop `\" + propName + \"` supplied to `\" + compName + \"`. Expected `string`, received `\" + (Array.isArray(propFullName) ? \"array\" : typeof propFullName) + \"`.\");\n }\n\n return null;\n}\n\nexport default Dialog;\nexport { Dialog, DialogContent, DialogOverlay };\n//# sourceMappingURL=dialog.esm.js.map\n","// extracted by mini-css-extract-plugin\nexport default {\"overlay\":\"Modal--overlay--datCD\",\"dialog\":\"Modal--dialog--NJuNP\",\"close-button\":\"Modal--close-button--54bUs\",\"closeButton\":\"Modal--close-button--54bUs\",\"title\":\"Modal--title--sH-CW\",\"hero-image\":\"Modal--hero-image--jNDsp\",\"heroImage\":\"Modal--hero-image--jNDsp\",\"body\":\"Modal--body--X1CY9\",\"actions\":\"Modal--actions--Ld-Kr\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { DialogOverlay, DialogContent } from '@reach/dialog';\n\nimport ActionsCancelNormalXsmall from '@strava/icons/ActionsCancelNormalXsmall';\nimport colors from '../colors';\nimport Button from '../Button';\n\nimport styles from './styles.scss';\n\n//\n// ModalOverlay\n//\n// Reach UI docs: https://reach.tech/dialog/#dialogoverlay\n// --------------------\n\nexport function ModalOverlay({ className, children, ...otherProps }) {\n const classNames = [styles.overlay];\n if (className) {\n classNames.push(className);\n }\n return (\n \n {children}\n \n );\n}\n\n// Override DialogContent display name so that error from prop types show 'ModalOverlay'\nDialogOverlay.displayName = 'ModalOverlay';\n\nModalOverlay.defaultProps = {\n className: null,\n isOpen: false,\n onDismiss: () => {},\n initialFocusRef: () => {},\n\n allowPinchZoom: false,\n dangerouslyBypassFocusLock: false,\n dangerouslyBypassScrollLock: false\n};\n\nModalOverlay.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n isOpen: PropTypes.bool,\n onDismiss: PropTypes.func,\n initialFocusRef: PropTypes.func,\n allowPinchZoom: PropTypes.bool,\n dangerouslyBypassFocusLock: PropTypes.bool,\n dangerouslyBypassScrollLock: PropTypes.bool\n};\n\n//\n// ModalContent\n//\n// Reach UI docs: https://reach.tech/dialog/#dialogcontent\n// --------------------\n\nexport function ModalContent({ className, children, ...otherProps }) {\n const classNames = [styles.dialog];\n if (className) {\n classNames.push(className);\n }\n return (\n \n {children}\n \n );\n}\n\n// Override DialogContent display name so that error from prop types show 'ModalContent'\nDialogContent.displayName = 'ModalContent';\n\nModalContent.defaultProps = {\n className: null\n};\n\nModalContent.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n\n //\n // @reach/dialog will handle prop-type validation for us, but in order for this\n // props to show up in Storybook we need to add them here.\n //\n /* eslint-disable react/require-default-props */\n 'aria-label': PropTypes.string,\n 'aria-labelledby': PropTypes.string\n /* eslint-enable react/require-default-props */\n};\n\n//\n// ModalTitle\n// --------------------\n\nexport function ModalTitle({ className, children, ...otherProps }) {\n const classNames = [styles.title];\n if (className) {\n classNames.push(className);\n }\n return (\n

\n {children}\n

\n );\n}\n\nModalTitle.defaultProps = {\n className: null\n};\n\nModalTitle.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string\n};\n\n//\n// ModalActions\n// --------------------\n\nexport function ModalActions({ className, children, ...otherProps }) {\n const classNames = [styles.actions];\n if (className) {\n classNames.push(className);\n }\n return (\n
\n {children}\n
\n );\n}\n\nModalActions.defaultProps = {\n className: null\n};\n\nModalActions.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string\n};\n\n//\n// ModalHeroImage\n// --------------------\n\nexport function ModalHeroImage({ className, src, alt, ...otherProps }) {\n const classNames = [styles.heroImage];\n if (className) {\n classNames.push(className);\n }\n return (\n {alt}\n );\n}\n\nModalHeroImage.defaultProps = {\n className: null\n};\n\nModalHeroImage.propTypes = {\n className: PropTypes.string,\n src: PropTypes.string.isRequired,\n alt: PropTypes.string.isRequired\n};\n\n//\n// ModalBody\n// --------------------\n\nexport function ModalBody({ className, ...otherProps }) {\n const classNames = [styles.body];\n if (className) {\n classNames.push(className);\n }\n return
;\n}\n\nModalBody.defaultProps = {\n className: null\n};\n\nModalBody.propTypes = {\n className: PropTypes.string,\n children: PropTypes.node.isRequired\n};\n\n//\n// ModalCloseButton\n// --------------------\n\nexport function ModalCloseButton({ className, color, ...otherProps }) {\n return (\n \n );\n}\n\nModalCloseButton.defaultProps = {\n className: null,\n color: null\n};\n\nModalCloseButton.propTypes = {\n className: PropTypes.string,\n color: PropTypes.string\n};\n\n//\n// Modal\n// --------------------\n\nfunction Modal({\n className,\n isOpen,\n onDismiss,\n hasClose,\n children,\n initialFocusRef,\n ...otherProps\n}) {\n return (\n \n \n {hasClose && (\n \n )}\n {children}\n \n \n );\n}\n\nModal.defaultProps = {\n className: null,\n isOpen: false,\n hasClose: false,\n onDismiss: () => {},\n initialFocusRef: () => {}\n};\n\nModal.propTypes = {\n /**\n * This style will be applied to ModalContent used by Modal component\n */\n className: PropTypes.string,\n\n /**\n * Whether modal is open or closed - aka visitable to the user\n */\n isOpen: PropTypes.bool,\n\n /**\n * Called when modal will be closed\n */\n onDismiss: PropTypes.func,\n\n /**\n * By default the first focusable element will receive focus when the dialog opens but you can provide a ref to focus instead.\n */\n initialFocusRef: PropTypes.func,\n\n /**\n * Whether to show close button or not\n */\n hasClose: PropTypes.bool,\n\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]).isRequired,\n\n //\n // @reach/dialog will handle prop-type validation for us, but in order for this\n // props to show up in Storybook we need to add them here.\n //\n /* eslint-disable react/require-default-props */\n 'aria-label': PropTypes.string,\n 'aria-labelledby': PropTypes.string\n /* eslint-enable react/require-default-props */\n};\n\nexport default Modal;\n","// extracted by mini-css-extract-plugin\nexport default {\"dialog\":\"ModalWithTabs--dialog--nbojY\",\"header\":\"ModalWithTabs--header--VHGe1\",\"header-title\":\"ModalWithTabs--header-title--bzlkJ\",\"headerTitle\":\"ModalWithTabs--header-title--bzlkJ\",\"header-content\":\"ModalWithTabs--header-content--XKA5+\",\"headerContent\":\"ModalWithTabs--header-content--XKA5+\",\"logo\":\"ModalWithTabs--logo--iELWj\",\"tabs\":\"ModalWithTabs--tabs--0+5QS\",\"tab-list\":\"ModalWithTabs--tab-list--WOeC2\",\"tabList\":\"ModalWithTabs--tab-list--WOeC2\",\"tab\":\"ModalWithTabs--tab--OFTLO\",\"tab-panels\":\"ModalWithTabs--tab-panels--PDSup\",\"tabPanels\":\"ModalWithTabs--tab-panels--PDSup\",\"tab-panel\":\"ModalWithTabs--tab-panel--K6jlo\",\"tabPanel\":\"ModalWithTabs--tab-panel--K6jlo\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Modal from '../Modal';\nimport { Tabs, TabList, Tab, TabPanel, TabPanels } from '../Tabs';\n\nimport styles from './styles.scss';\n\n//\n// ModalTabs\n// --------------------\n\nexport function ModalTabs({ className, children, ...otherProps }) {\n const classNames = [styles.tabs];\n if (className) {\n classNames.push(className);\n }\n return (\n \n {children}\n \n );\n}\n\nModalTabs.defaultProps = {\n className: null\n};\n\nModalTabs.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string\n};\n\n//\n// ModalTabList\n// --------------------\n\nexport function ModalTabList({ className, children }) {\n const classNames = [styles.tabList];\n if (className) {\n classNames.push(className);\n }\n return {children};\n}\n\nModalTabList.defaultProps = {\n className: null\n};\n\nModalTabList.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string\n};\n\n//\n// ModalTab\n// --------------------\n\nexport function ModalTab({ className, children, disabled }) {\n const classNames = [styles.tab];\n if (className) {\n classNames.push(className);\n }\n return (\n \n {children}\n \n );\n}\n\nModalTab.defaultProps = {\n className: null,\n disabled: false\n};\n\nModalTab.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n disabled: PropTypes.bool\n};\n\n//\n// ModalTabPanels\n// --------------------\n\nexport function ModalTabPanels({ className, children }) {\n const classNames = [styles.tabPanels];\n if (className) {\n classNames.push(className);\n }\n return {children};\n}\n\nModalTabPanels.defaultProps = {\n className: null\n};\n\nModalTabPanels.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string\n};\n\n//\n// ModalTabPanels\n// --------------------\n\nexport function ModalTabPanel({ className, children }) {\n const classNames = [styles.tabPanel];\n if (className) {\n classNames.push(className);\n }\n return {children};\n}\n\nModalTabPanel.defaultProps = {\n className: null\n};\n\nModalTabPanel.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string\n};\n\n//\n// ModalWithTabs\n// --------------------\n\nexport default function ModalWithTabs({\n isOpen,\n className,\n onDismiss,\n children,\n title,\n logo,\n ...otherProps\n}) {\n const classNames = [styles.dialog];\n if (className) {\n classNames.push(className);\n }\n return (\n \n
\n
\n

\n {logo && \"\"}\n {title}\n

\n
\n
\n {children}\n \n );\n}\n\nModalWithTabs.defaultProps = {\n isOpen: false,\n className: null,\n onDismiss: () => {},\n logo: null\n};\n\nModalWithTabs.propTypes = {\n children: PropTypes.node.isRequired,\n title: PropTypes.node.isRequired,\n logo: PropTypes.string,\n isOpen: PropTypes.bool,\n className: PropTypes.string,\n onDismiss: PropTypes.func\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"popup\":\"Popup--popup--I0qGS\",\"contents\":\"Popup--contents--isjoC\",\"arrow\":\"Popup--arrow--FJXYY\"};","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { Manager, Reference, Popper } from 'react-popper';\nimport Portal from '@reach/portal';\n\nimport styles from './styles.scss';\n\nconst Popup = ({\n children,\n position,\n className,\n offset,\n disabled,\n onShow,\n onHide,\n contents\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [clickedClosed, setClickedClosed] = useState(false);\n const [showTimeout, setShowTimeout] = useState(null);\n let hideTimeout;\n\n useEffect(() => {\n if (disabled) {\n setIsOpen(false);\n }\n }, [disabled]);\n\n const handleShow = () => {\n clearTimeout(showTimeout);\n clearTimeout(hideTimeout);\n\n if (disabled) {\n return;\n }\n\n if (clickedClosed) {\n return;\n }\n\n setShowTimeout(\n setTimeout(() => {\n if (isOpen === false) {\n onShow();\n }\n setIsOpen(true);\n }, 100)\n );\n };\n\n const handleHide = () => {\n clearTimeout(showTimeout);\n\n setClickedClosed(false);\n\n hideTimeout = setTimeout(() => {\n setIsOpen(false);\n onHide();\n }, 0);\n };\n\n const handleClick = () => {\n if (!isOpen && disabled) {\n return;\n }\n setClickedClosed(isOpen);\n setIsOpen(!isOpen);\n };\n\n const popupClassName = () => {\n const popupClasses = [styles.popup];\n\n if (className) {\n popupClasses.push(className);\n }\n\n return popupClasses.join(' ');\n };\n\n return (\n \n \n {({ ref }) =>\n React.cloneElement(children, {\n ref,\n onMouseOver: handleShow,\n onMouseLeave: handleHide,\n onFocus: handleShow,\n onBlur: handleHide,\n onClick: handleClick\n })\n }\n \n\n {isOpen && (\n \n \n {({ style, placement: dataPlacement, ref, arrowProps }) => (\n \n
{contents}
\n \n
\n )}\n \n \n )}\n \n );\n};\n\nPopup.defaultProps = {\n position: 'bottom',\n className: null,\n offset: 0,\n disabled: false,\n onShow: () => {},\n onHide: () => {}\n};\n\nPopup.propTypes = {\n children: PropTypes.node.isRequired,\n position: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),\n className: PropTypes.string,\n offset: PropTypes.number,\n disabled: PropTypes.bool,\n onShow: PropTypes.func,\n onHide: PropTypes.func,\n contents: PropTypes.node.isRequired\n};\n\nexport default Popup;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActionsRadioOffSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n )\n);\nSvgActionsRadioOffSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgActionsRadioOffSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActionsRadioOffSmall;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nconst SvgActionsRadioOnSmall = React.forwardRef(\n ({ color, size, title, titleId, ...props }, ref) => (\n \n {title ? {title} : null}\n \n \n \n )\n);\nSvgActionsRadioOnSmall.defaultProps = {\n color: 'currentColor',\n size: 24,\n title: undefined,\n titleId: undefined\n};\nSvgActionsRadioOnSmall.propTypes = {\n color: PropTypes.string,\n size: PropTypes.number,\n title: PropTypes.string,\n titleId: PropTypes.string\n};\nexport default SvgActionsRadioOnSmall;\n","// extracted by mini-css-extract-plugin\nexport default {\"radio\":\"Radio--radio--xEC3K\"};","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport RadioOff from '@strava/icons/ActionsRadioOffSmall';\nimport RadioOn from '@strava/icons/ActionsRadioOnSmall';\n\nimport colors from '../colors';\nimport styles from './styles.scss';\n\nconst Radio = ({\n id,\n name,\n value,\n color,\n checked,\n disabled,\n className,\n onChange\n}) => {\n const classNames = [styles.radio, className];\n\n return (\n \n \n\n {checked ? : }\n \n );\n};\n\nRadio.defaultProps = {\n color: colors.O50_STRAVA_ORANGE,\n checked: false,\n disabled: false,\n className: null,\n onChange: () => {}\n};\n\nRadio.propTypes = {\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n color: PropTypes.string,\n value: PropTypes.string.isRequired,\n checked: PropTypes.bool,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n onChange: PropTypes.func\n};\n\nexport default Radio;\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MediaQuery\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"MediaQuery\"] = factory(root[\"React\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_6__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MediaQuery\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"MediaQuery\"] = factory(root[\"React\"]);\n})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_6__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 5);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (true) {\n var ReactIs = __webpack_require__(1);\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = __webpack_require__(8)(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nif (false) {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = __webpack_require__(7);\n}\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (hyphenateStyleName);\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_prop_types__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_prop_types__);\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\nvar stringOrNumber = __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.oneOfType([__WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string, __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number]); // properties that match media queries\n\nvar matchers = {\n orientation: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.oneOf(['portrait', 'landscape']),\n scan: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.oneOf(['progressive', 'interlace']),\n aspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n deviceAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n height: stringOrNumber,\n deviceHeight: stringOrNumber,\n width: stringOrNumber,\n deviceWidth: stringOrNumber,\n color: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n colorIndex: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n monochrome: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n resolution: stringOrNumber // media features\n\n};\n\nvar features = _objectSpread({\n minAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n maxAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n minDeviceAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n maxDeviceAspectRatio: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.string,\n minHeight: stringOrNumber,\n maxHeight: stringOrNumber,\n minDeviceHeight: stringOrNumber,\n maxDeviceHeight: stringOrNumber,\n minWidth: stringOrNumber,\n maxWidth: stringOrNumber,\n minDeviceWidth: stringOrNumber,\n maxDeviceWidth: stringOrNumber,\n minColor: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n maxColor: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n minColorIndex: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n maxColorIndex: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n minMonochrome: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n maxMonochrome: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.number,\n minResolution: stringOrNumber,\n maxResolution: stringOrNumber\n}, matchers); // media types\n\n\nvar types = {\n all: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n grid: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n aural: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n braille: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n handheld: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n print: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n projection: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n screen: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n tty: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n tv: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool,\n embossed: __WEBPACK_IMPORTED_MODULE_0_prop_types___default.a.bool\n};\n\nvar all = _objectSpread({}, types, features); // add the type property\n\n\nmatchers.type = Object.keys(types);\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n all: all,\n types: types,\n matchers: matchers,\n features: features\n});\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MediaQueryContextConsumer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MediaQuery\", function() { return MediaQuery; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Context\", function() { return Context; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_prop_types__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_prop_types__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_matchmediaquery__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_matchmediaquery___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_matchmediaquery__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_hyphenate_style_name__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__mediaQuery__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__toQuery__ = __webpack_require__(13);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"toQuery\", function() { return __WEBPACK_IMPORTED_MODULE_5__toQuery__[\"a\"]; });\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\nvar defaultTypes = {\n component: __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.node,\n query: __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.string,\n values: __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.shape(__WEBPACK_IMPORTED_MODULE_4__mediaQuery__[\"a\" /* default */].matchers),\n children: __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.oneOfType([__WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.node, __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.func]),\n onChange: __WEBPACK_IMPORTED_MODULE_1_prop_types___default.a.func\n};\nvar excludedQueryKeys = Object.keys(defaultTypes);\n\nvar omit = function omit(object, keys) {\n var newObject = _objectSpread({}, object);\n\n keys.forEach(function (key) {\n return delete newObject[key];\n });\n return newObject;\n};\n\nvar getValues = function getValues(_ref) {\n var values = _ref.values;\n if (!values) return null;\n var keys = Object.keys(values);\n if (keys.length === 0) return null;\n return keys.reduce(function (result, key) {\n result[Object(__WEBPACK_IMPORTED_MODULE_3_hyphenate_style_name__[\"a\" /* default */])(key)] = values[key];\n return result;\n }, {});\n};\n\nvar getQuery = function getQuery(props) {\n return props.query || Object(__WEBPACK_IMPORTED_MODULE_5__toQuery__[\"a\" /* default */])(omit(props, excludedQueryKeys));\n};\n\nvar MediaQuery =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(MediaQuery, _React$Component);\n\n function MediaQuery() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, MediaQuery);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(MediaQuery)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n matches: false,\n mq: null,\n query: '',\n values: null\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidMount\", function () {\n _this.state.mq.addListener(_this.updateMatches); // make sure match is correct since status could have since first render and now\n\n\n _this.updateMatches();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidUpdate\", function (prevProps, prevState) {\n if (_this.state.mq !== prevState.mq) {\n _this.cleanupMediaQuery(prevState.mq);\n\n _this.state.mq.addListener(_this.updateMatches); // we don't need to call updateMatches here because even if the old mq fired before\n // we could safely remove it, updateMatches refers to the new one mq instance\n // and it will be accurate.\n\n }\n\n if (_this.props.onChange && prevState.matches !== _this.state.matches) {\n _this.props.onChange(_this.state.matches);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentWillUnmount\", function () {\n _this._unmounted = true;\n\n _this.cleanupMediaQuery(_this.state.mq);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"cleanupMediaQuery\", function (mq) {\n if (!mq) return;\n mq.removeListener(_this.updateMatches);\n mq.dispose();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateMatches\", function () {\n if (_this._unmounted) return;\n if (_this.state.mq.matches === _this.state.matches) return;\n\n _this.setState({\n matches: _this.state.mq.matches\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"render\", function () {\n if (typeof _this.props.children === 'function') {\n return _this.props.children(_this.state.matches);\n }\n\n return _this.state.matches ? _this.props.children : null;\n });\n\n return _this;\n }\n\n _createClass(MediaQuery, null, [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(props, state) {\n var query = getQuery(props);\n if (!query) throw new Error('Invalid or missing MediaQuery!');\n var values = getValues(props);\n if (query === state.query && values === state.values) return null; // nothing changed\n\n var mq = __WEBPACK_IMPORTED_MODULE_2_matchmediaquery___default()(query, values || {}, !!values);\n return {\n matches: mq.matches,\n mq: mq,\n query: query,\n values: values\n };\n }\n }]);\n\n return MediaQuery;\n}(__WEBPACK_IMPORTED_MODULE_0_react___default.a.Component);\n\n_defineProperty(MediaQuery, \"displayName\", 'MediaQuery');\n\n_defineProperty(MediaQuery, \"defaultProps\", {\n values: null\n});\n\nvar Context = __WEBPACK_IMPORTED_MODULE_0_react___default.a.createContext();\n\nvar MediaQueryContextConsumer = function MediaQueryContextConsumer(props) {\n var values = __WEBPACK_IMPORTED_MODULE_0_react___default.a.useContext(Context);\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(MediaQuery, _extends({\n values: values\n }, props));\n};\n\nMediaQueryContextConsumer.displayName = \"MediaQueryContextConsumer\";\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/** @license React v16.8.6\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\n\n\nif (true) {\n (function() {\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactIs = __webpack_require__(1);\nvar assign = __webpack_require__(9);\n\nvar ReactPropTypesSecret = __webpack_require__(2);\nvar checkPropTypes = __webpack_require__(10);\n\nvar has = Function.call.bind(Object.prototype.hasOwnProperty);\nvar printWarning = function() {};\n\nif (true) {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (true) {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (\"development\" !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (true) {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar printWarning = function() {};\n\nif (true) {\n var ReactPropTypesSecret = __webpack_require__(2);\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (true) {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (true) {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar staticMatch = __webpack_require__(12).match;\nvar dynamicMatch = typeof window !== 'undefined' ? window.matchMedia : null;\n\n// our fake MediaQueryList\nfunction Mql(query, values, forceStatic){\n var self = this;\n if(dynamicMatch && !forceStatic){\n var mql = dynamicMatch.call(window, query);\n this.matches = mql.matches;\n this.media = mql.media;\n // TODO: is there a time it makes sense to remove this listener?\n mql.addListener(update);\n } else {\n this.matches = staticMatch(query, values);\n this.media = query;\n }\n\n this.addListener = addListener;\n this.removeListener = removeListener;\n this.dispose = dispose;\n\n function addListener(listener){\n if(mql){\n mql.addListener(listener);\n }\n }\n\n function removeListener(listener){\n if(mql){\n mql.removeListener(listener);\n }\n }\n\n // update ourselves!\n function update(evt){\n self.matches = evt.matches;\n self.media = evt.media;\n }\n\n function dispose(){\n if(mql){\n mql.removeListener(update);\n }\n }\n}\n\nfunction matchMedia(query, values, forceStatic){\n return new Mql(query, values, forceStatic);\n}\n\nmodule.exports = matchMedia;\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n\n\nexports.match = matchQuery;\nexports.parse = parseQuery;\n\n// -----------------------------------------------------------------------------\n\nvar RE_MEDIA_QUERY = /(?:(only|not)?\\s*([^\\s\\(\\)]+)(?:\\s*and)?\\s*)?(.+)?/i,\n RE_MQ_EXPRESSION = /\\(\\s*([^\\s\\:\\)]+)\\s*(?:\\:\\s*([^\\s\\)]+))?\\s*\\)/,\n RE_MQ_FEATURE = /^(?:(min|max)-)?(.+)/,\n RE_LENGTH_UNIT = /(em|rem|px|cm|mm|in|pt|pc)?$/,\n RE_RESOLUTION_UNIT = /(dpi|dpcm|dppx)?$/;\n\nfunction matchQuery(mediaQuery, values) {\n return parseQuery(mediaQuery).some(function (query) {\n var inverse = query.inverse;\n\n // Either the parsed or specified `type` is \"all\", or the types must be\n // equal for a match.\n var typeMatch = query.type === 'all' || values.type === query.type;\n\n // Quit early when `type` doesn't match, but take \"not\" into account.\n if ((typeMatch && inverse) || !(typeMatch || inverse)) {\n return false;\n }\n\n var expressionsMatch = query.expressions.every(function (expression) {\n var feature = expression.feature,\n modifier = expression.modifier,\n expValue = expression.value,\n value = values[feature];\n\n // Missing or falsy values don't match.\n if (!value) { return false; }\n\n switch (feature) {\n case 'orientation':\n case 'scan':\n return value.toLowerCase() === expValue.toLowerCase();\n\n case 'width':\n case 'height':\n case 'device-width':\n case 'device-height':\n expValue = toPx(expValue);\n value = toPx(value);\n break;\n\n case 'resolution':\n expValue = toDpi(expValue);\n value = toDpi(value);\n break;\n\n case 'aspect-ratio':\n case 'device-aspect-ratio':\n case /* Deprecated */ 'device-pixel-ratio':\n expValue = toDecimal(expValue);\n value = toDecimal(value);\n break;\n\n case 'grid':\n case 'color':\n case 'color-index':\n case 'monochrome':\n expValue = parseInt(expValue, 10) || 1;\n value = parseInt(value, 10) || 0;\n break;\n }\n\n switch (modifier) {\n case 'min': return value >= expValue;\n case 'max': return value <= expValue;\n default : return value === expValue;\n }\n });\n\n return (expressionsMatch && !inverse) || (!expressionsMatch && inverse);\n });\n}\n\nfunction parseQuery(mediaQuery) {\n return mediaQuery.split(',').map(function (query) {\n query = query.trim();\n\n var captures = query.match(RE_MEDIA_QUERY),\n modifier = captures[1],\n type = captures[2],\n expressions = captures[3] || '',\n parsed = {};\n\n parsed.inverse = !!modifier && modifier.toLowerCase() === 'not';\n parsed.type = type ? type.toLowerCase() : 'all';\n\n // Split expressions into a list.\n expressions = expressions.match(/\\([^\\)]+\\)/g) || [];\n\n parsed.expressions = expressions.map(function (expression) {\n var captures = expression.match(RE_MQ_EXPRESSION),\n feature = captures[1].toLowerCase().match(RE_MQ_FEATURE);\n\n return {\n modifier: feature[1],\n feature : feature[2],\n value : captures[2]\n };\n });\n\n return parsed;\n });\n}\n\n// -- Utilities ----------------------------------------------------------------\n\nfunction toDecimal(ratio) {\n var decimal = Number(ratio),\n numbers;\n\n if (!decimal) {\n numbers = ratio.match(/^(\\d+)\\s*\\/\\s*(\\d+)$/);\n decimal = numbers[1] / numbers[2];\n }\n\n return decimal;\n}\n\nfunction toDpi(resolution) {\n var value = parseFloat(resolution),\n units = String(resolution).match(RE_RESOLUTION_UNIT)[1];\n\n switch (units) {\n case 'dpcm': return value / 2.54;\n case 'dppx': return value * 96;\n default : return value;\n }\n}\n\nfunction toPx(length) {\n var value = parseFloat(length),\n units = String(length).match(RE_LENGTH_UNIT)[1];\n\n switch (units) {\n case 'em' : return value * 16;\n case 'rem': return value * 16;\n case 'cm' : return value * 96 / 2.54;\n case 'mm' : return value * 96 / 2.54 / 10;\n case 'in' : return value * 96;\n case 'pt' : return value * 72;\n case 'pc' : return value * 72 / 12;\n default : return value;\n }\n}\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_hyphenate_style_name__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__mediaQuery__ = __webpack_require__(4);\n\n\n\nvar negate = function negate(cond) {\n return \"not \".concat(cond);\n};\n\nfunction keyVal(k, v) {\n var realKey = Object(__WEBPACK_IMPORTED_MODULE_0_hyphenate_style_name__[\"a\" /* default */])(k); // px shorthand\n\n if (typeof v === 'number') {\n v = \"\".concat(v, \"px\");\n }\n\n if (v === true) {\n return k;\n }\n\n if (v === false) {\n return negate(k);\n }\n\n return \"(\".concat(realKey, \": \").concat(v, \")\");\n}\n\nfunction join(conds) {\n return conds.join(' and ');\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (obj) {\n var rules = [];\n Object.keys(__WEBPACK_IMPORTED_MODULE_1__mediaQuery__[\"a\" /* default */].all).forEach(function (k) {\n var v = obj[k];\n\n if (v != null) {\n rules.push(keyVal(k, v));\n }\n });\n return join(rules);\n});\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// dist/react-responsive.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 5);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap a240fde86c0ad9ba24cd","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/index.js\n// module id = 0\n// module chunks = 0","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-is/index.js\n// module id = 1\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/lib/ReactPropTypesSecret.js\n// module id = 2\n// module chunks = 0","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nexport default hyphenateStyleName\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/hyphenate-style-name/index.js\n// module id = 3\n// module chunks = 0","import PropTypes from 'prop-types'\n\nconst stringOrNumber = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n])\n\n// properties that match media queries\nconst matchers = {\n orientation: PropTypes.oneOf([\n 'portrait',\n 'landscape'\n ]),\n\n scan: PropTypes.oneOf([\n 'progressive',\n 'interlace'\n ]),\n\n aspectRatio: PropTypes.string,\n deviceAspectRatio: PropTypes.string,\n\n height: stringOrNumber,\n deviceHeight: stringOrNumber,\n\n width: stringOrNumber,\n deviceWidth: stringOrNumber,\n\n color: PropTypes.bool,\n\n colorIndex: PropTypes.bool,\n\n monochrome: PropTypes.bool,\n resolution: stringOrNumber\n}\n\n// media features\nconst features = {\n minAspectRatio: PropTypes.string,\n maxAspectRatio: PropTypes.string,\n minDeviceAspectRatio: PropTypes.string,\n maxDeviceAspectRatio: PropTypes.string,\n\n minHeight: stringOrNumber,\n maxHeight: stringOrNumber,\n minDeviceHeight: stringOrNumber,\n maxDeviceHeight: stringOrNumber,\n\n minWidth: stringOrNumber,\n maxWidth: stringOrNumber,\n minDeviceWidth: stringOrNumber,\n maxDeviceWidth: stringOrNumber,\n\n minColor: PropTypes.number,\n maxColor: PropTypes.number,\n\n minColorIndex: PropTypes.number,\n maxColorIndex: PropTypes.number,\n\n minMonochrome: PropTypes.number,\n maxMonochrome: PropTypes.number,\n\n minResolution: stringOrNumber,\n maxResolution: stringOrNumber,\n\n ...matchers\n}\n\n// media types\nconst types = {\n all: PropTypes.bool,\n grid: PropTypes.bool,\n aural: PropTypes.bool,\n braille: PropTypes.bool,\n handheld: PropTypes.bool,\n print: PropTypes.bool,\n projection: PropTypes.bool,\n screen: PropTypes.bool,\n tty: PropTypes.bool,\n tv: PropTypes.bool,\n embossed: PropTypes.bool\n}\n\nconst all = { ...types, ...features }\n\n// add the type property\nmatchers.type = Object.keys(types)\n\nexport default {\n all: all,\n types: types,\n matchers: matchers,\n features: features\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/mediaQuery.js","import React from 'react'\nimport PropTypes from 'prop-types'\nimport matchMedia from 'matchmediaquery'\nimport hyphenate from 'hyphenate-style-name'\nimport mediaQuery from './mediaQuery'\nimport toQuery from './toQuery'\n\nconst defaultTypes = {\n component: PropTypes.node,\n query: PropTypes.string,\n values: PropTypes.shape(mediaQuery.matchers),\n children: PropTypes.oneOfType([ PropTypes.node, PropTypes.func ]),\n onChange: PropTypes.func\n}\n\nconst excludedQueryKeys = Object.keys(defaultTypes)\n\nconst omit = (object, keys) => {\n const newObject = { ...object }\n keys.forEach(key => delete newObject[key])\n return newObject\n}\n\nconst getValues = ({ values }) => {\n if (!values) return null\n const keys = Object.keys(values)\n if (keys.length === 0) return null\n return keys.reduce((result, key) => {\n result[hyphenate(key)] = values[key]\n return result\n }, {})\n}\n\nconst getQuery = (props) =>\n props.query || toQuery(omit(props, excludedQueryKeys))\n\nclass MediaQuery extends React.Component {\n static displayName = 'MediaQuery'\n static defaultProps = {\n values: null\n }\n\n static getDerivedStateFromProps(props, state) {\n const query = getQuery(props)\n if (!query) throw new Error('Invalid or missing MediaQuery!')\n const values = getValues(props)\n if (query === state.query && values === state.values) return null // nothing changed\n const mq = matchMedia(query, values || {}, !!values)\n return {\n matches: mq.matches,\n mq,\n query,\n values\n }\n }\n\n state = {\n matches: false,\n mq: null,\n query: '',\n values: null\n }\n\n componentDidMount = () => {\n this.state.mq.addListener(this.updateMatches)\n // make sure match is correct since status could have since first render and now\n this.updateMatches()\n }\n\n componentDidUpdate = (prevProps, prevState) => {\n if (this.state.mq !== prevState.mq) {\n this.cleanupMediaQuery(prevState.mq)\n this.state.mq.addListener(this.updateMatches)\n // we don't need to call updateMatches here because even if the old mq fired before\n // we could safely remove it, updateMatches refers to the new one mq instance\n // and it will be accurate.\n }\n if (this.props.onChange && prevState.matches !== this.state.matches) {\n this.props.onChange(this.state.matches)\n }\n }\n\n componentWillUnmount = () => {\n this._unmounted = true\n this.cleanupMediaQuery(this.state.mq)\n }\n\n cleanupMediaQuery = (mq) => {\n if (!mq) return\n mq.removeListener(this.updateMatches)\n mq.dispose()\n }\n\n updateMatches = () => {\n if (this._unmounted) return\n if (this.state.mq.matches === this.state.matches) return\n this.setState({ matches: this.state.mq.matches })\n }\n\n render = () => {\n if (typeof this.props.children === 'function') {\n return this.props.children(this.state.matches)\n }\n return this.state.matches ? this.props.children : null\n }\n}\n\nconst Context = React.createContext()\n\nconst MediaQueryContextConsumer = props => {\n const values = React.useContext(Context)\n return \n}\n\nMediaQueryContextConsumer.displayName = \"MediaQueryContextConsumer\"\n\nexport {\n MediaQueryContextConsumer as default,\n MediaQuery,\n Context,\n toQuery\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","module.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}\n// module id = 6\n// module chunks = 0","/** @license React v16.8.6\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-is/cjs/react-is.development.js\n// module id = 7\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar has = Function.call.bind(Object.prototype.hasOwnProperty);\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/factoryWithTypeCheckers.js\n// module id = 8\n// module chunks = 0","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/object-assign/index.js\n// module id = 9\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/checkPropTypes.js\n// module id = 10\n// module chunks = 0","'use strict';\n\nvar staticMatch = require('css-mediaquery').match;\nvar dynamicMatch = typeof window !== 'undefined' ? window.matchMedia : null;\n\n// our fake MediaQueryList\nfunction Mql(query, values, forceStatic){\n var self = this;\n if(dynamicMatch && !forceStatic){\n var mql = dynamicMatch.call(window, query);\n this.matches = mql.matches;\n this.media = mql.media;\n // TODO: is there a time it makes sense to remove this listener?\n mql.addListener(update);\n } else {\n this.matches = staticMatch(query, values);\n this.media = query;\n }\n\n this.addListener = addListener;\n this.removeListener = removeListener;\n this.dispose = dispose;\n\n function addListener(listener){\n if(mql){\n mql.addListener(listener);\n }\n }\n\n function removeListener(listener){\n if(mql){\n mql.removeListener(listener);\n }\n }\n\n // update ourselves!\n function update(evt){\n self.matches = evt.matches;\n self.media = evt.media;\n }\n\n function dispose(){\n if(mql){\n mql.removeListener(update);\n }\n }\n}\n\nfunction matchMedia(query, values, forceStatic){\n return new Mql(query, values, forceStatic);\n}\n\nmodule.exports = matchMedia;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/matchmediaquery/index.js\n// module id = 11\n// module chunks = 0","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n'use strict';\n\nexports.match = matchQuery;\nexports.parse = parseQuery;\n\n// -----------------------------------------------------------------------------\n\nvar RE_MEDIA_QUERY = /(?:(only|not)?\\s*([^\\s\\(\\)]+)(?:\\s*and)?\\s*)?(.+)?/i,\n RE_MQ_EXPRESSION = /\\(\\s*([^\\s\\:\\)]+)\\s*(?:\\:\\s*([^\\s\\)]+))?\\s*\\)/,\n RE_MQ_FEATURE = /^(?:(min|max)-)?(.+)/,\n RE_LENGTH_UNIT = /(em|rem|px|cm|mm|in|pt|pc)?$/,\n RE_RESOLUTION_UNIT = /(dpi|dpcm|dppx)?$/;\n\nfunction matchQuery(mediaQuery, values) {\n return parseQuery(mediaQuery).some(function (query) {\n var inverse = query.inverse;\n\n // Either the parsed or specified `type` is \"all\", or the types must be\n // equal for a match.\n var typeMatch = query.type === 'all' || values.type === query.type;\n\n // Quit early when `type` doesn't match, but take \"not\" into account.\n if ((typeMatch && inverse) || !(typeMatch || inverse)) {\n return false;\n }\n\n var expressionsMatch = query.expressions.every(function (expression) {\n var feature = expression.feature,\n modifier = expression.modifier,\n expValue = expression.value,\n value = values[feature];\n\n // Missing or falsy values don't match.\n if (!value) { return false; }\n\n switch (feature) {\n case 'orientation':\n case 'scan':\n return value.toLowerCase() === expValue.toLowerCase();\n\n case 'width':\n case 'height':\n case 'device-width':\n case 'device-height':\n expValue = toPx(expValue);\n value = toPx(value);\n break;\n\n case 'resolution':\n expValue = toDpi(expValue);\n value = toDpi(value);\n break;\n\n case 'aspect-ratio':\n case 'device-aspect-ratio':\n case /* Deprecated */ 'device-pixel-ratio':\n expValue = toDecimal(expValue);\n value = toDecimal(value);\n break;\n\n case 'grid':\n case 'color':\n case 'color-index':\n case 'monochrome':\n expValue = parseInt(expValue, 10) || 1;\n value = parseInt(value, 10) || 0;\n break;\n }\n\n switch (modifier) {\n case 'min': return value >= expValue;\n case 'max': return value <= expValue;\n default : return value === expValue;\n }\n });\n\n return (expressionsMatch && !inverse) || (!expressionsMatch && inverse);\n });\n}\n\nfunction parseQuery(mediaQuery) {\n return mediaQuery.split(',').map(function (query) {\n query = query.trim();\n\n var captures = query.match(RE_MEDIA_QUERY),\n modifier = captures[1],\n type = captures[2],\n expressions = captures[3] || '',\n parsed = {};\n\n parsed.inverse = !!modifier && modifier.toLowerCase() === 'not';\n parsed.type = type ? type.toLowerCase() : 'all';\n\n // Split expressions into a list.\n expressions = expressions.match(/\\([^\\)]+\\)/g) || [];\n\n parsed.expressions = expressions.map(function (expression) {\n var captures = expression.match(RE_MQ_EXPRESSION),\n feature = captures[1].toLowerCase().match(RE_MQ_FEATURE);\n\n return {\n modifier: feature[1],\n feature : feature[2],\n value : captures[2]\n };\n });\n\n return parsed;\n });\n}\n\n// -- Utilities ----------------------------------------------------------------\n\nfunction toDecimal(ratio) {\n var decimal = Number(ratio),\n numbers;\n\n if (!decimal) {\n numbers = ratio.match(/^(\\d+)\\s*\\/\\s*(\\d+)$/);\n decimal = numbers[1] / numbers[2];\n }\n\n return decimal;\n}\n\nfunction toDpi(resolution) {\n var value = parseFloat(resolution),\n units = String(resolution).match(RE_RESOLUTION_UNIT)[1];\n\n switch (units) {\n case 'dpcm': return value / 2.54;\n case 'dppx': return value * 96;\n default : return value;\n }\n}\n\nfunction toPx(length) {\n var value = parseFloat(length),\n units = String(length).match(RE_LENGTH_UNIT)[1];\n\n switch (units) {\n case 'em' : return value * 16;\n case 'rem': return value * 16;\n case 'cm' : return value * 96 / 2.54;\n case 'mm' : return value * 96 / 2.54 / 10;\n case 'in' : return value * 96;\n case 'pt' : return value * 72;\n case 'pc' : return value * 72 / 12;\n default : return value;\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-mediaquery/index.js\n// module id = 12\n// module chunks = 0","import hyphenate from 'hyphenate-style-name'\nimport mq from './mediaQuery'\n\nconst negate = cond => `not ${cond}`\n\nfunction keyVal(k, v) {\n const realKey = hyphenate(k)\n\n // px shorthand\n if (typeof v === 'number') {\n v = `${v}px`\n }\n if (v === true) {\n return k\n }\n if (v === false) {\n return negate(k)\n }\n return `(${realKey}: ${v})`\n}\n\nfunction join(conds) {\n return conds.join(' and ')\n}\n\nexport default function (obj) {\n const rules = []\n Object.keys(mq.all).forEach(function (k) {\n const v = obj[k]\n if (v != null) {\n rules.push(keyVal(k, v))\n }\n })\n return join(rules)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/toQuery.js","module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-descriptor\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/get-prototype-of\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/promise\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();","\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n if(a===b) {\n return [ai, bi];\n }\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","\"use strict\";\n\nvar utils = require(\"./utils\");\n\nmodule.exports = function batchProcessorMaker(options) {\n options = options || {};\n var reporter = options.reporter;\n var asyncProcess = utils.getOption(options, \"async\", true);\n var autoProcess = utils.getOption(options, \"auto\", true);\n\n if(autoProcess && !asyncProcess) {\n reporter && reporter.warn(\"Invalid options combination. auto=true and async=false is invalid. Setting async=true.\");\n asyncProcess = true;\n }\n\n var batch = Batch();\n var asyncFrameHandler;\n var isProcessing = false;\n\n function addFunction(level, fn) {\n if(!isProcessing && autoProcess && asyncProcess && batch.size() === 0) {\n // Since this is async, it is guaranteed to be executed after that the fn is added to the batch.\n // This needs to be done before, since we're checking the size of the batch to be 0.\n processBatchAsync();\n }\n\n batch.add(level, fn);\n }\n\n function processBatch() {\n // Save the current batch, and create a new batch so that incoming functions are not added into the currently processing batch.\n // Continue processing until the top-level batch is empty (functions may be added to the new batch while processing, and so on).\n isProcessing = true;\n while (batch.size()) {\n var processingBatch = batch;\n batch = Batch();\n processingBatch.process();\n }\n isProcessing = false;\n }\n\n function forceProcessBatch(localAsyncProcess) {\n if (isProcessing) {\n return;\n }\n\n if(localAsyncProcess === undefined) {\n localAsyncProcess = asyncProcess;\n }\n\n if(asyncFrameHandler) {\n cancelFrame(asyncFrameHandler);\n asyncFrameHandler = null;\n }\n\n if(localAsyncProcess) {\n processBatchAsync();\n } else {\n processBatch();\n }\n }\n\n function processBatchAsync() {\n asyncFrameHandler = requestFrame(processBatch);\n }\n\n function clearBatch() {\n batch = {};\n batchSize = 0;\n topLevel = 0;\n bottomLevel = 0;\n }\n\n function cancelFrame(listener) {\n // var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout;\n var cancel = clearTimeout;\n return cancel(listener);\n }\n\n function requestFrame(callback) {\n // var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function(fn) { return window.setTimeout(fn, 20); };\n var raf = function(fn) { return setTimeout(fn, 0); };\n return raf(callback);\n }\n\n return {\n add: addFunction,\n force: forceProcessBatch\n };\n};\n\nfunction Batch() {\n var batch = {};\n var size = 0;\n var topLevel = 0;\n var bottomLevel = 0;\n\n function add(level, fn) {\n if(!fn) {\n fn = level;\n level = 0;\n }\n\n if(level > topLevel) {\n topLevel = level;\n } else if(level < bottomLevel) {\n bottomLevel = level;\n }\n\n if(!batch[level]) {\n batch[level] = [];\n }\n\n batch[level].push(fn);\n size++;\n }\n\n function process() {\n for(var level = bottomLevel; level <= topLevel; level++) {\n var fns = batch[level];\n\n for(var i = 0; i < fns.length; i++) {\n var fn = fns[i];\n fn();\n }\n }\n }\n\n function getSize() {\n return size;\n }\n\n return {\n add: add,\n process: process,\n size: getSize\n };\n}\n","\"use strict\";\n\nvar utils = module.exports = {};\n\nutils.getOption = getOption;\n\nfunction getOption(options, name, defaultValue) {\n var value = options[name];\n\n if((value === undefined || value === null) && defaultValue !== undefined) {\n return defaultValue;\n }\n\n return value;\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","module.exports = require('./browser/algorithms.json')\n","var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","'use strict';\n\nmodule.exports = {\n number: require('./src/card-number'),\n expirationDate: require('./src/expiration-date'),\n expirationMonth: require('./src/expiration-month'),\n expirationYear: require('./src/expiration-year'),\n cvv: require('./src/cvv'),\n postalCode: require('./src/postal-code'),\n creditCardType: require('credit-card-type')\n};\n","'use strict';\n\nvar luhn10 = require('./luhn-10');\nvar getCardTypes = require('credit-card-type');\n\nfunction verification(card, isPotentiallyValid, isValid) {\n return {card: card, isPotentiallyValid: isPotentiallyValid, isValid: isValid};\n}\n\nfunction cardNumber(value, options) {\n var potentialTypes, cardType, isPotentiallyValid, isValid, i, maxLength;\n\n options = options || {};\n\n if (typeof value === 'number') {\n value = String(value);\n }\n\n if (typeof value !== 'string') { return verification(null, false, false); }\n\n value = value.replace(/\\-|\\s/g, '');\n\n if (!/^\\d*$/.test(value)) { return verification(null, false, false); }\n\n potentialTypes = getCardTypes(value);\n\n if (potentialTypes.length === 0) {\n return verification(null, false, false);\n } else if (potentialTypes.length !== 1) {\n return verification(null, true, false);\n }\n\n cardType = potentialTypes[0];\n\n if (options.maxLength && value.length > options.maxLength) {\n return verification(cardType, false, false);\n }\n\n if (cardType.type === getCardTypes.types.UNIONPAY && options.luhnValidateUnionPay !== true) {\n isValid = true;\n } else {\n isValid = luhn10(value);\n }\n\n maxLength = Math.max.apply(null, cardType.lengths);\n if (options.maxLength) {\n maxLength = Math.min(options.maxLength, maxLength);\n }\n\n for (i = 0; i < cardType.lengths.length; i++) {\n if (cardType.lengths[i] === value.length) {\n isPotentiallyValid = value.length < maxLength || isValid;\n return verification(cardType, isPotentiallyValid, isValid);\n }\n }\n\n return verification(cardType, value.length < maxLength, false);\n}\n\nmodule.exports = cardNumber;\n","'use strict';\n\nvar DEFAULT_LENGTH = 3;\n\nfunction includes(array, thing) {\n var i = 0;\n\n for (; i < array.length; i++) {\n if (thing === array[i]) { return true; }\n }\n\n return false;\n}\n\nfunction max(array) {\n var maximum = DEFAULT_LENGTH;\n var i = 0;\n\n for (; i < array.length; i++) {\n maximum = array[i] > maximum ? array[i] : maximum;\n }\n\n return maximum;\n}\n\nfunction verification(isValid, isPotentiallyValid) {\n return {isValid: isValid, isPotentiallyValid: isPotentiallyValid};\n}\n\nfunction cvv(value, maxLength) {\n maxLength = maxLength || DEFAULT_LENGTH;\n maxLength = maxLength instanceof Array ? maxLength : [maxLength];\n\n if (typeof value !== 'string') { return verification(false, false); }\n if (!/^\\d*$/.test(value)) { return verification(false, false); }\n if (includes(maxLength, value.length)) { return verification(true, true); }\n if (value.length < Math.min.apply(null, maxLength)) { return verification(false, true); }\n if (value.length > max(maxLength)) { return verification(false, false); }\n\n return verification(true, true);\n}\n\nmodule.exports = cvv;\n","'use strict';\n\nvar parseDate = require('./parse-date');\nvar expirationMonth = require('./expiration-month');\nvar expirationYear = require('./expiration-year');\n\nfunction verification(isValid, isPotentiallyValid, month, year) {\n return {\n isValid: isValid,\n isPotentiallyValid: isPotentiallyValid,\n month: month,\n year: year\n };\n}\n\nfunction expirationDate(value, maxElapsedYear) {\n var date, monthValid, yearValid, isValidForThisYear;\n\n if (typeof value === 'string') {\n value = value.replace(/^(\\d\\d) (\\d\\d(\\d\\d)?)$/, '$1/$2');\n date = parseDate(value);\n } else if (value !== null && typeof value === 'object') {\n date = {\n month: String(value.month),\n year: String(value.year)\n };\n } else {\n return verification(false, false, null, null);\n }\n\n monthValid = expirationMonth(date.month);\n yearValid = expirationYear(date.year, maxElapsedYear);\n\n if (monthValid.isValid) {\n if (yearValid.isCurrentYear) {\n isValidForThisYear = monthValid.isValidForThisYear;\n return verification(isValidForThisYear, isValidForThisYear, date.month, date.year);\n }\n\n if (yearValid.isValid) {\n return verification(true, true, date.month, date.year);\n }\n }\n\n if (monthValid.isPotentiallyValid && yearValid.isPotentiallyValid) {\n return verification(false, true, null, null);\n }\n\n return verification(false, false, null, null);\n}\n\nmodule.exports = expirationDate;\n","'use strict';\n\nfunction verification(isValid, isPotentiallyValid, isValidForThisYear) {\n return {\n isValid: isValid,\n isPotentiallyValid: isPotentiallyValid,\n isValidForThisYear: isValidForThisYear || false\n };\n}\n\nfunction expirationMonth(value) {\n var month, result;\n var currentMonth = new Date().getMonth() + 1;\n\n if (typeof value !== 'string') {\n return verification(false, false);\n }\n if (value.replace(/\\s/g, '') === '' || value === '0') {\n return verification(false, true);\n }\n if (!/^\\d*$/.test(value)) {\n return verification(false, false);\n }\n\n month = parseInt(value, 10);\n\n if (isNaN(value)) {\n return verification(false, false);\n }\n\n result = month > 0 && month < 13;\n\n return verification(result, result, result && month >= currentMonth);\n}\n\nmodule.exports = expirationMonth;\n","'use strict';\n\nvar DEFAULT_VALID_NUMBER_OF_YEARS_IN_THE_FUTURE = 19;\n\nfunction verification(isValid, isPotentiallyValid, isCurrentYear) {\n return {\n isValid: isValid,\n isPotentiallyValid: isPotentiallyValid,\n isCurrentYear: isCurrentYear || false\n };\n}\n\nfunction expirationYear(value, maxElapsedYear) {\n var currentFirstTwo, currentYear, firstTwo, len, twoDigitYear, valid, isCurrentYear;\n\n maxElapsedYear = maxElapsedYear || DEFAULT_VALID_NUMBER_OF_YEARS_IN_THE_FUTURE;\n\n if (typeof value !== 'string') {\n return verification(false, false);\n }\n if (value.replace(/\\s/g, '') === '') {\n return verification(false, true);\n }\n if (!/^\\d*$/.test(value)) {\n return verification(false, false);\n }\n\n len = value.length;\n\n if (len < 2) {\n return verification(false, true);\n }\n\n currentYear = new Date().getFullYear();\n\n if (len === 3) {\n // 20x === 20x\n firstTwo = value.slice(0, 2);\n currentFirstTwo = String(currentYear).slice(0, 2);\n return verification(false, firstTwo === currentFirstTwo);\n }\n\n if (len > 4) {\n return verification(false, false);\n }\n\n value = parseInt(value, 10);\n twoDigitYear = Number(String(currentYear).substr(2, 2));\n\n if (len === 2) {\n isCurrentYear = twoDigitYear === value;\n valid = value >= twoDigitYear && value <= twoDigitYear + maxElapsedYear;\n } else if (len === 4) {\n isCurrentYear = currentYear === value;\n valid = value >= currentYear && value <= currentYear + maxElapsedYear;\n }\n\n return verification(valid, valid, isCurrentYear);\n}\n\nmodule.exports = expirationYear;\n","'use strict';\n\n// Polyfill taken from .\n\nmodule.exports = Array.isArray || function (arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n};\n","/*\n * Luhn algorithm implementation in JavaScript\n * Copyright (c) 2009 Nicholas C. Zakas\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n'use strict';\n\nfunction luhn10(identifier) {\n var sum = 0;\n var alt = false;\n var i = identifier.length - 1;\n var num;\n\n while (i >= 0) {\n num = parseInt(identifier.charAt(i), 10);\n\n if (alt) {\n num *= 2;\n if (num > 9) {\n num = (num % 10) + 1; // eslint-disable-line no-extra-parens\n }\n }\n\n alt = !alt;\n\n sum += num;\n\n i--;\n }\n\n return sum % 10 === 0;\n}\n\nmodule.exports = luhn10;\n","'use strict';\n\nvar expirationYear = require('./expiration-year');\nvar isArray = require('./lib/is-array');\n\nfunction parseDate(value) {\n var month, len, year, yearValid;\n\n if (/\\//.test(value)) {\n value = value.split(/\\s*\\/\\s*/g);\n } else if (/\\s/.test(value)) {\n value = value.split(/ +/g);\n }\n\n if (isArray(value)) {\n return {\n month: value[0],\n year: value.slice(1).join()\n };\n }\n\n len = value[0] === '0' || value.length > 5 ? 2 : 1;\n\n if (value[0] === '1') {\n year = value.substr(1);\n yearValid = expirationYear(year);\n if (!yearValid.isPotentiallyValid) {\n len = 2;\n }\n }\n\n month = value.substr(0, len);\n\n return {\n month: month,\n year: value.substr(month.length)\n };\n}\n\nmodule.exports = parseDate;\n","'use strict';\n\nvar DEFAULT_MIN_POSTAL_CODE_LENGTH = 3;\n\nfunction verification(isValid, isPotentiallyValid) {\n return {isValid: isValid, isPotentiallyValid: isPotentiallyValid};\n}\n\nfunction postalCode(value, options) {\n var minLength;\n\n options = options || {};\n\n minLength = options.minLength || DEFAULT_MIN_POSTAL_CODE_LENGTH;\n\n if (typeof value !== 'string') {\n return verification(false, false);\n } else if (value.length < minLength) {\n return verification(false, true);\n }\n\n return verification(true, true);\n}\n\nmodule.exports = postalCode;\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","function toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n","require('../modules/es6.math.acosh');\nrequire('../modules/es6.math.asinh');\nrequire('../modules/es6.math.atanh');\nrequire('../modules/es6.math.cbrt');\nrequire('../modules/es6.math.clz32');\nrequire('../modules/es6.math.cosh');\nrequire('../modules/es6.math.expm1');\nrequire('../modules/es6.math.fround');\nrequire('../modules/es6.math.hypot');\nrequire('../modules/es6.math.imul');\nrequire('../modules/es6.math.log10');\nrequire('../modules/es6.math.log1p');\nrequire('../modules/es6.math.log2');\nrequire('../modules/es6.math.sign');\nrequire('../modules/es6.math.sinh');\nrequire('../modules/es6.math.tanh');\nrequire('../modules/es6.math.trunc');\nmodule.exports = require('../modules/_core').Math;\n","require('../modules/es6.number.constructor');\nrequire('../modules/es6.number.to-fixed');\nrequire('../modules/es6.number.to-precision');\nrequire('../modules/es6.number.epsilon');\nrequire('../modules/es6.number.is-finite');\nrequire('../modules/es6.number.is-integer');\nrequire('../modules/es6.number.is-nan');\nrequire('../modules/es6.number.is-safe-integer');\nrequire('../modules/es6.number.max-safe-integer');\nrequire('../modules/es6.number.min-safe-integer');\nrequire('../modules/es6.number.parse-float');\nrequire('../modules/es6.number.parse-int');\nmodule.exports = require('../modules/_core').Number;\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","require('../../modules/es6.object.get-own-property-descriptor');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","module.exports = function () { /* empty */ };\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = true;\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var hide = require('./_hide');\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n","module.exports = require('./_hide');\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","'use strict';\nvar global = require('./_global');\nvar core = require('./_core');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","exports.f = require('./_wks');\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","var cof = require('./_cof');\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","var $parseFloat = require('./_global').parseFloat;\nvar $trim = require('./_string-trim').trim;\n\nmodule.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = require('./_descriptors') ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n require('./_redefine')(global, NUMBER, $Number);\n}\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n","'use strict';\nvar $export = require('./_export');\nvar toInteger = require('./_to-integer');\nvar aNumberValue = require('./_a-number-value');\nvar repeat = require('./_string-repeat');\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n var i = -1;\n var c2 = c;\n while (++i < 6) {\n c2 += n * data[i];\n data[i] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\nvar divide = function (n) {\n var i = 6;\n var c = 0;\n while (--i >= 0) {\n c += data[i];\n data[i] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\nvar numToString = function () {\n var i = 6;\n var s = '';\n while (--i >= 0) {\n if (s !== '' || i === 0 || data[i] !== 0) {\n var t = String(data[i]);\n s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n }\n } return s;\n};\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !require('./_fails')(function () {\n // V8 ~ Android 4.3-\n $toFixed.call({});\n})), 'Number', {\n toFixed: function toFixed(fractionDigits) {\n var x = aNumberValue(this, ERROR);\n var f = toInteger(fractionDigits);\n var s = '';\n var m = ZERO;\n var e, z, j, k;\n if (f < 0 || f > 20) throw RangeError(ERROR);\n // eslint-disable-next-line no-self-compare\n if (x != x) return 'NaN';\n if (x <= -1e21 || x >= 1e21) return String(x);\n if (x < 0) {\n s = '-';\n x = -x;\n }\n if (x > 1e-21) {\n e = log(x * pow(2, 69, 1)) - 69;\n z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = f;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n m = numToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n m = numToString() + repeat.call(ZERO, f);\n }\n }\n if (f > 0) {\n k = m.length;\n m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n } else {\n m = s + m;\n } return m;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $fails = require('./_fails');\nvar aNumberValue = require('./_a-number-value');\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n // IE7-\n return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n // V8 ~ Android 4.3-\n $toPrecision.call({});\n})), 'Number', {\n toPrecision: function toPrecision(precision) {\n var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n }\n});\n","'use strict';\n\nvar _ = require('underscore');\nvar regions = require('./regions.js');\nvar continents = {};\n\ncontinents.asia = {\n name: 'Asia',\n regions: ['centralAsia', 'southernAsia', 'southeastAsia', 'eastAsia', 'westernAsia'],\n countries: _.flatten([\n regions.centralAsia.countries,\n regions.southernAsia.countries,\n regions.southeastAsia.countries,\n regions.eastAsia.countries,\n regions.westernAsia.countries\n ])\n .sort()\n};\n\ncontinents.africa = {\n name: 'Africa',\n regions: ['centralAfrica', 'northAfrica', 'southernAfrica', 'eastAfrica', 'westAfrica'],\n countries: _.flatten([\n regions.centralAfrica.countries,\n regions.northAfrica.countries,\n regions.southernAfrica.countries,\n regions.eastAfrica.countries,\n regions.westAfrica.countries\n ])\n .sort()\n};\n\ncontinents.northAmerica = {\n name: 'North America',\n regions: ['centralAmerica', 'northernAmerica', 'caribbean'],\n countries: _.flatten([\n regions.centralAmerica.countries,\n regions.northernAmerica.countries,\n regions.caribbean.countries\n ])\n .sort()\n};\n\ncontinents.southAmerica = {\n name: 'South America',\n regions: ['southAmerica'],\n countries: _.flatten([\n regions.southAmerica.countries\n ])\n .sort()\n}\n\ncontinents.antartica = {\n name: 'Antartica',\n regions: ['antartica'],\n countries: _.flatten([\n regions.antartica.countries\n ])\n .sort()\n}\n\ncontinents.europe = {\n name: 'Europe',\n regions: ['northernEurope', 'southernEurope', 'easternEurope', 'westernEurope'],\n countries: _.flatten([\n regions.northernEurope.countries,\n regions.southernEurope.countries,\n regions.easternEurope.countries,\n regions.westernEurope.countries\n ])\n .sort()\n}\n\ncontinents.oceania = {\n name: 'Oceania',\n regions: ['australia', 'melanesia', 'micronesia', 'polynesia'],\n countries: _.flatten([\n regions.australia.countries,\n regions.melanesia.countries,\n regions.micronesia.countries,\n regions.polynesia.countries\n ])\n .sort()\n};\n\nmodule.exports = continents;\n","'use strict';\n\nvar regions = {};\n\nregions.centralAsia = {\n name: 'Central Asia',\n countries: [\n // source is http://en.wikipedia.org/wiki/Central_Asia\n 'KZ', // Kazakhstan\n 'KG', // Kyrgyzstan\n 'TJ', // Tajikistan\n 'TM', // Turkmenistan\n 'UZ', // Uzbekistan\n ]\n}\n\nregions.southernAsia = {\n name: 'Southern Asia',\n countries: [\n // source is http://en.wikipedia.org/wiki/South_Asia\n 'AF', // Afghanistan\n 'BD', // Bangladesh\n 'BT', // Bhutan\n 'IO', // British Indian Ocean Territory\n 'IN', // India\n 'IR', // Iran\n 'MV', // Maldives\n 'NP', // Nepal\n 'PK', // Pakistan\n 'LK', // Sri Lanka\n ]\n}\n\nregions.southeastAsia = {\n name: 'Southeast Asia',\n countries: [\n // source is http://en.wikipedia.org/wiki/Southeast_Asia\n 'BN', // Brunei\n 'KH', // Cambodia\n 'CX', // Christmas Island\n 'CC', // Cocos (Keeling) Islands\n 'TL', // East Timor\n 'ID', // Indonesia\n 'LA', // Laos\n 'MY', // Malaysia\n 'MM', // Myanmar (Burma)\n 'PH', // Philippines\n 'SG', // Singapore\n 'TH', // Thailand\n 'VN', // Vietnam\n ]\n}\n\nregions.eastAsia = {\n name: 'East Asia',\n countries: [\n // source is http://en.wikipedia.org/wiki/East_Asia\n 'CN', // China\n 'HK', // Hong Kong\n 'JP', // Japan\n 'KP', // North Korea\n 'KR', // South Korea\n 'MO', // Macao\n 'MN', // Mongolia\n 'TW', // Taiwan\n ]\n}\n\nregions.westernAsia = {\n name: 'Western Asia',\n countries: [\n // source is http://en.wikipedia.org/wiki/Western_Asia\n 'AM', // Armenia\n 'AZ', // Azerbaijan\n 'BH', // Bahrain\n 'IQ', // Iraq\n 'IL', // Israel\n 'JO', // Jordan\n 'KW', // Kuwait\n 'LB', // Lebanon\n 'OM', // Oman\n 'PS', // Palestinian territories\n 'QA', // Qatar\n 'SA', // Saudi Arabia\n 'SY', // Syria\n 'TR', // Turkey\n 'AE', // United Arab Emirates\n 'YE', // Yemen\n ]\n}\n\nregions.centralAfrica = {\n name: 'Central Aftrica',\n countries: [\n // source is http://en.wikipedia.org/wiki/Central_Africa\n 'AO', // Angola\n 'CM', // Cameroon\n 'CF', // Central African Republic\n 'TD', // Chad\n 'CG', // Republic of the Congo\n 'CD', // Democratic Republic of the Congo\n 'GQ', // Equatorial Guinea\n 'GA', // Gabon\n 'ST', // São Tomé and Príncipe\n ]\n};\n\nregions.northAfrica = {\n name: 'North Africa',\n countries: [\n // source is http://en.wikipedia.org/wiki/North_Africa\n 'DZ', // Algeria\n 'EG', // Egypt\n 'LY', // Libya\n 'MA', // Morocco\n 'SD', // Sudan\n 'TN', // Tunisia\n 'EH', // Western Sahara\n ]\n};\n\nregions.southernAfrica = {\n name: 'Southern Africa',\n countries: [\n // source is http://en.wikipedia.org/wiki/Southern_Africa\n 'BW', // Botswana\n 'LS', // Lesotho\n 'NA', // Namibia\n 'ZA', // South Africa\n 'SZ', // Swaziland\n ]\n};\n\nregions.eastAfrica = {\n name: 'East Africa',\n countries: [\n // source is http://en.wikipedia.org/wiki/East_Africa\n 'BI', // Burundi\n 'KM', // Comoros\n 'DJ', // Djibouti\n 'ER', // Eritrea\n 'ET', // Ethiopia\n 'KE', // Kenya\n 'MG', // Madagascar\n 'MW', // Malawi\n 'MU', // Mauritius\n 'YT', // Mayotte (France)\n 'MZ', // Mozambique\n 'RE', // Réunion (France)\n 'RW', // Rwanda\n 'SC', // Seychelles\n 'SO', // Somalia\n 'SS', // South Sudan\n 'TZ', // Tanzania\n 'UG', // Uganda\n 'ZM', // Zambia\n 'ZW', // Zimbabwe\n ]\n};\n\nregions.westAfrica = {\n name: 'West Africa',\n countries: [\n // source is http://en.wikipedia.org/wiki/West_Africa\n 'BJ', // Benin\n 'BF', // Burkina Faso\n 'CV', // Cabo Verde\n 'CI', // Côte d'Ivoire\n 'GM', // Gambia\n 'GH', // Ghana\n 'GN', // Guinea\n 'GW', // Guinea-Bissau\n 'LR', // Liberia\n 'ML', // Mali\n 'MR', // Mauritania\n 'NE', // Niger\n 'NG', // Nigeria\n 'SH', // Saint Helena, Ascension and Tristan da Cunha (United Kingdom)\n 'SN', // Senegal\n 'SL', // Sierra Leone\n 'TG', // Togo\n ]\n};\n\nregions.centralAmerica = {\n name: 'Central America',\n countries: [\n // source is http://en.wikipedia.org/wiki/Central_America\n 'BZ', // Belize\n 'CR', // Costa Rica\n 'SV', // El Salvador\n 'GT', // Guatemala\n 'HN', // Honduras\n 'NI', // Nicaragua\n 'PA', // Panama\n ]\n}\n\nregions.northernAmerica = {\n name: 'Northern America',\n countries: [\n // source is http://en.wikipedia.org/wiki/Northern_America\n 'BM', // Bermuda\n 'CA', // Canada\n 'GL', // Greenland\n 'MX', // Mexico\n 'PM', // Saint Pierre and Miquelon\n 'US', // United States\n ]\n}\n\nregions.caribbean = {\n name: 'Caribbean',\n countries: [\n // source is http://en.wikipedia.org/wiki/Caribbean\n 'AI', // Anguilla\n 'AG', // Antigua and Barbuda\n 'AW', // Aruba\n 'BS', // Bahamas\n 'BB', // Barbados\n 'BQ', // Bonaire, Sint Eustatius & Saba\n 'VG', // British Virgin Islands\n 'KY', // Cayman Islands\n 'CU', // Cuba\n 'CW', // Curaçao\n 'DM', // Dominica\n 'DO', // Dominican Republic\n 'GD', // Grenada\n 'GP', // Guadeloupe\n 'HT', // Haiti\n 'JM', // Jamaica\n 'MQ', // Martinique\n 'MS', // Montserrat\n 'PR', // Puerto Rico\n 'BL', // Saint Barthélemy\n 'KN', // St. Kitts & Nevis\n 'LC', // Saint Lucia\n 'MF', // Saint Martin\n 'VC', // Saint Vincent and the Grenadines\n 'SX', // Sint Maarten\n 'TT', // Trinidad and Tobago\n 'TC', // Turks & Caicos\n 'VI', // United States Virgin Islands\n ]\n}\n\nregions.southAmerica = {\n name: 'South America',\n countries: [\n // source is http://en.wikipedia.org/wiki/South_America\n 'AR', // Argentina\n 'BO', // Bolivia\n 'BR', // Brazil\n 'CL', // Chile\n 'CO', // Colombia\n 'EC', // Ecuador\n 'FK', // Falkland Islands\n 'GF', // French Guiana\n 'GY', // Guyana\n 'PY', // Paraguay\n 'PE', // Peru\n 'SR', // Suriname\n 'UY', // Uruguay\n 'VE', // Venezuela\n ]\n}\n\nregions.antartica = {\n name: 'Antartica',\n countries: [\n // source is http://en.wikipedia.org/wiki/Antarctica\n 'AQ', // Antarctica\n 'BV', // Bouvet Island\n 'TF', // French Southern Territories\n 'HM', // Heard Island and McDonald Islands\n 'GS', // South Georgia and the South Sandwich Islands\n ]\n}\n\nregions.northernEurope = {\n name: 'Northern Europe',\n countries: [\n // source is http://en.wikipedia.org/wiki/Northern_Europe\n 'AX', // Åland\n 'DK', // Denmark\n 'EE', // Estonia\n 'FO', // Faroe Islands\n 'FI', // Finland\n 'GG', // Guernsey\n 'IS', // Iceland\n 'IE', // Republic of Ireland\n 'JE', // Jersey (UK)\n 'IM', // Isle of Man\n 'LV', // Latvia\n 'LT', // Lithuania\n 'NO', // Norway\n 'SJ', // Svalbard and Jan Mayen\n 'SE', // Sweden\n 'GB', // United Kingdom\n ]\n}\n\nregions.southernEurope = {\n name: 'Southern Europe',\n countries: [\n // source is http://en.wikipedia.org/wiki/Southern_Europe\n 'AL', // Albania\n 'AD', // Andorra\n 'BA', // Bosnia and Herzegovina\n 'HR', // Croatia\n 'CY', // Cyprus\n 'GI', // Gibraltar\n 'GR', // Greece\n 'IT', // Italy\n 'MK', // Republic of Macedonia\n 'VA', // Vatican City\n 'MT', // Malta\n 'ME', // Montenegro\n 'PT', // Portugal\n 'SM', // San Marino\n 'RS', // Serbia\n 'SI', // Slovenia\n 'ES', // Spain\n ]\n}\n\nregions.easternEurope = {\n name: 'Eastern Europe',\n countries: [\n // source is http://en.wikipedia.org/wiki/Eastern_Europe\n 'BY', // Belarus\n 'BG', // Bulgaria\n 'CZ', // Czech Republic\n 'GE', // Georgia\n 'HU', // Hungary\n 'MD', // Moldova\n 'PL', // Poland\n 'RO', // Romania\n 'RU', // Russia\n 'SK', // Slovakia\n 'UA', // Ukraine\n ]\n}\n\nregions.westernEurope = {\n name: 'Western Europe',\n countries: [\n // source is http://en.wikipedia.org/wiki/Western_Europe\n 'AT', // Austria\n 'BE', // Belgium\n 'FR', // France\n 'DE', // Germany\n 'LI', // Liechtenstein\n 'LU', // Luxembourg\n 'MC', // Monaco\n 'NL', // Netherlands\n 'CH', // Switzerland\n ],\n};\n \nregions.australia = {\n name: 'Australia',\n countries: [\n // source is http://en.wikipedia.org/wiki/Oceania\n 'AU', // Australia\n 'NF', // Norfolk Island\n 'NZ', // New Zealand\n ]\n};\n\nregions.melanesia = {\n name: 'Melanesia',\n countries: [\n // source is http://en.wikipedia.org/wiki/Oceania\n 'FJ', // Fiji\n 'NC', // New Caledonia\n 'PG', // Papua New Guinea\n 'SB', // Solomon Islands\n 'VU', // Vanuatu\n ]\n}; \n\nregions.micronesia = {\n name: 'Micronesia',\n countries: [\n // source is http://en.wikipedia.org/wiki/Oceania\n 'GU', // Guam\n 'KI', // Kiribati\n 'MH', // Marshall Islands\n 'FM', // Micronesia, Fed. Sts.\n 'NR', // Nauru\n 'MP', // Northern Mariana Islands\n 'PW', // Palau\n 'UM', // United States Minor Outlying Islands\n ]\n}; \n\nregions.polynesia = {\n name: 'Polynesia',\n countries: [\n // source is http://en.wikipedia.org/wiki/Oceania\n 'AS', // American Samoa\n 'CK', // Cook Islands\n 'PF', // French Polynesia\n 'NU', // Niue\n 'PN', // Pitcairn Islands\n 'WS', // Samoa\n 'TK', // Tokelau\n 'TO', // Tonga\n 'TV', // Tuvalu\n 'WF', // Wallis and Futuna\n ]\n};\n\nmodule.exports = regions;\n","'use strict';\n\nvar _ = require('underscore');\nvar continents = require('./data/continents');\nvar regions = require('./data/regions');\nvar countriesAll = require('./data/countries.json');\nvar currenciesAll = require('./data/currencies.json');\nvar languagesAll = require('./data/languages.json');\nvar lookup = require('./lookup');\n\nvar getSymbol = require('currency-symbol-map')\n\nexports.continents = continents;\nexports.regions = regions;\n\nexports.countries = {\n all: countriesAll,\n};\n\n_.each(countriesAll, function (country) {\n // prefer assigned country codes over inactive ones\n var exportedAlpha2 = exports.countries[country.alpha2];\n if (!exportedAlpha2 || exportedAlpha2.status === 'deleted') {\n exports.countries[country.alpha2] = country;\n }\n\n var exportedAlpha3 = exports.countries[country.alpha3];\n if (!exportedAlpha3 || exportedAlpha3.status === 'deleted') {\n exports.countries[country.alpha3] = country;\n }\n});\n\nexports.currencies = {\n all: currenciesAll,\n};\n\n_.each(currenciesAll, function (currency) {\n //If the symbol isn't available, default to the currency code\n var symbol = getSymbol(currency.code);\n if (symbol == '?') {\n symbol = currency.code;\n }\n\n currency.symbol = symbol;\n exports.currencies[currency.code] = currency;\n});\n\nexports.languages = {\n all: languagesAll,\n};\n\n// Note that for the languages there are several entries with the same alpha3 -\n// eg Dutch and Flemish. Not sure how to best deal with that - here whichever\n// comes last wins.\n_.each(languagesAll, function (language) {\n exports.languages[language.alpha2] = language;\n exports.languages[language.bibliographic] = language;\n exports.languages[language.alpha3] = language;\n});\n\nexports.lookup = lookup({\n countries: countriesAll,\n currencies: currenciesAll,\n languages: languagesAll\n});\n\nvar callingCountries = {all: []};\n\nvar callingCodesAll = _.reduce(countriesAll, function (codes, country) {\n if (country.countryCallingCodes && country.countryCallingCodes.length) {\n callingCountries.all.push(country);\n\n callingCountries[country.alpha2] = country;\n callingCountries[country.alpha3] = country;\n\n _.each(country.countryCallingCodes, function (code) {\n if (codes.indexOf(code) == -1) {\n codes.push(code);\n }\n });\n }\n return codes;\n}, []);\n\ndelete callingCountries['']; // remove empty alpha3s\nexports.callingCountries = callingCountries;\n\ncallingCodesAll.sort(function (a, b) {\n var parse = function (str) { return parseInt(str) };\n var splitA = _.map(a.split(' '), parse);\n var splitB = _.map(b.split(' '), parse);\n\n if (splitA[0] < splitB[0]) {\n return -1;\n } else if (splitA[0] > splitB[0]) {\n return 1;\n } else {\n // Same - check split[1]\n if (splitA[1] === undefined && splitB[1] !== undefined) {\n return -1;\n } else if (splitA[1] !== undefined && splitB[1] === undefined) {\n return 1;\n } else if (splitA[1] < splitB[1]) {\n return -1;\n } else if (splitA[1] > splitB[1]) {\n return 1;\n } else {\n return 0;\n }\n }\n});\n\nexports.callingCodes = {\n all: callingCodesAll\n};\n","var _ = require('underscore');\n\nmodule.exports = init;\n\nfunction init(o) {\n return {\n countries: search.bind(null, o.countries),\n currencies: search.bind(null, o.currencies),\n languages: search.bind(null, o.languages)\n };\n}\n\nfunction search(data, query) {\n var q = _.pairs(query);\n\n return data.filter(function(d) {\n return q.filter(function(v) {\n var prop = d[v[0]];\n\n if(_.isArray(prop)) return prop.indexOf(v[1]) >= 0;\n\n return prop == v[1];\n }).length == q.length;\n });\n}","var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","'use strict';\n\nvar types = require('./lib/card-types');\nvar clone = require('./lib/clone');\nvar findBestMatch = require('./lib/find-best-match');\nvar isValidInputType = require('./lib/is-valid-input-type');\nvar addMatchingCardsToResults = require('./lib/add-matching-cards-to-results');\n\nvar testOrder;\nvar customCards = {};\n\nvar cardNames = {\n VISA: 'visa',\n MASTERCARD: 'mastercard',\n AMERICAN_EXPRESS: 'american-express',\n DINERS_CLUB: 'diners-club',\n DISCOVER: 'discover',\n JCB: 'jcb',\n UNIONPAY: 'unionpay',\n MAESTRO: 'maestro',\n ELO: 'elo',\n MIR: 'mir',\n HIPER: 'hiper',\n HIPERCARD: 'hipercard'\n};\n\nvar ORIGINAL_TEST_ORDER = [\n cardNames.VISA,\n cardNames.MASTERCARD,\n cardNames.AMERICAN_EXPRESS,\n cardNames.DINERS_CLUB,\n cardNames.DISCOVER,\n cardNames.JCB,\n cardNames.UNIONPAY,\n cardNames.MAESTRO,\n cardNames.ELO,\n cardNames.MIR,\n cardNames.HIPER,\n cardNames.HIPERCARD\n];\n\ntestOrder = clone(ORIGINAL_TEST_ORDER);\n\nfunction findType(type) {\n return customCards[type] || types[type];\n}\n\nfunction getAllCardTypes() {\n return testOrder.map(function (type) {\n return clone(findType(type));\n });\n}\n\nfunction getCardPosition(name, ignoreErrorForNotExisting) {\n var position = testOrder.indexOf(name);\n\n if (!ignoreErrorForNotExisting && position === -1) {\n throw new Error('\"' + name + '\" is not a supported card type.');\n }\n\n return position;\n}\n\nfunction creditCardType(cardNumber) {\n var bestMatch;\n var results = [];\n\n if (!isValidInputType(cardNumber)) {\n return [];\n }\n\n if (cardNumber.length === 0) {\n return getAllCardTypes(testOrder);\n }\n\n testOrder.forEach(function (type) {\n var cardConfiguration = findType(type);\n\n addMatchingCardsToResults(cardNumber, cardConfiguration, results);\n });\n\n bestMatch = findBestMatch(results);\n\n if (bestMatch) {\n return [bestMatch];\n }\n\n return results;\n}\n\ncreditCardType.getTypeInfo = function (type) {\n return clone(findType(type));\n};\n\ncreditCardType.removeCard = function (name) {\n var position = getCardPosition(name);\n\n testOrder.splice(position, 1);\n};\n\ncreditCardType.addCard = function (config) {\n var existingCardPosition = getCardPosition(config.type, true);\n\n customCards[config.type] = config;\n\n if (existingCardPosition === -1) {\n testOrder.push(config.type);\n }\n};\n\ncreditCardType.updateCard = function (cardType, updates) {\n var clonedCard;\n var originalObject = customCards[cardType] || types[cardType];\n\n if (!originalObject) {\n throw new Error('\"' + cardType + '\" is not a recognized type. Use `addCard` instead.');\n }\n\n if (updates.type && originalObject.type !== updates.type) {\n throw new Error('Cannot overwrite type parameter.');\n }\n\n clonedCard = clone(originalObject, true);\n\n Object.keys(clonedCard).forEach(function (key) {\n if (updates[key]) {\n clonedCard[key] = updates[key];\n }\n });\n\n customCards[clonedCard.type] = clonedCard;\n};\n\ncreditCardType.changeOrder = function (name, position) {\n var currentPosition = getCardPosition(name);\n\n testOrder.splice(currentPosition, 1);\n testOrder.splice(position, 0, name);\n};\n\ncreditCardType.resetModifications = function () {\n testOrder = clone(ORIGINAL_TEST_ORDER);\n customCards = {};\n};\n\ncreditCardType.types = cardNames;\n\nmodule.exports = creditCardType;\n","'use strict';\n\nvar clone = require('./clone');\nvar matches = require('./matches');\n\nfunction addMatchingCardsToResults(cardNumber, cardConfiguration, results) {\n var i, pattern, patternLength, clonedCardConfiguration;\n\n for (i = 0; i < cardConfiguration.patterns.length; i++) {\n pattern = cardConfiguration.patterns[i];\n\n if (!matches(cardNumber, pattern)) {\n continue;\n }\n\n clonedCardConfiguration = clone(cardConfiguration);\n\n if (Array.isArray(pattern)) {\n patternLength = String(pattern[0]).length;\n } else {\n patternLength = String(pattern).length;\n }\n\n if (cardNumber.length >= patternLength) {\n clonedCardConfiguration.matchStrength = patternLength;\n }\n\n results.push(clonedCardConfiguration);\n break;\n }\n}\n\nmodule.exports = addMatchingCardsToResults;\n","'use strict';\n\nvar cardTypes = {\n visa: {\n niceType: 'Visa',\n type: 'visa',\n patterns: [\n 4\n ],\n gaps: [4, 8, 12],\n lengths: [16, 18, 19],\n code: {\n name: 'CVV',\n size: 3\n }\n },\n mastercard: {\n niceType: 'Mastercard',\n type: 'mastercard',\n patterns: [\n [51, 55],\n [2221, 2229],\n [223, 229],\n [23, 26],\n [270, 271],\n 2720\n ],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: 'CVC',\n size: 3\n }\n },\n 'american-express': {\n niceType: 'American Express',\n type: 'american-express',\n patterns: [\n 34,\n 37\n ],\n gaps: [4, 10],\n lengths: [15],\n code: {\n name: 'CID',\n size: 4\n }\n },\n 'diners-club': {\n niceType: 'Diners Club',\n type: 'diners-club',\n patterns: [\n [300, 305],\n 36,\n 38,\n 39\n ],\n gaps: [4, 10],\n lengths: [14, 16, 19],\n code: {\n name: 'CVV',\n size: 3\n }\n },\n discover: {\n niceType: 'Discover',\n type: 'discover',\n patterns: [\n 6011,\n [644, 649],\n 65\n ],\n gaps: [4, 8, 12],\n lengths: [16, 19],\n code: {\n name: 'CID',\n size: 3\n }\n },\n jcb: {\n niceType: 'JCB',\n type: 'jcb',\n patterns: [\n 2131,\n 1800,\n [3528, 3589]\n ],\n gaps: [4, 8, 12],\n lengths: [16, 17, 18, 19],\n code: {\n name: 'CVV',\n size: 3\n }\n },\n unionpay: {\n niceType: 'UnionPay',\n type: 'unionpay',\n patterns: [\n 620,\n [624, 626],\n [62100, 62182],\n [62184, 62187],\n [62185, 62197],\n [62200, 62205],\n [622010, 622999],\n 622018,\n [622019, 622999],\n [62207, 62209],\n [622126, 622925],\n [623, 626],\n 6270,\n 6272,\n 6276,\n [627700, 627779],\n [627781, 627799],\n [6282, 6289],\n 6291,\n 6292,\n 810,\n [8110, 8131],\n [8132, 8151],\n [8152, 8163],\n [8164, 8171]\n ],\n gaps: [4, 8, 12],\n lengths: [14, 15, 16, 17, 18, 19],\n code: {\n name: 'CVN',\n size: 3\n }\n },\n maestro: {\n niceType: 'Maestro',\n type: 'maestro',\n patterns: [\n 493698,\n [500000, 506698],\n [506779, 508999],\n [56, 59],\n 63,\n 67,\n 6\n ],\n gaps: [4, 8, 12],\n lengths: [12, 13, 14, 15, 16, 17, 18, 19],\n code: {\n name: 'CVC',\n size: 3\n }\n },\n elo: {\n niceType: 'Elo',\n type: 'elo',\n patterns: [\n 401178,\n 401179,\n 438935,\n 457631,\n 457632,\n 431274,\n 451416,\n 457393,\n 504175,\n [506699, 506778],\n [509000, 509999],\n 627780,\n 636297,\n 636368,\n [650031, 650033],\n [650035, 650051],\n [650405, 650439],\n [650485, 650538],\n [650541, 650598],\n [650700, 650718],\n [650720, 650727],\n [650901, 650978],\n [651652, 651679],\n [655000, 655019],\n [655021, 655058]\n ],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: 'CVE',\n size: 3\n }\n },\n mir: {\n niceType: 'Mir',\n type: 'mir',\n patterns: [\n [2200, 2204]\n ],\n gaps: [4, 8, 12],\n lengths: [16, 17, 18, 19],\n code: {\n name: 'CVP2',\n size: 3\n }\n },\n hiper: {\n niceType: 'Hiper',\n type: 'hiper',\n patterns: [\n 637095,\n 637568,\n 637599,\n 637609,\n 637612\n ],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: 'CVC',\n size: 3\n }\n },\n hipercard: {\n niceType: 'Hipercard',\n type: 'hipercard',\n patterns: [\n 606282\n ],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: 'CVC',\n size: 3\n }\n }\n};\n\nmodule.exports = cardTypes;\n","'use strict';\n\nfunction clone(originalObject) {\n var dupe;\n\n if (!originalObject) { return null; }\n\n dupe = JSON.parse(JSON.stringify(originalObject));\n\n return dupe;\n}\n\nmodule.exports = clone;\n","'use strict';\n\nfunction hasEnoughResultsToDetermineBestMatch(results) {\n var numberOfResultsWithMaxStrengthProperty = results.filter(function (result) {\n return result.matchStrength;\n }).length;\n\n // if all possible results have a maxStrength property\n // that means the card number is sufficiently long\n // enough to determine conclusively what the type is\n return numberOfResultsWithMaxStrengthProperty > 0 &&\n numberOfResultsWithMaxStrengthProperty === results.length;\n}\n\nfunction findBestMatch(results) {\n if (!hasEnoughResultsToDetermineBestMatch(results)) {\n return;\n }\n\n return results.reduce(function (bestMatch, result) { // eslint-disable-line consistent-return\n if (!bestMatch) {\n return result;\n }\n\n // if the current best match pattern is less specific\n // than this result, set the result as the new best match\n if (bestMatch.matchStrength < result.matchStrength) {\n return result;\n }\n\n return bestMatch;\n });\n}\n\nmodule.exports = findBestMatch;\n","'use strict';\n\nfunction isValidInputType(cardNumber) {\n return typeof cardNumber === 'string' || cardNumber instanceof String;\n}\n\nmodule.exports = isValidInputType;\n","'use strict';\n\n// Adapted from https://github.com/polvo-labs/card-type/blob/aaab11f80fa1939bccc8f24905a06ae3cd864356/src/cardType.js#L37-L42\nfunction matchesRange(cardNumber, min, max) {\n var maxLengthToCheck = String(min).length;\n var substr = cardNumber.substr(0, maxLengthToCheck);\n var integerRepresentationOfCardNumber = parseInt(substr, 10);\n\n min = parseInt(String(min).substr(0, substr.length), 10);\n max = parseInt(String(max).substr(0, substr.length), 10);\n\n return integerRepresentationOfCardNumber >= min && integerRepresentationOfCardNumber <= max;\n}\n\nfunction matchesPattern(cardNumber, pattern) {\n pattern = String(pattern);\n\n return pattern.substring(0, cardNumber.length) === cardNumber.substring(0, pattern.length);\n}\n\nfunction matches(cardNumber, pattern) {\n if (Array.isArray(pattern)) {\n return matchesRange(cardNumber, pattern[0], pattern[1]);\n }\n\n return matchesPattern(cardNumber, pattern);\n}\n\nmodule.exports = matches;\n","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n","module.exports = mapSymbol\n\nvar map = require('./map')\n\nfunction mapSymbol(currencyCode) {\n if (map.hasOwnProperty(currencyCode)) {\n return map[currencyCode]\n } else {\n return '?'\n }\n}","module.exports =\n{ \"ALL\": \"L\"\n, \"AFN\": \"؋\"\n, \"ARS\": \"$\"\n, \"AWG\": \"ƒ\"\n, \"AUD\": \"$\"\n, \"AZN\": \"₼\"\n, \"BSD\": \"$\"\n, \"BBD\": \"$\"\n, \"BYR\": \"p.\"\n, \"BZD\": \"BZ$\"\n, \"BMD\": \"$\"\n, \"BOB\": \"Bs.\"\n, \"BAM\": \"KM\"\n, \"BWP\": \"P\"\n, \"BGN\": \"лв\"\n, \"BRL\": \"R$\"\n, \"BND\": \"$\"\n, \"KHR\": \"៛\"\n, \"CAD\": \"$\"\n, \"KYD\": \"$\"\n, \"CLP\": \"$\"\n, \"CNY\": \"¥\"\n, \"COP\": \"$\"\n, \"CRC\": \"₡\"\n, \"HRK\": \"kn\"\n, \"CUP\": \"₱\"\n, \"CZK\": \"Kč\"\n, \"DKK\": \"kr\"\n, \"DOP\": \"RD$\"\n, \"XCD\": \"$\"\n, \"EGP\": \"£\"\n, \"SVC\": \"$\"\n, \"EEK\": \"kr\"\n, \"EUR\": \"€\"\n, \"FKP\": \"£\"\n, \"FJD\": \"$\"\n, \"GHC\": \"¢\"\n, \"GIP\": \"£\"\n, \"GTQ\": \"Q\"\n, \"GGP\": \"£\"\n, \"GYD\": \"$\"\n, \"HNL\": \"L\"\n, \"HKD\": \"$\"\n, \"HUF\": \"Ft\"\n, \"ISK\": \"kr\"\n, \"INR\": \"₹\"\n, \"IDR\": \"Rp\"\n, \"IRR\": \"﷼\"\n, \"IMP\": \"£\"\n, \"ILS\": \"₪\"\n, \"JMD\": \"J$\"\n, \"JPY\": \"¥\"\n, \"JEP\": \"£\"\n, \"KES\": \"KSh\"\n, \"KZT\": \"лв\"\n, \"KPW\": \"₩\"\n, \"KRW\": \"₩\"\n, \"KGS\": \"лв\"\n, \"LAK\": \"₭\"\n, \"LVL\": \"Ls\"\n, \"LBP\": \"£\"\n, \"LRD\": \"$\"\n, \"LTL\": \"Lt\"\n, \"MKD\": \"ден\"\n, \"MYR\": \"RM\"\n, \"MUR\": \"₨\"\n, \"MXN\": \"$\"\n, \"MNT\": \"₮\"\n, \"MZN\": \"MT\"\n, \"NAD\": \"$\"\n, \"NPR\": \"₨\"\n, \"ANG\": \"ƒ\"\n, \"NZD\": \"$\"\n, \"NIO\": \"C$\"\n, \"NGN\": \"₦\"\n, \"NOK\": \"kr\"\n, \"OMR\": \"﷼\"\n, \"PKR\": \"₨\"\n, \"PAB\": \"B/.\"\n, \"PYG\": \"Gs\"\n, \"PEN\": \"S/.\"\n, \"PHP\": \"₱\"\n, \"PLN\": \"zł\"\n, \"QAR\": \"﷼\"\n, \"RON\": \"lei\"\n, \"RUB\": \"₽\"\n, \"SHP\": \"£\"\n, \"SAR\": \"﷼\"\n, \"RSD\": \"Дин.\"\n, \"SCR\": \"₨\"\n, \"SGD\": \"$\"\n, \"SBD\": \"$\"\n, \"SOS\": \"S\"\n, \"ZAR\": \"R\"\n, \"LKR\": \"₨\"\n, \"SEK\": \"kr\"\n, \"CHF\": \"CHF\"\n, \"SRD\": \"$\"\n, \"SYP\": \"£\"\n, \"TZS\": \"TSh\"\n, \"TWD\": \"NT$\"\n, \"THB\": \"฿\"\n, \"TTD\": \"TT$\"\n, \"TRY\": \"\"\n, \"TRL\": \"₤\"\n, \"TVD\": \"$\"\n, \"UGX\": \"USh\"\n, \"UAH\": \"₴\"\n, \"GBP\": \"£\"\n, \"USD\": \"$\"\n, \"UYU\": \"$U\"\n, \"UZS\": \"лв\"\n, \"VEF\": \"Bs\"\n, \"VND\": \"₫\"\n, \"YER\": \"﷼\"\n, \"ZWD\": \"Z$\"\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","/*! decimal.js-light v2.5.1 https://github.com/MikeMcl/decimal.js-light/LICENCE */\r\n;(function (globalScope) {\r\n 'use strict';\r\n\r\n\r\n /*\r\n * decimal.js-light v2.5.1\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js-light\r\n * Copyright (c) 2020 Michael Mclaughlin \r\n * MIT Expat Licence\r\n */\r\n\r\n\r\n // ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n var MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n Decimal = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed during run-time using `Decimal.config`.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used by default by `toInteger`, `toDecimalPlaces`, `toExponential`,\r\n // `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -MAX_E\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to MAX_E\r\n\r\n // The natural logarithm of 10.\r\n // 115 digits\r\n LN10: '2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286'\r\n },\r\n\r\n\r\n // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n exponentOutOfRange = decimalError + 'Exponent out of range: ',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n ONE,\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n MAX_E = mathfloor(MAX_SAFE_INTEGER / LOG_BASE), // 1286742750677284\r\n\r\n // Decimal.prototype object\r\n P = {};\r\n\r\n\r\n // Decimal prototype methods\r\n\r\n\r\n /*\r\n * absoluteValue abs\r\n * comparedTo cmp\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy idiv\r\n * equals eq\r\n * exponent\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * isInteger isint\r\n * isNegative isneg\r\n * isPositive ispos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * squareRoot sqrt\r\n * times mul\r\n * toDecimalPlaces todp\r\n * toExponential\r\n * toFixed\r\n * toInteger toint\r\n * toNumber\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits tosd\r\n * toString\r\n * valueOf val\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value\r\n *\r\n */\r\n P.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this;\r\n\r\n y = new x.constructor(y);\r\n\r\n // Signs differ?\r\n if (x.s !== y.s) return x.s || -y.s;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ x.s < 0 ? 1 : -1;\r\n\r\n xdL = x.d.length;\r\n ydL = y.d.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (x.d[i] !== y.d[i]) return x.d[i] > y.d[i] ^ x.s < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ x.s < 0 ? 1 : -1;\r\n };\r\n\r\n\r\n /*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\n P.decimalPlaces = P.dp = function () {\r\n var x = this,\r\n w = x.d.length - 1,\r\n dp = (w - x.e) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = x.d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) dp--;\r\n\r\n return dp < 0 ? 0 : dp;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, truncated to `precision` significant digits.\r\n *\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(divide(x, new Ctor(y), 0, 1), Ctor.precision);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\n P.equals = P.eq = function (y) {\r\n return !this.cmp(y);\r\n };\r\n\r\n\r\n /*\r\n * Return the (base 10) exponent value of this Decimal (this.e is the base 10000000 exponent).\r\n *\r\n */\r\n P.exponent = function () {\r\n return getBase10Exponent(this);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\n P.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\n P.greaterThanOrEqualTo = P.gte = function (y) {\r\n return this.cmp(y) >= 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\n P.isInteger = P.isint = function () {\r\n return this.e > this.d.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\n P.isNegative = P.isneg = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\n P.isPositive = P.ispos = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is 0, otherwise return false.\r\n *\r\n */\r\n P.isZero = function () {\r\n return this.s === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n };\r\n\r\n\r\n /*\r\n * Return the logarithm of the value of this Decimal to the specified base, truncated to\r\n * `precision` significant digits.\r\n *\r\n * If no base is specified, return log[10](x).\r\n *\r\n * log[base](x) = ln(x) / ln(base)\r\n *\r\n * The maximum error of the result is 1 ulp (unit in the last place).\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\n P.logarithm = P.log = function (base) {\r\n var r,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n wpr = pr + 5;\r\n\r\n // Default base is 10.\r\n if (base === void 0) {\r\n base = new Ctor(10);\r\n } else {\r\n base = new Ctor(base);\r\n\r\n // log[-b](x) = NaN\r\n // log[0](x) = NaN\r\n // log[1](x) = NaN\r\n if (base.s < 1 || base.eq(ONE)) throw Error(decimalError + 'NaN');\r\n }\r\n\r\n // log[b](-x) = NaN\r\n // log[b](0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // log[b](1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n external = false;\r\n r = divide(ln(x, wpr), ln(base, wpr), wpr);\r\n external = true;\r\n\r\n return round(r, pr);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.minus = P.sub = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? subtract(x, y) : add(x, (y.s = -y.s, y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n y = new Ctor(y);\r\n\r\n // x % 0 = NaN\r\n if (!y.s) throw Error(decimalError + 'NaN');\r\n\r\n // Return x if x is 0.\r\n if (!x.s) return round(new Ctor(x), pr);\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n q = divide(x, y, 0, 1).times(y);\r\n external = true;\r\n\r\n return x.minus(q);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\n P.naturalExponential = P.exp = function () {\r\n return exp(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * truncated to `precision` significant digits.\r\n *\r\n */\r\n P.naturalLogarithm = P.ln = function () {\r\n return ln(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\n P.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s || 0;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.plus = P.add = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? add(x, y) : subtract(x, (y.s = -y.s, y));\r\n };\r\n\r\n\r\n /*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\n P.precision = P.sd = function (z) {\r\n var e, sd, w,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n e = getBase10Exponent(x) + 1;\r\n w = x.d.length - 1;\r\n sd = w * LOG_BASE + 1;\r\n w = x.d[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) sd--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = x.d[0]; w >= 10; w /= 10) sd++;\r\n }\r\n\r\n return z && e > sd ? e : sd;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var e, n, pr, r, s, t, wpr,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n // Negative or zero?\r\n if (x.s < 1) {\r\n if (!x.s) return new Ctor(0);\r\n\r\n // sqrt(-x) = NaN\r\n throw Error(decimalError + 'NaN');\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(x.d);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n pr = Ctor.precision;\r\n s = wpr = pr + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, wpr + 2)).times(0.5);\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === (n = digitsToString(r.d)).slice(0, wpr)) {\r\n n = n.slice(wpr - 3, wpr + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (s == wpr && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n round(t, pr + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n } else if (n != '9999') {\r\n break;\r\n }\r\n\r\n wpr += 4;\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return round(r, pr);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal times `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n // Return 0 if either is 0.\r\n if (!x.s || !y.s) return new Ctor(0);\r\n\r\n y.s *= x.s;\r\n e = x.e + y.e;\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = e;\r\n\r\n return external ? round(y, Ctor.precision) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toDecimalPlaces = P.todp = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return round(x, dp + getBase10Exponent(x) + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = toString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), dp + 1, rm);\r\n str = toString(x, true, dp + 1);\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\n P.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) return toString(x);\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = round(new Ctor(x), dp + getBase10Exponent(x) + 1, rm);\r\n str = toString(y.abs(), false, dp + getBase10Exponent(y) + 1);\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isneg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\n P.toInteger = P.toint = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(new Ctor(x), getBase10Exponent(x) + 1, Ctor.rounding);\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this Decimal converted to a number primitive.\r\n *\r\n */\r\n P.toNumber = function () {\r\n return +this;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`,\r\n * truncated to `precision` significant digits.\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * The maximum error is 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\n P.toPower = P.pow = function (y) {\r\n var e, k, pr, r, sign, yIsInt,\r\n x = this,\r\n Ctor = x.constructor,\r\n guard = 12,\r\n yn = +(y = new Ctor(y));\r\n\r\n // pow(x, 0) = 1\r\n if (!y.s) return new Ctor(ONE);\r\n\r\n x = new Ctor(x);\r\n\r\n // pow(0, y > 0) = 0\r\n // pow(0, y < 0) = Infinity\r\n if (!x.s) {\r\n if (y.s < 1) throw Error(decimalError + 'Infinity');\r\n return x;\r\n }\r\n\r\n // pow(1, y) = 1\r\n if (x.eq(ONE)) return x;\r\n\r\n pr = Ctor.precision;\r\n\r\n // pow(x, 1) = x\r\n if (y.eq(ONE)) return round(x, pr);\r\n\r\n e = y.e;\r\n k = y.d.length - 1;\r\n yIsInt = e >= k;\r\n sign = x.s;\r\n\r\n if (!yIsInt) {\r\n\r\n // pow(x < 0, y non-integer) = NaN\r\n if (sign < 0) throw Error(decimalError + 'NaN');\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n } else if ((k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = new Ctor(ONE);\r\n\r\n // Max k of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n e = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (k % 2) {\r\n r = r.times(x);\r\n truncate(r.d, e);\r\n }\r\n\r\n k = mathfloor(k / 2);\r\n if (k === 0) break;\r\n\r\n x = x.times(x);\r\n truncate(x.d, e);\r\n }\r\n\r\n external = true;\r\n\r\n return y.s < 0 ? new Ctor(ONE).div(r) : round(r, pr);\r\n }\r\n\r\n // Result is negative if x is negative and the last digit of integer y is odd.\r\n sign = sign < 0 && y.d[Math.max(e, k)] & 1 ? -1 : 1;\r\n\r\n x.s = 1;\r\n external = false;\r\n r = y.times(ln(x, pr + guard));\r\n external = true;\r\n r = exp(r);\r\n r.s = sign;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n var e, str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n e = getBase10Exponent(x);\r\n str = toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), sd, rm);\r\n e = getBase10Exponent(x);\r\n str = toString(x, sd <= e || e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toSignificantDigits = P.tosd = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return round(new Ctor(x), sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\n P.toString = P.valueOf = P.val = P.toJSON = function () {\r\n var x = this,\r\n e = getBase10Exponent(x),\r\n Ctor = x.constructor;\r\n\r\n return toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n };\r\n\r\n\r\n // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n /*\r\n * add P.minus, P.plus\r\n * checkInt32 P.todp, P.toExponential, P.toFixed, P.toPrecision, P.tosd\r\n * digitsToString P.log, P.sqrt, P.pow, toString, exp, ln\r\n * divide P.div, P.idiv, P.log, P.mod, P.sqrt, exp, ln\r\n * exp P.exp, P.pow\r\n * getBase10Exponent P.exponent, P.sd, P.toint, P.sqrt, P.todp, P.toFixed, P.toPrecision,\r\n * P.toString, divide, round, toString, exp, ln\r\n * getLn10 P.log, ln\r\n * getZeroString digitsToString, toString\r\n * ln P.log, P.ln, P.pow, exp\r\n * parseDecimal Decimal\r\n * round P.abs, P.idiv, P.log, P.minus, P.mod, P.neg, P.plus, P.toint, P.sqrt,\r\n * P.times, P.todp, P.toExponential, P.toFixed, P.pow, P.toPrecision, P.tosd,\r\n * divide, getLn10, exp, ln\r\n * subtract P.minus, P.plus\r\n * toString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf\r\n * truncate P.pow\r\n *\r\n * Throws: P.log, P.mod, P.sd, P.sqrt, P.pow, checkInt32, divide, round,\r\n * getLn10, exp, ln, parseDecimal, Decimal, config\r\n */\r\n\r\n\r\n function add(x, y) {\r\n var carry, d, e, i, k, len, xd, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // If either is zero...\r\n if (!x.s || !y.s) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!y.s) y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n k = x.e;\r\n e = y.e;\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n\r\n function checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n }\r\n\r\n\r\n function digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n }\r\n\r\n\r\n var divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % BASE | 0;\r\n carry = temp / BASE | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * BASE + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, dp) {\r\n var cmp, e, i, k, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either 0?\r\n if (!x.s) return new Ctor(x);\r\n if (!y.s) throw Error(decimalError + 'Division by zero');\r\n\r\n e = x.e - y.e;\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n for (i = 0; yd[i] == (xd[i] || 0); ) ++i;\r\n if (yd[i] > (xd[i] || 0)) --e;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n } else if (dp) {\r\n sd = pr + (getBase10Exponent(x) - getBase10Exponent(y)) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) return new Ctor(0);\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / LOG_BASE + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * BASE + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= BASE/2\r\n k = BASE / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k);\r\n xd = multiplyInteger(xd, k);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= BASE / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * BASE + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= BASE) k = BASE - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n\r\n q.e = e;\r\n\r\n return round(q, dp ? pr + getBase10Exponent(q) + 1 : pr);\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of `x` truncated to `sd`\r\n * significant digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n */\r\n function exp(x, sd) {\r\n var denominator, guard, pow, sum, t, wpr,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n if (getBase10Exponent(x) > 16) throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n\r\n // exp(0) = 1\r\n if (!x.s) return new Ctor(ONE);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n while (x.abs().gte(0.1)) {\r\n x = x.times(t); // x = x / 2^5\r\n k += 5;\r\n }\r\n\r\n // Estimate the precision increase necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(ONE);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = round(pow.times(x), wpr);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n while (k--) sum = round(sum.times(sum), wpr);\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n }\r\n }\r\n\r\n\r\n // Calculate the base 10 exponent from the base 1e7 exponent.\r\n function getBase10Exponent(x) {\r\n var e = x.e * LOG_BASE,\r\n w = x.d[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for (; w >= 10; w /= 10) e++;\r\n return e;\r\n }\r\n\r\n\r\n function getLn10(Ctor, sd, pr) {\r\n\r\n if (sd > Ctor.LN10.sd()) {\r\n\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(decimalError + 'LN10 precision limit exceeded');\r\n }\r\n\r\n return round(new Ctor(Ctor.LN10), sd);\r\n }\r\n\r\n\r\n function getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of `x` truncated to `sd` significant\r\n * digits.\r\n *\r\n * ln(n) is non-terminating (n != 1)\r\n *\r\n */\r\n function ln(y, sd) {\r\n var c, c0, denominator, e, numerator, sum, t, wpr, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // ln(-x) = NaN\r\n // ln(0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // ln(1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n if (x.eq(10)) {\r\n if (sd == null) external = true;\r\n return getLn10(Ctor, wpr);\r\n }\r\n\r\n wpr += guard;\r\n Ctor.precision = wpr;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n e = getBase10Exponent(x);\r\n\r\n if (Math.abs(e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = ln(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(x, pr)) : x;\r\n }\r\n\r\n // x is reduced to a value near 1.\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(ONE), x.plus(ONE), wpr);\r\n x2 = round(x.times(x), wpr);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = round(numerator.times(x2), wpr);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\n function parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48;) ++i;\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48;) --len;\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n e = e - i - 1;\r\n x.e = mathfloor(e / LOG_BASE);\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) throw Error(exponentOutOfRange + e);\r\n } else {\r\n\r\n // Zero.\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Round `x` to `sd` significant digits, using rounding mode `rm` if present (truncate otherwise).\r\n */\r\n function round(x, sd, rm) {\r\n var i, j, k, n, rd, doRound, w, xdi,\r\n xd = x.d;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd which contains the rounding digit, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // n: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (n = 1, k = xd[0]; k >= 10; k /= 10) n++;\r\n i = sd - n;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) return x;\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (n = 1; k >= 10; k /= 10) n++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - n.\r\n j = i - LOG_BASE + n;\r\n }\r\n\r\n if (rm !== void 0) {\r\n k = mathpow(10, n - j - 1);\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / k % 10 | 0;\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n doRound = sd < 0 || xd[xdi + 1] !== void 0 || w % k;\r\n\r\n // The expression `w % mathpow(10, n - j - 1)` returns all the digits of w to the right of the\r\n // digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression will give\r\n // 714.\r\n\r\n doRound = rm < 4\r\n ? (rd || doRound) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || doRound || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, n - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n }\r\n\r\n if (sd < 1 || !xd[0]) {\r\n if (doRound) {\r\n k = getBase10Exponent(x);\r\n xd.length = 1;\r\n\r\n // Convert sd to decimal places.\r\n sd = sd - k - 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = mathfloor(-sd / LOG_BASE) || 0;\r\n } else {\r\n xd.length = 1;\r\n\r\n // Zero.\r\n xd[0] = x.e = x.s = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, n - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (doRound) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n if ((xd[0] += k) == BASE) {\r\n xd[0] = 1;\r\n ++x.e;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) {\r\n throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function subtract(x, y) {\r\n var d, e, i, j, k, len, xd, xe, xLTy, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // Return y negated if x is zero.\r\n // Return x if y is zero and x is non-zero.\r\n if (!x.s || !y.s) {\r\n if (y.s) y.s = -y.s;\r\n else y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are non-zero numbers with the same sign.\r\n\r\n e = y.e;\r\n xe = x.e;\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of zeros\r\n // needing to be prepended, but this can be avoided while still ensuring correct rounding by\r\n // limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to xd if shorter.\r\n // Don't add zeros to yd if shorter as subtraction only needs to start at yd length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(0);\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n //return external && xd.length >= pr / LOG_BASE ? round(y, pr) : y;\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n\r\n function toString(x, isExp, sd) {\r\n var k,\r\n e = getBase10Exponent(x),\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (e < 0 ? 'e' : 'e+') + e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Does not strip trailing zeros.\r\n function truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n }\r\n\r\n\r\n // Decimal methods\r\n\r\n\r\n /*\r\n * clone\r\n * config/set\r\n */\r\n\r\n\r\n /*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\n function clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * value {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(value) {\r\n var x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(value);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (value instanceof Decimal) {\r\n x.s = value.s;\r\n x.e = value.e;\r\n x.d = (value = value.d) ? value.slice() : value;\r\n return;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n\r\n // Reject Infinity/NaN.\r\n if (value * 0 !== 0) {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n if (value > 0) {\r\n x.s = 1;\r\n } else if (value < 0) {\r\n value = -value;\r\n x.s = -1;\r\n } else {\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (value === ~~value && value < 1e7) {\r\n x.e = 0;\r\n x.d = [value];\r\n return;\r\n }\r\n\r\n return parseDecimal(x, value.toString());\r\n } else if (typeof value !== 'string') {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n // Minus sign?\r\n if (value.charCodeAt(0) === 45) {\r\n value = value.slice(1);\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n if (isDecimal.test(value)) parseDecimal(x, value);\r\n else throw Error(invalidArgument + value);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n\r\n Decimal.clone = clone;\r\n Decimal.config = Decimal.set = config;\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'LN10'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n }\r\n\r\n\r\n /*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\n function config(obj) {\r\n if (!obj || typeof obj !== 'object') {\r\n throw Error(decimalError + 'Object expected');\r\n }\r\n var i, p, v,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -1 / 0, 0,\r\n 'toExpPos', 0, 1 / 0\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if ((v = obj[p = ps[i]]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if ((v = obj[p = 'LN10']) !== void 0) {\r\n if (v == Math.LN10) this[p] = new this(v);\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n\r\n // Create and configure initial Decimal constructor.\r\n Decimal = clone(Decimal);\r\n\r\n Decimal['default'] = Decimal.Decimal = Decimal;\r\n\r\n // Internal constant.\r\n ONE = new Decimal(1);\r\n\r\n\r\n // Export.\r\n\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () {\r\n return Decimal;\r\n });\r\n\r\n // Node and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = Decimal;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalScope) {\r\n globalScope = typeof self != 'undefined' && self && self.self == self\r\n ? self : Function('return this')();\r\n }\r\n\r\n globalScope.Decimal = Decimal;\r\n }\r\n})(this);\r\n","var objectKeys = require('object-keys');\nvar isArguments = require('is-arguments');\nvar is = require('object-is');\nvar isRegex = require('is-regex');\nvar flags = require('regexp.prototype.flags');\nvar isDate = require('is-date-object');\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected;\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts);\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n /* eslint max-statements: [2, 50] */\n var i, key;\n if (typeof a !== typeof b) { return false; }\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if (aIsRegex || bIsRegex) {\n return a.source === b.source && flags(a) === flags(b);\n }\n\n if (isDate(a) && isDate(b)) {\n return getTime.call(a) === getTime.call(b);\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n if (typeof a !== typeof b) { return false; }\n\n try {\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n } catch (e) { // happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; }\n }\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) { return false; }\n }\n\n return true;\n}\n\nmodule.exports = deepEqual;\n","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = scrollbarSize;\n\nvar _inDOM = _interopRequireDefault(require(\"./inDOM\"));\n\nvar size;\n\nfunction scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (_inDOM.default) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar detector = module.exports = {};\n\ndetector.isIE = function(version) {\n function isAnyIeVersion() {\n var agent = navigator.userAgent.toLowerCase();\n return agent.indexOf(\"msie\") !== -1 || agent.indexOf(\"trident\") !== -1 || agent.indexOf(\" edge/\") !== -1;\n }\n\n if(!isAnyIeVersion()) {\n return false;\n }\n\n if(!version) {\n return true;\n }\n\n //Shamelessly stolen from https://gist.github.com/padolsey/527683\n var ieVersion = (function(){\n var undef,\n v = 3,\n div = document.createElement(\"div\"),\n all = div.getElementsByTagName(\"i\");\n\n do {\n div.innerHTML = \"\";\n }\n while (all[0]);\n\n return v > 4 ? v : undef;\n }());\n\n return version === ieVersion;\n};\n\ndetector.isLegacyOpera = function() {\n return !!window.opera;\n};\n","\"use strict\";\n\nvar utils = module.exports = {};\n\n/**\n * Loops through the collection and calls the callback for each element. if the callback returns truthy, the loop is broken and returns the same value.\n * @public\n * @param {*} collection The collection to loop through. Needs to have a length property set and have indices set from 0 to length - 1.\n * @param {function} callback The callback to be called for each element. The element will be given as a parameter to the callback. If this callback returns truthy, the loop is broken and the same value is returned.\n * @returns {*} The value that a callback has returned (if truthy). Otherwise nothing.\n */\nutils.forEach = function(collection, callback) {\n for(var i = 0; i < collection.length; i++) {\n var result = callback(collection[i]);\n if(result) {\n return result;\n }\n }\n};\n","/**\n * Resize detection strategy that injects objects to elements in order to detect resize events.\n * Heavily inspired by: http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/\n */\n\n\"use strict\";\n\nvar browserDetector = require(\"../browser-detector\");\n\nmodule.exports = function(options) {\n options = options || {};\n var reporter = options.reporter;\n var batchProcessor = options.batchProcessor;\n var getState = options.stateHandler.getState;\n\n if(!reporter) {\n throw new Error(\"Missing required dependency: reporter.\");\n }\n\n /**\n * Adds a resize event listener to the element.\n * @public\n * @param {element} element The element that should have the listener added.\n * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.\n */\n function addListener(element, listener) {\n function listenerProxy() {\n listener(element);\n }\n\n if(browserDetector.isIE(8)) {\n //IE 8 does not support object, but supports the resize event directly on elements.\n getState(element).object = {\n proxy: listenerProxy\n };\n element.attachEvent(\"onresize\", listenerProxy);\n } else {\n var object = getObject(element);\n\n if(!object) {\n throw new Error(\"Element is not detectable by this strategy.\");\n }\n\n object.contentDocument.defaultView.addEventListener(\"resize\", listenerProxy);\n }\n }\n\n function buildCssTextString(rules) {\n var seperator = options.important ? \" !important; \" : \"; \";\n\n return (rules.join(seperator) + seperator).trim();\n }\n\n /**\n * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.\n * @private\n * @param {object} options Optional options object.\n * @param {element} element The element to make detectable\n * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.\n */\n function makeDetectable(options, element, callback) {\n if (!callback) {\n callback = element;\n element = options;\n options = null;\n }\n\n options = options || {};\n var debug = options.debug;\n\n function injectObject(element, callback) {\n var OBJECT_STYLE = buildCssTextString([\"display: block\", \"position: absolute\", \"top: 0\", \"left: 0\", \"width: 100%\", \"height: 100%\", \"border: none\", \"padding: 0\", \"margin: 0\", \"opacity: 0\", \"z-index: -1000\", \"pointer-events: none\"]);\n\n //The target element needs to be positioned (everything except static) so the absolute positioned object will be positioned relative to the target element.\n\n // Position altering may be performed directly or on object load, depending on if style resolution is possible directly or not.\n var positionCheckPerformed = false;\n\n // The element may not yet be attached to the DOM, and therefore the style object may be empty in some browsers.\n // Since the style object is a reference, it will be updated as soon as the element is attached to the DOM.\n var style = window.getComputedStyle(element);\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n getState(element).startSize = {\n width: width,\n height: height\n };\n\n function mutateDom() {\n function alterPositionStyles() {\n if(style.position === \"static\") {\n element.style.setProperty(\"position\", \"relative\", options.important ? \"important\" : \"\");\n\n var removeRelativeStyles = function(reporter, element, style, property) {\n function getNumericalValue(value) {\n return value.replace(/[^-\\d\\.]/g, \"\");\n }\n\n var value = style[property];\n\n if(value !== \"auto\" && getNumericalValue(value) !== \"0\") {\n reporter.warn(\"An element that is positioned static has style.\" + property + \"=\" + value + \" which is ignored due to the static positioning. The element will need to be positioned relative, so the style.\" + property + \" will be set to 0. Element: \", element);\n element.style.setProperty(property, \"0\", options.important ? \"important\" : \"\");\n }\n };\n\n //Check so that there are no accidental styles that will make the element styled differently now that is is relative.\n //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).\n removeRelativeStyles(reporter, element, style, \"top\");\n removeRelativeStyles(reporter, element, style, \"right\");\n removeRelativeStyles(reporter, element, style, \"bottom\");\n removeRelativeStyles(reporter, element, style, \"left\");\n }\n }\n\n function onObjectLoad() {\n // The object has been loaded, which means that the element now is guaranteed to be attached to the DOM.\n if (!positionCheckPerformed) {\n alterPositionStyles();\n }\n\n /*jshint validthis: true */\n\n function getDocument(element, callback) {\n //Opera 12 seem to call the object.onload before the actual document has been created.\n //So if it is not present, poll it with an timeout until it is present.\n //TODO: Could maybe be handled better with object.onreadystatechange or similar.\n if(!element.contentDocument) {\n var state = getState(element);\n if (state.checkForObjectDocumentTimeoutId) {\n window.clearTimeout(state.checkForObjectDocumentTimeoutId);\n }\n state.checkForObjectDocumentTimeoutId = setTimeout(function checkForObjectDocument() {\n state.checkForObjectDocumentTimeoutId = 0;\n getDocument(element, callback);\n }, 100);\n\n return;\n }\n\n callback(element.contentDocument);\n }\n\n //Mutating the object element here seems to fire another load event.\n //Mutating the inner document of the object element is fine though.\n var objectElement = this;\n\n //Create the style element to be added to the object.\n getDocument(objectElement, function onObjectDocumentReady(objectDocument) {\n //Notify that the element is ready to be listened to.\n callback(element);\n });\n }\n\n // The element may be detached from the DOM, and some browsers does not support style resolving of detached elements.\n // The alterPositionStyles needs to be delayed until we know the element has been attached to the DOM (which we are sure of when the onObjectLoad has been fired), if style resolution is not possible.\n if (style.position !== \"\") {\n alterPositionStyles(style);\n positionCheckPerformed = true;\n }\n\n //Add an object element as a child to the target element that will be listened to for resize events.\n var object = document.createElement(\"object\");\n object.style.cssText = OBJECT_STYLE;\n object.tabIndex = -1;\n object.type = \"text/html\";\n object.setAttribute(\"aria-hidden\", \"true\");\n object.onload = onObjectLoad;\n\n //Safari: This must occur before adding the object to the DOM.\n //IE: Does not like that this happens before, even if it is also added after.\n if(!browserDetector.isIE()) {\n object.data = \"about:blank\";\n }\n\n if (!getState(element)) {\n // The element has been uninstalled before the actual loading happened.\n return;\n }\n\n element.appendChild(object);\n getState(element).object = object;\n\n //IE: This must occur after adding the object to the DOM.\n if(browserDetector.isIE()) {\n object.data = \"about:blank\";\n }\n }\n\n if(batchProcessor) {\n batchProcessor.add(mutateDom);\n } else {\n mutateDom();\n }\n }\n\n if(browserDetector.isIE(8)) {\n //IE 8 does not support objects properly. Luckily they do support the resize event.\n //So do not inject the object and notify that the element is already ready to be listened to.\n //The event handler for the resize event is attached in the utils.addListener instead.\n callback(element);\n } else {\n injectObject(element, callback);\n }\n }\n\n /**\n * Returns the child object of the target element.\n * @private\n * @param {element} element The target element.\n * @returns The object element of the target.\n */\n function getObject(element) {\n return getState(element).object;\n }\n\n function uninstall(element) {\n if (!getState(element)) {\n return;\n }\n\n var object = getObject(element);\n\n if (!object) {\n return;\n }\n\n if (browserDetector.isIE(8)) {\n element.detachEvent(\"onresize\", object.proxy);\n } else {\n element.removeChild(object);\n }\n\n if (getState(element).checkForObjectDocumentTimeoutId) {\n window.clearTimeout(getState(element).checkForObjectDocumentTimeoutId);\n }\n\n delete getState(element).object;\n }\n\n return {\n makeDetectable: makeDetectable,\n addListener: addListener,\n uninstall: uninstall\n };\n};\n","/**\n * Resize detection strategy that injects divs to elements in order to detect resize events on scroll events.\n * Heavily inspired by: https://github.com/marcj/css-element-queries/blob/master/src/ResizeSensor.js\n */\n\n\"use strict\";\n\nvar forEach = require(\"../collection-utils\").forEach;\n\nmodule.exports = function(options) {\n options = options || {};\n var reporter = options.reporter;\n var batchProcessor = options.batchProcessor;\n var getState = options.stateHandler.getState;\n var hasState = options.stateHandler.hasState;\n var idHandler = options.idHandler;\n\n if (!batchProcessor) {\n throw new Error(\"Missing required dependency: batchProcessor\");\n }\n\n if (!reporter) {\n throw new Error(\"Missing required dependency: reporter.\");\n }\n\n //TODO: Could this perhaps be done at installation time?\n var scrollbarSizes = getScrollbarSizes();\n\n var styleId = \"erd_scroll_detection_scrollbar_style\";\n var detectionContainerClass = \"erd_scroll_detection_container\";\n\n function initDocument(targetDocument) {\n // Inject the scrollbar styling that prevents them from appearing sometimes in Chrome.\n // The injected container needs to have a class, so that it may be styled with CSS (pseudo elements).\n injectScrollStyle(targetDocument, styleId, detectionContainerClass);\n }\n\n initDocument(window.document);\n\n function buildCssTextString(rules) {\n var seperator = options.important ? \" !important; \" : \"; \";\n\n return (rules.join(seperator) + seperator).trim();\n }\n\n function getScrollbarSizes() {\n var width = 500;\n var height = 500;\n\n var child = document.createElement(\"div\");\n child.style.cssText = buildCssTextString([\"position: absolute\", \"width: \" + width*2 + \"px\", \"height: \" + height*2 + \"px\", \"visibility: hidden\", \"margin: 0\", \"padding: 0\"]);\n\n var container = document.createElement(\"div\");\n container.style.cssText = buildCssTextString([\"position: absolute\", \"width: \" + width + \"px\", \"height: \" + height + \"px\", \"overflow: scroll\", \"visibility: none\", \"top: \" + -width*3 + \"px\", \"left: \" + -height*3 + \"px\", \"visibility: hidden\", \"margin: 0\", \"padding: 0\"]);\n\n container.appendChild(child);\n\n document.body.insertBefore(container, document.body.firstChild);\n\n var widthSize = width - container.clientWidth;\n var heightSize = height - container.clientHeight;\n\n document.body.removeChild(container);\n\n return {\n width: widthSize,\n height: heightSize\n };\n }\n\n function injectScrollStyle(targetDocument, styleId, containerClass) {\n function injectStyle(style, method) {\n method = method || function (element) {\n targetDocument.head.appendChild(element);\n };\n\n var styleElement = targetDocument.createElement(\"style\");\n styleElement.innerHTML = style;\n styleElement.id = styleId;\n method(styleElement);\n return styleElement;\n }\n\n if (!targetDocument.getElementById(styleId)) {\n var containerAnimationClass = containerClass + \"_animation\";\n var containerAnimationActiveClass = containerClass + \"_animation_active\";\n var style = \"/* Created by the element-resize-detector library. */\\n\";\n style += \".\" + containerClass + \" > div::-webkit-scrollbar { \" + buildCssTextString([\"display: none\"]) + \" }\\n\\n\";\n style += \".\" + containerAnimationActiveClass + \" { \" + buildCssTextString([\"-webkit-animation-duration: 0.1s\", \"animation-duration: 0.1s\", \"-webkit-animation-name: \" + containerAnimationClass, \"animation-name: \" + containerAnimationClass]) + \" }\\n\";\n style += \"@-webkit-keyframes \" + containerAnimationClass + \" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\\n\";\n style += \"@keyframes \" + containerAnimationClass + \" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\";\n injectStyle(style);\n }\n }\n\n function addAnimationClass(element) {\n element.className += \" \" + detectionContainerClass + \"_animation_active\";\n }\n\n function addEvent(el, name, cb) {\n if (el.addEventListener) {\n el.addEventListener(name, cb);\n } else if(el.attachEvent) {\n el.attachEvent(\"on\" + name, cb);\n } else {\n return reporter.error(\"[scroll] Don't know how to add event listeners.\");\n }\n }\n\n function removeEvent(el, name, cb) {\n if (el.removeEventListener) {\n el.removeEventListener(name, cb);\n } else if(el.detachEvent) {\n el.detachEvent(\"on\" + name, cb);\n } else {\n return reporter.error(\"[scroll] Don't know how to remove event listeners.\");\n }\n }\n\n function getExpandElement(element) {\n return getState(element).container.childNodes[0].childNodes[0].childNodes[0];\n }\n\n function getShrinkElement(element) {\n return getState(element).container.childNodes[0].childNodes[0].childNodes[1];\n }\n\n /**\n * Adds a resize event listener to the element.\n * @public\n * @param {element} element The element that should have the listener added.\n * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.\n */\n function addListener(element, listener) {\n var listeners = getState(element).listeners;\n\n if (!listeners.push) {\n throw new Error(\"Cannot add listener to an element that is not detectable.\");\n }\n\n getState(element).listeners.push(listener);\n }\n\n /**\n * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.\n * @private\n * @param {object} options Optional options object.\n * @param {element} element The element to make detectable\n * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.\n */\n function makeDetectable(options, element, callback) {\n if (!callback) {\n callback = element;\n element = options;\n options = null;\n }\n\n options = options || {};\n\n function debug() {\n if (options.debug) {\n var args = Array.prototype.slice.call(arguments);\n args.unshift(idHandler.get(element), \"Scroll: \");\n if (reporter.log.apply) {\n reporter.log.apply(null, args);\n } else {\n for (var i = 0; i < args.length; i++) {\n reporter.log(args[i]);\n }\n }\n }\n }\n\n function isDetached(element) {\n function isInDocument(element) {\n var isInShadowRoot = element.getRootNode && element.getRootNode().contains(element);\n return element === element.ownerDocument.body || element.ownerDocument.body.contains(element) || isInShadowRoot;\n }\n\n if (!isInDocument(element)) {\n return true;\n }\n\n // FireFox returns null style in hidden iframes. See https://github.com/wnr/element-resize-detector/issues/68 and https://bugzilla.mozilla.org/show_bug.cgi?id=795520\n if (window.getComputedStyle(element) === null) {\n return true;\n }\n\n return false;\n }\n\n function isUnrendered(element) {\n // Check the absolute positioned container since the top level container is display: inline.\n var container = getState(element).container.childNodes[0];\n var style = window.getComputedStyle(container);\n return !style.width || style.width.indexOf(\"px\") === -1; //Can only compute pixel value when rendered.\n }\n\n function getStyle() {\n // Some browsers only force layouts when actually reading the style properties of the style object, so make sure that they are all read here,\n // so that the user of the function can be sure that it will perform the layout here, instead of later (important for batching).\n var elementStyle = window.getComputedStyle(element);\n var style = {};\n style.position = elementStyle.position;\n style.width = element.offsetWidth;\n style.height = element.offsetHeight;\n style.top = elementStyle.top;\n style.right = elementStyle.right;\n style.bottom = elementStyle.bottom;\n style.left = elementStyle.left;\n style.widthCSS = elementStyle.width;\n style.heightCSS = elementStyle.height;\n return style;\n }\n\n function storeStartSize() {\n var style = getStyle();\n getState(element).startSize = {\n width: style.width,\n height: style.height\n };\n debug(\"Element start size\", getState(element).startSize);\n }\n\n function initListeners() {\n getState(element).listeners = [];\n }\n\n function storeStyle() {\n debug(\"storeStyle invoked.\");\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n var style = getStyle();\n getState(element).style = style;\n }\n\n function storeCurrentSize(element, width, height) {\n getState(element).lastWidth = width;\n getState(element).lastHeight = height;\n }\n\n function getExpandChildElement(element) {\n return getExpandElement(element).childNodes[0];\n }\n\n function getWidthOffset() {\n return 2 * scrollbarSizes.width + 1;\n }\n\n function getHeightOffset() {\n return 2 * scrollbarSizes.height + 1;\n }\n\n function getExpandWidth(width) {\n return width + 10 + getWidthOffset();\n }\n\n function getExpandHeight(height) {\n return height + 10 + getHeightOffset();\n }\n\n function getShrinkWidth(width) {\n return width * 2 + getWidthOffset();\n }\n\n function getShrinkHeight(height) {\n return height * 2 + getHeightOffset();\n }\n\n function positionScrollbars(element, width, height) {\n var expand = getExpandElement(element);\n var shrink = getShrinkElement(element);\n var expandWidth = getExpandWidth(width);\n var expandHeight = getExpandHeight(height);\n var shrinkWidth = getShrinkWidth(width);\n var shrinkHeight = getShrinkHeight(height);\n expand.scrollLeft = expandWidth;\n expand.scrollTop = expandHeight;\n shrink.scrollLeft = shrinkWidth;\n shrink.scrollTop = shrinkHeight;\n }\n\n function injectContainerElement() {\n var container = getState(element).container;\n\n if (!container) {\n container = document.createElement(\"div\");\n container.className = detectionContainerClass;\n container.style.cssText = buildCssTextString([\"visibility: hidden\", \"display: inline\", \"width: 0px\", \"height: 0px\", \"z-index: -1\", \"overflow: hidden\", \"margin: 0\", \"padding: 0\"]);\n getState(element).container = container;\n addAnimationClass(container);\n element.appendChild(container);\n\n var onAnimationStart = function () {\n getState(element).onRendered && getState(element).onRendered();\n };\n\n addEvent(container, \"animationstart\", onAnimationStart);\n\n // Store the event handler here so that they may be removed when uninstall is called.\n // See uninstall function for an explanation why it is needed.\n getState(element).onAnimationStart = onAnimationStart;\n }\n\n return container;\n }\n\n function injectScrollElements() {\n function alterPositionStyles() {\n var style = getState(element).style;\n\n if(style.position === \"static\") {\n element.style.setProperty(\"position\", \"relative\",options.important ? \"important\" : \"\");\n\n var removeRelativeStyles = function(reporter, element, style, property) {\n function getNumericalValue(value) {\n return value.replace(/[^-\\d\\.]/g, \"\");\n }\n\n var value = style[property];\n\n if(value !== \"auto\" && getNumericalValue(value) !== \"0\") {\n reporter.warn(\"An element that is positioned static has style.\" + property + \"=\" + value + \" which is ignored due to the static positioning. The element will need to be positioned relative, so the style.\" + property + \" will be set to 0. Element: \", element);\n element.style[property] = 0;\n }\n };\n\n //Check so that there are no accidental styles that will make the element styled differently now that is is relative.\n //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).\n removeRelativeStyles(reporter, element, style, \"top\");\n removeRelativeStyles(reporter, element, style, \"right\");\n removeRelativeStyles(reporter, element, style, \"bottom\");\n removeRelativeStyles(reporter, element, style, \"left\");\n }\n }\n\n function getLeftTopBottomRightCssText(left, top, bottom, right) {\n left = (!left ? \"0\" : (left + \"px\"));\n top = (!top ? \"0\" : (top + \"px\"));\n bottom = (!bottom ? \"0\" : (bottom + \"px\"));\n right = (!right ? \"0\" : (right + \"px\"));\n\n return [\"left: \" + left, \"top: \" + top, \"right: \" + right, \"bottom: \" + bottom];\n }\n\n debug(\"Injecting elements\");\n\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n alterPositionStyles();\n\n var rootContainer = getState(element).container;\n\n if (!rootContainer) {\n rootContainer = injectContainerElement();\n }\n\n // Due to this WebKit bug https://bugs.webkit.org/show_bug.cgi?id=80808 (currently fixed in Blink, but still present in WebKit browsers such as Safari),\n // we need to inject two containers, one that is width/height 100% and another that is left/top -1px so that the final container always is 1x1 pixels bigger than\n // the targeted element.\n // When the bug is resolved, \"containerContainer\" may be removed.\n\n // The outer container can occasionally be less wide than the targeted when inside inline elements element in WebKit (see https://bugs.webkit.org/show_bug.cgi?id=152980).\n // This should be no problem since the inner container either way makes sure the injected scroll elements are at least 1x1 px.\n\n var scrollbarWidth = scrollbarSizes.width;\n var scrollbarHeight = scrollbarSizes.height;\n var containerContainerStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: hidden\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\", \"left: 0px\", \"top: 0px\"]);\n var containerStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: hidden\", \"z-index: -1\", \"visibility: hidden\"].concat(getLeftTopBottomRightCssText(-(1 + scrollbarWidth), -(1 + scrollbarHeight), -scrollbarHeight, -scrollbarWidth)));\n var expandStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: scroll\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\"]);\n var shrinkStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: scroll\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\"]);\n var expandChildStyle = buildCssTextString([\"position: absolute\", \"left: 0\", \"top: 0\"]);\n var shrinkChildStyle = buildCssTextString([\"position: absolute\", \"width: 200%\", \"height: 200%\"]);\n\n var containerContainer = document.createElement(\"div\");\n var container = document.createElement(\"div\");\n var expand = document.createElement(\"div\");\n var expandChild = document.createElement(\"div\");\n var shrink = document.createElement(\"div\");\n var shrinkChild = document.createElement(\"div\");\n\n // Some browsers choke on the resize system being rtl, so force it to ltr. https://github.com/wnr/element-resize-detector/issues/56\n // However, dir should not be set on the top level container as it alters the dimensions of the target element in some browsers.\n containerContainer.dir = \"ltr\";\n\n containerContainer.style.cssText = containerContainerStyle;\n containerContainer.className = detectionContainerClass;\n container.className = detectionContainerClass;\n container.style.cssText = containerStyle;\n expand.style.cssText = expandStyle;\n expandChild.style.cssText = expandChildStyle;\n shrink.style.cssText = shrinkStyle;\n shrinkChild.style.cssText = shrinkChildStyle;\n\n expand.appendChild(expandChild);\n shrink.appendChild(shrinkChild);\n container.appendChild(expand);\n container.appendChild(shrink);\n containerContainer.appendChild(container);\n rootContainer.appendChild(containerContainer);\n\n function onExpandScroll() {\n var state = getState(element);\n if (state && state.onExpand) {\n state.onExpand();\n } else {\n debug(\"Aborting expand scroll handler: element has been uninstalled\");\n }\n }\n\n function onShrinkScroll() {\n var state = getState(element);\n if (state && state.onShrink) {\n state.onShrink();\n } else {\n debug(\"Aborting shrink scroll handler: element has been uninstalled\");\n }\n }\n\n addEvent(expand, \"scroll\", onExpandScroll);\n addEvent(shrink, \"scroll\", onShrinkScroll);\n\n // Store the event handlers here so that they may be removed when uninstall is called.\n // See uninstall function for an explanation why it is needed.\n getState(element).onExpandScroll = onExpandScroll;\n getState(element).onShrinkScroll = onShrinkScroll;\n }\n\n function registerListenersAndPositionElements() {\n function updateChildSizes(element, width, height) {\n var expandChild = getExpandChildElement(element);\n var expandWidth = getExpandWidth(width);\n var expandHeight = getExpandHeight(height);\n expandChild.style.setProperty(\"width\", expandWidth + \"px\", options.important ? \"important\" : \"\");\n expandChild.style.setProperty(\"height\", expandHeight + \"px\", options.important ? \"important\" : \"\");\n }\n\n function updateDetectorElements(done) {\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n // Check whether the size has actually changed since last time the algorithm ran. If not, some steps may be skipped.\n var sizeChanged = width !== getState(element).lastWidth || height !== getState(element).lastHeight;\n\n debug(\"Storing current size\", width, height);\n\n // Store the size of the element sync here, so that multiple scroll events may be ignored in the event listeners.\n // Otherwise the if-check in handleScroll is useless.\n storeCurrentSize(element, width, height);\n\n // Since we delay the processing of the batch, there is a risk that uninstall has been called before the batch gets to execute.\n // Since there is no way to cancel the fn executions, we need to add an uninstall guard to all fns of the batch.\n\n batchProcessor.add(0, function performUpdateChildSizes() {\n if (!sizeChanged) {\n return;\n }\n\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n if (!areElementsInjected()) {\n debug(\"Aborting because element container has not been initialized\");\n return;\n }\n\n if (options.debug) {\n var w = element.offsetWidth;\n var h = element.offsetHeight;\n\n if (w !== width || h !== height) {\n reporter.warn(idHandler.get(element), \"Scroll: Size changed before updating detector elements.\");\n }\n }\n\n updateChildSizes(element, width, height);\n });\n\n batchProcessor.add(1, function updateScrollbars() {\n // This function needs to be invoked event though the size is unchanged. The element could have been resized very quickly and then\n // been restored to the original size, which will have changed the scrollbar positions.\n\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n if (!areElementsInjected()) {\n debug(\"Aborting because element container has not been initialized\");\n return;\n }\n\n positionScrollbars(element, width, height);\n });\n\n if (sizeChanged && done) {\n batchProcessor.add(2, function () {\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n if (!areElementsInjected()) {\n debug(\"Aborting because element container has not been initialized\");\n return;\n }\n\n done();\n });\n }\n }\n\n function areElementsInjected() {\n return !!getState(element).container;\n }\n\n function notifyListenersIfNeeded() {\n function isFirstNotify() {\n return getState(element).lastNotifiedWidth === undefined;\n }\n\n debug(\"notifyListenersIfNeeded invoked\");\n\n var state = getState(element);\n\n // Don't notify if the current size is the start size, and this is the first notification.\n if (isFirstNotify() && state.lastWidth === state.startSize.width && state.lastHeight === state.startSize.height) {\n return debug(\"Not notifying: Size is the same as the start size, and there has been no notification yet.\");\n }\n\n // Don't notify if the size already has been notified.\n if (state.lastWidth === state.lastNotifiedWidth && state.lastHeight === state.lastNotifiedHeight) {\n return debug(\"Not notifying: Size already notified\");\n }\n\n\n debug(\"Current size not notified, notifying...\");\n state.lastNotifiedWidth = state.lastWidth;\n state.lastNotifiedHeight = state.lastHeight;\n forEach(getState(element).listeners, function (listener) {\n listener(element);\n });\n }\n\n function handleRender() {\n debug(\"startanimation triggered.\");\n\n if (isUnrendered(element)) {\n debug(\"Ignoring since element is still unrendered...\");\n return;\n }\n\n debug(\"Element rendered.\");\n var expand = getExpandElement(element);\n var shrink = getShrinkElement(element);\n if (expand.scrollLeft === 0 || expand.scrollTop === 0 || shrink.scrollLeft === 0 || shrink.scrollTop === 0) {\n debug(\"Scrollbars out of sync. Updating detector elements...\");\n updateDetectorElements(notifyListenersIfNeeded);\n }\n }\n\n function handleScroll() {\n debug(\"Scroll detected.\");\n\n if (isUnrendered(element)) {\n // Element is still unrendered. Skip this scroll event.\n debug(\"Scroll event fired while unrendered. Ignoring...\");\n return;\n }\n\n updateDetectorElements(notifyListenersIfNeeded);\n }\n\n debug(\"registerListenersAndPositionElements invoked.\");\n\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n getState(element).onRendered = handleRender;\n getState(element).onExpand = handleScroll;\n getState(element).onShrink = handleScroll;\n\n var style = getState(element).style;\n updateChildSizes(element, style.width, style.height);\n }\n\n function finalizeDomMutation() {\n debug(\"finalizeDomMutation invoked.\");\n\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n var style = getState(element).style;\n storeCurrentSize(element, style.width, style.height);\n positionScrollbars(element, style.width, style.height);\n }\n\n function ready() {\n callback(element);\n }\n\n function install() {\n debug(\"Installing...\");\n initListeners();\n storeStartSize();\n\n batchProcessor.add(0, storeStyle);\n batchProcessor.add(1, injectScrollElements);\n batchProcessor.add(2, registerListenersAndPositionElements);\n batchProcessor.add(3, finalizeDomMutation);\n batchProcessor.add(4, ready);\n }\n\n debug(\"Making detectable...\");\n\n if (isDetached(element)) {\n debug(\"Element is detached\");\n\n injectContainerElement();\n\n debug(\"Waiting until element is attached...\");\n\n getState(element).onRendered = function () {\n debug(\"Element is now attached\");\n install();\n };\n } else {\n install();\n }\n }\n\n function uninstall(element) {\n var state = getState(element);\n\n if (!state) {\n // Uninstall has been called on a non-erd element.\n return;\n }\n\n // Uninstall may have been called in the following scenarios:\n // (1) Right between the sync code and async batch (here state.busy = true, but nothing have been registered or injected).\n // (2) In the ready callback of the last level of the batch by another element (here, state.busy = true, but all the stuff has been injected).\n // (3) After the installation process (here, state.busy = false and all the stuff has been injected).\n // So to be on the safe side, let's check for each thing before removing.\n\n // We need to remove the event listeners, because otherwise the event might fire on an uninstall element which results in an error when trying to get the state of the element.\n state.onExpandScroll && removeEvent(getExpandElement(element), \"scroll\", state.onExpandScroll);\n state.onShrinkScroll && removeEvent(getShrinkElement(element), \"scroll\", state.onShrinkScroll);\n state.onAnimationStart && removeEvent(state.container, \"animationstart\", state.onAnimationStart);\n\n state.container && element.removeChild(state.container);\n }\n\n return {\n makeDetectable: makeDetectable,\n addListener: addListener,\n uninstall: uninstall,\n initDocument: initDocument\n };\n};\n","\"use strict\";\n\nvar forEach = require(\"./collection-utils\").forEach;\nvar elementUtilsMaker = require(\"./element-utils\");\nvar listenerHandlerMaker = require(\"./listener-handler\");\nvar idGeneratorMaker = require(\"./id-generator\");\nvar idHandlerMaker = require(\"./id-handler\");\nvar reporterMaker = require(\"./reporter\");\nvar browserDetector = require(\"./browser-detector\");\nvar batchProcessorMaker = require(\"batch-processor\");\nvar stateHandler = require(\"./state-handler\");\n\n//Detection strategies.\nvar objectStrategyMaker = require(\"./detection-strategy/object.js\");\nvar scrollStrategyMaker = require(\"./detection-strategy/scroll.js\");\n\nfunction isCollection(obj) {\n return Array.isArray(obj) || obj.length !== undefined;\n}\n\nfunction toArray(collection) {\n if (!Array.isArray(collection)) {\n var array = [];\n forEach(collection, function (obj) {\n array.push(obj);\n });\n return array;\n } else {\n return collection;\n }\n}\n\nfunction isElement(obj) {\n return obj && obj.nodeType === 1;\n}\n\n/**\n * @typedef idHandler\n * @type {object}\n * @property {function} get Gets the resize detector id of the element.\n * @property {function} set Generate and sets the resize detector id of the element.\n */\n\n/**\n * @typedef Options\n * @type {object}\n * @property {boolean} callOnAdd Determines if listeners should be called when they are getting added.\n Default is true. If true, the listener is guaranteed to be called when it has been added.\n If false, the listener will not be guarenteed to be called when it has been added (does not prevent it from being called).\n * @property {idHandler} idHandler A custom id handler that is responsible for generating, setting and retrieving id's for elements.\n If not provided, a default id handler will be used.\n * @property {reporter} reporter A custom reporter that handles reporting logs, warnings and errors.\n If not provided, a default id handler will be used.\n If set to false, then nothing will be reported.\n * @property {boolean} debug If set to true, the the system will report debug messages as default for the listenTo method.\n */\n\n/**\n * Creates an element resize detector instance.\n * @public\n * @param {Options?} options Optional global options object that will decide how this instance will work.\n */\nmodule.exports = function(options) {\n options = options || {};\n\n //idHandler is currently not an option to the listenTo function, so it should not be added to globalOptions.\n var idHandler;\n\n if (options.idHandler) {\n // To maintain compatability with idHandler.get(element, readonly), make sure to wrap the given idHandler\n // so that readonly flag always is true when it's used here. This may be removed next major version bump.\n idHandler = {\n get: function (element) { return options.idHandler.get(element, true); },\n set: options.idHandler.set\n };\n } else {\n var idGenerator = idGeneratorMaker();\n var defaultIdHandler = idHandlerMaker({\n idGenerator: idGenerator,\n stateHandler: stateHandler\n });\n idHandler = defaultIdHandler;\n }\n\n //reporter is currently not an option to the listenTo function, so it should not be added to globalOptions.\n var reporter = options.reporter;\n\n if(!reporter) {\n //If options.reporter is false, then the reporter should be quiet.\n var quiet = reporter === false;\n reporter = reporterMaker(quiet);\n }\n\n //batchProcessor is currently not an option to the listenTo function, so it should not be added to globalOptions.\n var batchProcessor = getOption(options, \"batchProcessor\", batchProcessorMaker({ reporter: reporter }));\n\n //Options to be used as default for the listenTo function.\n var globalOptions = {};\n globalOptions.callOnAdd = !!getOption(options, \"callOnAdd\", true);\n globalOptions.debug = !!getOption(options, \"debug\", false);\n\n var eventListenerHandler = listenerHandlerMaker(idHandler);\n var elementUtils = elementUtilsMaker({\n stateHandler: stateHandler\n });\n\n //The detection strategy to be used.\n var detectionStrategy;\n var desiredStrategy = getOption(options, \"strategy\", \"object\");\n var importantCssRules = getOption(options, \"important\", false);\n var strategyOptions = {\n reporter: reporter,\n batchProcessor: batchProcessor,\n stateHandler: stateHandler,\n idHandler: idHandler,\n important: importantCssRules\n };\n\n if(desiredStrategy === \"scroll\") {\n if (browserDetector.isLegacyOpera()) {\n reporter.warn(\"Scroll strategy is not supported on legacy Opera. Changing to object strategy.\");\n desiredStrategy = \"object\";\n } else if (browserDetector.isIE(9)) {\n reporter.warn(\"Scroll strategy is not supported on IE9. Changing to object strategy.\");\n desiredStrategy = \"object\";\n }\n }\n\n if(desiredStrategy === \"scroll\") {\n detectionStrategy = scrollStrategyMaker(strategyOptions);\n } else if(desiredStrategy === \"object\") {\n detectionStrategy = objectStrategyMaker(strategyOptions);\n } else {\n throw new Error(\"Invalid strategy name: \" + desiredStrategy);\n }\n\n //Calls can be made to listenTo with elements that are still being installed.\n //Also, same elements can occur in the elements list in the listenTo function.\n //With this map, the ready callbacks can be synchronized between the calls\n //so that the ready callback can always be called when an element is ready - even if\n //it wasn't installed from the function itself.\n var onReadyCallbacks = {};\n\n /**\n * Makes the given elements resize-detectable and starts listening to resize events on the elements. Calls the event callback for each event for each element.\n * @public\n * @param {Options?} options Optional options object. These options will override the global options. Some options may not be overriden, such as idHandler.\n * @param {element[]|element} elements The given array of elements to detect resize events of. Single element is also valid.\n * @param {function} listener The callback to be executed for each resize event for each element.\n */\n function listenTo(options, elements, listener) {\n function onResizeCallback(element) {\n var listeners = eventListenerHandler.get(element);\n forEach(listeners, function callListenerProxy(listener) {\n listener(element);\n });\n }\n\n function addListener(callOnAdd, element, listener) {\n eventListenerHandler.add(element, listener);\n\n if(callOnAdd) {\n listener(element);\n }\n }\n\n //Options object may be omitted.\n if(!listener) {\n listener = elements;\n elements = options;\n options = {};\n }\n\n if(!elements) {\n throw new Error(\"At least one element required.\");\n }\n\n if(!listener) {\n throw new Error(\"Listener required.\");\n }\n\n if (isElement(elements)) {\n // A single element has been passed in.\n elements = [elements];\n } else if (isCollection(elements)) {\n // Convert collection to array for plugins.\n // TODO: May want to check so that all the elements in the collection are valid elements.\n elements = toArray(elements);\n } else {\n return reporter.error(\"Invalid arguments. Must be a DOM element or a collection of DOM elements.\");\n }\n\n var elementsReady = 0;\n\n var callOnAdd = getOption(options, \"callOnAdd\", globalOptions.callOnAdd);\n var onReadyCallback = getOption(options, \"onReady\", function noop() {});\n var debug = getOption(options, \"debug\", globalOptions.debug);\n\n forEach(elements, function attachListenerToElement(element) {\n if (!stateHandler.getState(element)) {\n stateHandler.initState(element);\n idHandler.set(element);\n }\n\n var id = idHandler.get(element);\n\n debug && reporter.log(\"Attaching listener to element\", id, element);\n\n if(!elementUtils.isDetectable(element)) {\n debug && reporter.log(id, \"Not detectable.\");\n if(elementUtils.isBusy(element)) {\n debug && reporter.log(id, \"System busy making it detectable\");\n\n //The element is being prepared to be detectable. Do not make it detectable.\n //Just add the listener, because the element will soon be detectable.\n addListener(callOnAdd, element, listener);\n onReadyCallbacks[id] = onReadyCallbacks[id] || [];\n onReadyCallbacks[id].push(function onReady() {\n elementsReady++;\n\n if(elementsReady === elements.length) {\n onReadyCallback();\n }\n });\n return;\n }\n\n debug && reporter.log(id, \"Making detectable...\");\n //The element is not prepared to be detectable, so do prepare it and add a listener to it.\n elementUtils.markBusy(element, true);\n return detectionStrategy.makeDetectable({ debug: debug, important: importantCssRules }, element, function onElementDetectable(element) {\n debug && reporter.log(id, \"onElementDetectable\");\n\n if (stateHandler.getState(element)) {\n elementUtils.markAsDetectable(element);\n elementUtils.markBusy(element, false);\n detectionStrategy.addListener(element, onResizeCallback);\n addListener(callOnAdd, element, listener);\n\n // Since the element size might have changed since the call to \"listenTo\", we need to check for this change,\n // so that a resize event may be emitted.\n // Having the startSize object is optional (since it does not make sense in some cases such as unrendered elements), so check for its existance before.\n // Also, check the state existance before since the element may have been uninstalled in the installation process.\n var state = stateHandler.getState(element);\n if (state && state.startSize) {\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n if (state.startSize.width !== width || state.startSize.height !== height) {\n onResizeCallback(element);\n }\n }\n\n if(onReadyCallbacks[id]) {\n forEach(onReadyCallbacks[id], function(callback) {\n callback();\n });\n }\n } else {\n // The element has been unisntalled before being detectable.\n debug && reporter.log(id, \"Element uninstalled before being detectable.\");\n }\n\n delete onReadyCallbacks[id];\n\n elementsReady++;\n if(elementsReady === elements.length) {\n onReadyCallback();\n }\n });\n }\n\n debug && reporter.log(id, \"Already detecable, adding listener.\");\n\n //The element has been prepared to be detectable and is ready to be listened to.\n addListener(callOnAdd, element, listener);\n elementsReady++;\n });\n\n if(elementsReady === elements.length) {\n onReadyCallback();\n }\n }\n\n function uninstall(elements) {\n if(!elements) {\n return reporter.error(\"At least one element is required.\");\n }\n\n if (isElement(elements)) {\n // A single element has been passed in.\n elements = [elements];\n } else if (isCollection(elements)) {\n // Convert collection to array for plugins.\n // TODO: May want to check so that all the elements in the collection are valid elements.\n elements = toArray(elements);\n } else {\n return reporter.error(\"Invalid arguments. Must be a DOM element or a collection of DOM elements.\");\n }\n\n forEach(elements, function (element) {\n eventListenerHandler.removeAllListeners(element);\n detectionStrategy.uninstall(element);\n stateHandler.cleanState(element);\n });\n }\n\n function initDocument(targetDocument) {\n detectionStrategy.initDocument && detectionStrategy.initDocument(targetDocument);\n }\n\n return {\n listenTo: listenTo,\n removeListener: eventListenerHandler.removeListener,\n removeAllListeners: eventListenerHandler.removeAllListeners,\n uninstall: uninstall,\n initDocument: initDocument\n };\n};\n\nfunction getOption(options, name, defaultValue) {\n var value = options[name];\n\n if((value === undefined || value === null) && defaultValue !== undefined) {\n return defaultValue;\n }\n\n return value;\n}\n","\"use strict\";\n\nmodule.exports = function(options) {\n var getState = options.stateHandler.getState;\n\n /**\n * Tells if the element has been made detectable and ready to be listened for resize events.\n * @public\n * @param {element} The element to check.\n * @returns {boolean} True or false depending on if the element is detectable or not.\n */\n function isDetectable(element) {\n var state = getState(element);\n return state && !!state.isDetectable;\n }\n\n /**\n * Marks the element that it has been made detectable and ready to be listened for resize events.\n * @public\n * @param {element} The element to mark.\n */\n function markAsDetectable(element) {\n getState(element).isDetectable = true;\n }\n\n /**\n * Tells if the element is busy or not.\n * @public\n * @param {element} The element to check.\n * @returns {boolean} True or false depending on if the element is busy or not.\n */\n function isBusy(element) {\n return !!getState(element).busy;\n }\n\n /**\n * Marks the object is busy and should not be made detectable.\n * @public\n * @param {element} element The element to mark.\n * @param {boolean} busy If the element is busy or not.\n */\n function markBusy(element, busy) {\n getState(element).busy = !!busy;\n }\n\n return {\n isDetectable: isDetectable,\n markAsDetectable: markAsDetectable,\n isBusy: isBusy,\n markBusy: markBusy\n };\n};\n","\"use strict\";\n\nmodule.exports = function() {\n var idCount = 1;\n\n /**\n * Generates a new unique id in the context.\n * @public\n * @returns {number} A unique id in the context.\n */\n function generate() {\n return idCount++;\n }\n\n return {\n generate: generate\n };\n};\n","\"use strict\";\n\nmodule.exports = function(options) {\n var idGenerator = options.idGenerator;\n var getState = options.stateHandler.getState;\n\n /**\n * Gets the resize detector id of the element.\n * @public\n * @param {element} element The target element to get the id of.\n * @returns {string|number|null} The id of the element. Null if it has no id.\n */\n function getId(element) {\n var state = getState(element);\n\n if (state && state.id !== undefined) {\n return state.id;\n }\n\n return null;\n }\n\n /**\n * Sets the resize detector id of the element. Requires the element to have a resize detector state initialized.\n * @public\n * @param {element} element The target element to set the id of.\n * @returns {string|number|null} The id of the element.\n */\n function setId(element) {\n var state = getState(element);\n\n if (!state) {\n throw new Error(\"setId required the element to have a resize detection state.\");\n }\n\n var id = idGenerator.generate();\n\n state.id = id;\n\n return id;\n }\n\n return {\n get: getId,\n set: setId\n };\n};\n","\"use strict\";\n\nmodule.exports = function(idHandler) {\n var eventListeners = {};\n\n /**\n * Gets all listeners for the given element.\n * @public\n * @param {element} element The element to get all listeners for.\n * @returns All listeners for the given element.\n */\n function getListeners(element) {\n var id = idHandler.get(element);\n\n if (id === undefined) {\n return [];\n }\n\n return eventListeners[id] || [];\n }\n\n /**\n * Stores the given listener for the given element. Will not actually add the listener to the element.\n * @public\n * @param {element} element The element that should have the listener added.\n * @param {function} listener The callback that the element has added.\n */\n function addListener(element, listener) {\n var id = idHandler.get(element);\n\n if(!eventListeners[id]) {\n eventListeners[id] = [];\n }\n\n eventListeners[id].push(listener);\n }\n\n function removeListener(element, listener) {\n var listeners = getListeners(element);\n for (var i = 0, len = listeners.length; i < len; ++i) {\n if (listeners[i] === listener) {\n listeners.splice(i, 1);\n break;\n }\n }\n }\n\n function removeAllListeners(element) {\n var listeners = getListeners(element);\n if (!listeners) { return; }\n listeners.length = 0;\n }\n\n return {\n get: getListeners,\n add: addListener,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners\n };\n};\n","\"use strict\";\n\n/* global console: false */\n\n/**\n * Reporter that handles the reporting of logs, warnings and errors.\n * @public\n * @param {boolean} quiet Tells if the reporter should be quiet or not.\n */\nmodule.exports = function(quiet) {\n function noop() {\n //Does nothing.\n }\n\n var reporter = {\n log: noop,\n warn: noop,\n error: noop\n };\n\n if(!quiet && window.console) {\n var attachFunction = function(reporter, name) {\n //The proxy is needed to be able to call the method with the console context,\n //since we cannot use bind.\n reporter[name] = function reporterProxy() {\n var f = console[name];\n if (f.apply) { //IE9 does not support console.log.apply :)\n f.apply(console, arguments);\n } else {\n for (var i = 0; i < arguments.length; i++) {\n f(arguments[i]);\n }\n }\n };\n };\n\n attachFunction(reporter, \"log\");\n attachFunction(reporter, \"warn\");\n attachFunction(reporter, \"error\");\n }\n\n return reporter;\n};","\"use strict\";\n\nvar prop = \"_erd\";\n\nfunction initState(element) {\n element[prop] = {};\n return getState(element);\n}\n\nfunction getState(element) {\n return element[prop];\n}\n\nfunction cleanState(element) {\n delete element[prop];\n}\n\nmodule.exports = {\n initState: initState,\n getState: getState,\n cleanState: cleanState\n};\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","\"use strict\";\r\n\r\nvar tester = /^[-!#$%&'*+\\/0-9=?A-Z^_a-z{|}~](\\.?[-!#$%&'*+\\/0-9=?A-Z^_a-z`{|}~])*@[a-zA-Z0-9](-*\\.?[a-zA-Z0-9])*\\.[a-zA-Z](-?[a-zA-Z0-9])+$/;\r\n// Thanks to:\r\n// http://fightingforalostcause.net/misc/2006/compare-email-regex.php\r\n// http://thedailywtf.com/Articles/Validating_Email_Addresses.aspx\r\n// http://stackoverflow.com/questions/201323/what-is-the-best-regular-expression-for-validating-email-addresses/201378#201378\r\nexports.validate = function(email)\r\n{\r\n\tif (!email)\r\n\t\treturn false;\r\n\t\t\r\n\tif(email.length>254)\r\n\t\treturn false;\r\n\r\n\tvar valid = tester.test(email);\r\n\tif(!valid)\r\n\t\treturn false;\r\n\r\n\t// Further checking of some things regex can't handle\r\n\tvar parts = email.split(\"@\");\r\n\tif(parts[0].length>64)\r\n\t\treturn false;\r\n\r\n\tvar domainParts = parts[1].split(\".\");\r\n\tif(domainParts.some(function(part) { return part.length>63; }))\r\n\t\treturn false;\r\n\r\n\treturn true;\r\n}","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n return global[key] = (global[key] || 0) + 1;\n};\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","// Generated file. Do not edit\nexport var StatusCodes;\n(function (StatusCodes) {\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.3\n *\n * The request has been received but not yet acted upon. It is non-committal, meaning that there is no way in HTTP to later send an asynchronous response indicating the outcome of processing the request. It is intended for cases where another process or server handles the request, or for batch processing.\n */\n StatusCodes[StatusCodes[\"ACCEPTED\"] = 202] = \"ACCEPTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.3\n *\n * This error response means that the server, while working as a gateway to get a response needed to handle the request, got an invalid response.\n */\n StatusCodes[StatusCodes[\"BAD_GATEWAY\"] = 502] = \"BAD_GATEWAY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.1\n *\n * This response means that server could not understand the request due to invalid syntax.\n */\n StatusCodes[StatusCodes[\"BAD_REQUEST\"] = 400] = \"BAD_REQUEST\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.8\n *\n * This response is sent when a request conflicts with the current state of the server.\n */\n StatusCodes[StatusCodes[\"CONFLICT\"] = 409] = \"CONFLICT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.2.1\n *\n * This interim response indicates that everything so far is OK and that the client should continue with the request or ignore it if it is already finished.\n */\n StatusCodes[StatusCodes[\"CONTINUE\"] = 100] = \"CONTINUE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.2\n *\n * The request has succeeded and a new resource has been created as a result of it. This is typically the response sent after a PUT request.\n */\n StatusCodes[StatusCodes[\"CREATED\"] = 201] = \"CREATED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.14\n *\n * This response code means the expectation indicated by the Expect request header field can't be met by the server.\n */\n StatusCodes[StatusCodes[\"EXPECTATION_FAILED\"] = 417] = \"EXPECTATION_FAILED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.5\n *\n * The request failed due to failure of a previous request.\n */\n StatusCodes[StatusCodes[\"FAILED_DEPENDENCY\"] = 424] = \"FAILED_DEPENDENCY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.3\n *\n * The client does not have access rights to the content, i.e. they are unauthorized, so server is rejecting to give proper response. Unlike 401, the client's identity is known to the server.\n */\n StatusCodes[StatusCodes[\"FORBIDDEN\"] = 403] = \"FORBIDDEN\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.5\n *\n * This error response is given when the server is acting as a gateway and cannot get a response in time.\n */\n StatusCodes[StatusCodes[\"GATEWAY_TIMEOUT\"] = 504] = \"GATEWAY_TIMEOUT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.9\n *\n * This response would be sent when the requested content has been permenantly deleted from server, with no forwarding address. Clients are expected to remove their caches and links to the resource. The HTTP specification intends this status code to be used for \"limited-time, promotional services\". APIs should not feel compelled to indicate resources that have been deleted with this status code.\n */\n StatusCodes[StatusCodes[\"GONE\"] = 410] = \"GONE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.6\n *\n * The HTTP version used in the request is not supported by the server.\n */\n StatusCodes[StatusCodes[\"HTTP_VERSION_NOT_SUPPORTED\"] = 505] = \"HTTP_VERSION_NOT_SUPPORTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2324#section-2.3.2\n *\n * Any attempt to brew coffee with a teapot should result in the error code \"418 I'm a teapot\". The resulting entity body MAY be short and stout.\n */\n StatusCodes[StatusCodes[\"IM_A_TEAPOT\"] = 418] = \"IM_A_TEAPOT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.6\n *\n * The 507 (Insufficient Storage) status code means the method could not be performed on the resource because the server is unable to store the representation needed to successfully complete the request. This condition is considered to be temporary. If the request which received this status code was the result of a user action, the request MUST NOT be repeated until it is requested by a separate user action.\n */\n StatusCodes[StatusCodes[\"INSUFFICIENT_SPACE_ON_RESOURCE\"] = 419] = \"INSUFFICIENT_SPACE_ON_RESOURCE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.6\n *\n * The server has an internal configuration error: the chosen variant resource is configured to engage in transparent content negotiation itself, and is therefore not a proper end point in the negotiation process.\n */\n StatusCodes[StatusCodes[\"INSUFFICIENT_STORAGE\"] = 507] = \"INSUFFICIENT_STORAGE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.1\n *\n * The server encountered an unexpected condition that prevented it from fulfilling the request.\n */\n StatusCodes[StatusCodes[\"INTERNAL_SERVER_ERROR\"] = 500] = \"INTERNAL_SERVER_ERROR\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.10\n *\n * The server rejected the request because the Content-Length header field is not defined and the server requires it.\n */\n StatusCodes[StatusCodes[\"LENGTH_REQUIRED\"] = 411] = \"LENGTH_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.4\n *\n * The resource that is being accessed is locked.\n */\n StatusCodes[StatusCodes[\"LOCKED\"] = 423] = \"LOCKED\";\n /**\n * @deprecated\n * Official Documentation @ https://tools.ietf.org/rfcdiff?difftype=--hwdiff&url2=draft-ietf-webdav-protocol-06.txt\n *\n * A deprecated response used by the Spring Framework when a method has failed.\n */\n StatusCodes[StatusCodes[\"METHOD_FAILURE\"] = 420] = \"METHOD_FAILURE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.5\n *\n * The request method is known by the server but has been disabled and cannot be used. For example, an API may forbid DELETE-ing a resource. The two mandatory methods, GET and HEAD, must never be disabled and should not return this error code.\n */\n StatusCodes[StatusCodes[\"METHOD_NOT_ALLOWED\"] = 405] = \"METHOD_NOT_ALLOWED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.2\n *\n * This response code means that URI of requested resource has been changed. Probably, new URI would be given in the response.\n */\n StatusCodes[StatusCodes[\"MOVED_PERMANENTLY\"] = 301] = \"MOVED_PERMANENTLY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.3\n *\n * This response code means that URI of requested resource has been changed temporarily. New changes in the URI might be made in the future. Therefore, this same URI should be used by the client in future requests.\n */\n StatusCodes[StatusCodes[\"MOVED_TEMPORARILY\"] = 302] = \"MOVED_TEMPORARILY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.2\n *\n * A Multi-Status response conveys information about multiple resources in situations where multiple status codes might be appropriate.\n */\n StatusCodes[StatusCodes[\"MULTI_STATUS\"] = 207] = \"MULTI_STATUS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.1\n *\n * The request has more than one possible responses. User-agent or user should choose one of them. There is no standardized way to choose one of the responses.\n */\n StatusCodes[StatusCodes[\"MULTIPLE_CHOICES\"] = 300] = \"MULTIPLE_CHOICES\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-6\n *\n * The 511 status code indicates that the client needs to authenticate to gain network access.\n */\n StatusCodes[StatusCodes[\"NETWORK_AUTHENTICATION_REQUIRED\"] = 511] = \"NETWORK_AUTHENTICATION_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.5\n *\n * There is no content to send for this request, but the headers may be useful. The user-agent may update its cached headers for this resource with the new ones.\n */\n StatusCodes[StatusCodes[\"NO_CONTENT\"] = 204] = \"NO_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.4\n *\n * This response code means returned meta-information set is not exact set as available from the origin server, but collected from a local or a third party copy. Except this condition, 200 OK response should be preferred instead of this response.\n */\n StatusCodes[StatusCodes[\"NON_AUTHORITATIVE_INFORMATION\"] = 203] = \"NON_AUTHORITATIVE_INFORMATION\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.6\n *\n * This response is sent when the web server, after performing server-driven content negotiation, doesn't find any content following the criteria given by the user agent.\n */\n StatusCodes[StatusCodes[\"NOT_ACCEPTABLE\"] = 406] = \"NOT_ACCEPTABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.4\n *\n * The server can not find requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 to hide the existence of a resource from an unauthorized client. This response code is probably the most famous one due to its frequent occurence on the web.\n */\n StatusCodes[StatusCodes[\"NOT_FOUND\"] = 404] = \"NOT_FOUND\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.2\n *\n * The request method is not supported by the server and cannot be handled. The only methods that servers are required to support (and therefore that must not return this code) are GET and HEAD.\n */\n StatusCodes[StatusCodes[\"NOT_IMPLEMENTED\"] = 501] = \"NOT_IMPLEMENTED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7232#section-4.1\n *\n * This is used for caching purposes. It is telling to client that response has not been modified. So, client can continue to use same cached version of response.\n */\n StatusCodes[StatusCodes[\"NOT_MODIFIED\"] = 304] = \"NOT_MODIFIED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.1\n *\n * The request has succeeded. The meaning of a success varies depending on the HTTP method:\n * GET: The resource has been fetched and is transmitted in the message body.\n * HEAD: The entity headers are in the message body.\n * POST: The resource describing the result of the action is transmitted in the message body.\n * TRACE: The message body contains the request message as received by the server\n */\n StatusCodes[StatusCodes[\"OK\"] = 200] = \"OK\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7233#section-4.1\n *\n * This response code is used because of range header sent by the client to separate download into multiple streams.\n */\n StatusCodes[StatusCodes[\"PARTIAL_CONTENT\"] = 206] = \"PARTIAL_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.2\n *\n * This response code is reserved for future use. Initial aim for creating this code was using it for digital payment systems however this is not used currently.\n */\n StatusCodes[StatusCodes[\"PAYMENT_REQUIRED\"] = 402] = \"PAYMENT_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7538#section-3\n *\n * This means that the resource is now permanently located at another URI, specified by the Location: HTTP Response header. This has the same semantics as the 301 Moved Permanently HTTP response code, with the exception that the user agent must not change the HTTP method used: if a POST was used in the first request, a POST must be used in the second request.\n */\n StatusCodes[StatusCodes[\"PERMANENT_REDIRECT\"] = 308] = \"PERMANENT_REDIRECT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7232#section-4.2\n *\n * The client has indicated preconditions in its headers which the server does not meet.\n */\n StatusCodes[StatusCodes[\"PRECONDITION_FAILED\"] = 412] = \"PRECONDITION_FAILED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-3\n *\n * The origin server requires the request to be conditional. Intended to prevent the 'lost update' problem, where a client GETs a resource's state, modifies it, and PUTs it back to the server, when meanwhile a third party has modified the state on the server, leading to a conflict.\n */\n StatusCodes[StatusCodes[\"PRECONDITION_REQUIRED\"] = 428] = \"PRECONDITION_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.1\n *\n * This code indicates that the server has received and is processing the request, but no response is available yet.\n */\n StatusCodes[StatusCodes[\"PROCESSING\"] = 102] = \"PROCESSING\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7235#section-3.2\n *\n * This is similar to 401 but authentication is needed to be done by a proxy.\n */\n StatusCodes[StatusCodes[\"PROXY_AUTHENTICATION_REQUIRED\"] = 407] = \"PROXY_AUTHENTICATION_REQUIRED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-5\n *\n * The server is unwilling to process the request because its header fields are too large. The request MAY be resubmitted after reducing the size of the request header fields.\n */\n StatusCodes[StatusCodes[\"REQUEST_HEADER_FIELDS_TOO_LARGE\"] = 431] = \"REQUEST_HEADER_FIELDS_TOO_LARGE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.7\n *\n * This response is sent on an idle connection by some servers, even without any previous request by the client. It means that the server would like to shut down this unused connection. This response is used much more since some browsers, like Chrome, Firefox 27+, or IE9, use HTTP pre-connection mechanisms to speed up surfing. Also note that some servers merely shut down the connection without sending this message.\n */\n StatusCodes[StatusCodes[\"REQUEST_TIMEOUT\"] = 408] = \"REQUEST_TIMEOUT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.11\n *\n * Request entity is larger than limits defined by server; the server might close the connection or return an Retry-After header field.\n */\n StatusCodes[StatusCodes[\"REQUEST_TOO_LONG\"] = 413] = \"REQUEST_TOO_LONG\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.12\n *\n * The URI requested by the client is longer than the server is willing to interpret.\n */\n StatusCodes[StatusCodes[\"REQUEST_URI_TOO_LONG\"] = 414] = \"REQUEST_URI_TOO_LONG\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7233#section-4.4\n *\n * The range specified by the Range header field in the request can't be fulfilled; it's possible that the range is outside the size of the target URI's data.\n */\n StatusCodes[StatusCodes[\"REQUESTED_RANGE_NOT_SATISFIABLE\"] = 416] = \"REQUESTED_RANGE_NOT_SATISFIABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.3.6\n *\n * This response code is sent after accomplishing request to tell user agent reset document view which sent this request.\n */\n StatusCodes[StatusCodes[\"RESET_CONTENT\"] = 205] = \"RESET_CONTENT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.4\n *\n * Server sent this response to directing client to get requested resource to another URI with an GET request.\n */\n StatusCodes[StatusCodes[\"SEE_OTHER\"] = 303] = \"SEE_OTHER\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.6.4\n *\n * The server is not ready to handle the request. Common causes are a server that is down for maintenance or that is overloaded. Note that together with this response, a user-friendly page explaining the problem should be sent. This responses should be used for temporary conditions and the Retry-After: HTTP header should, if possible, contain the estimated time before the recovery of the service. The webmaster must also take care about the caching-related headers that are sent along with this response, as these temporary condition responses should usually not be cached.\n */\n StatusCodes[StatusCodes[\"SERVICE_UNAVAILABLE\"] = 503] = \"SERVICE_UNAVAILABLE\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.2.2\n *\n * This code is sent in response to an Upgrade request header by the client, and indicates the protocol the server is switching too.\n */\n StatusCodes[StatusCodes[\"SWITCHING_PROTOCOLS\"] = 101] = \"SWITCHING_PROTOCOLS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.7\n *\n * Server sent this response to directing client to get requested resource to another URI with same method that used prior request. This has the same semantic than the 302 Found HTTP response code, with the exception that the user agent must not change the HTTP method used: if a POST was used in the first request, a POST must be used in the second request.\n */\n StatusCodes[StatusCodes[\"TEMPORARY_REDIRECT\"] = 307] = \"TEMPORARY_REDIRECT\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc6585#section-4\n *\n * The user has sent too many requests in a given amount of time (\"rate limiting\").\n */\n StatusCodes[StatusCodes[\"TOO_MANY_REQUESTS\"] = 429] = \"TOO_MANY_REQUESTS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7235#section-3.1\n *\n * Although the HTTP standard specifies \"unauthorized\", semantically this response means \"unauthenticated\". That is, the client must authenticate itself to get the requested response.\n */\n StatusCodes[StatusCodes[\"UNAUTHORIZED\"] = 401] = \"UNAUTHORIZED\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7725\n *\n * The user-agent requested a resource that cannot legally be provided, such as a web page censored by a government.\n */\n StatusCodes[StatusCodes[\"UNAVAILABLE_FOR_LEGAL_REASONS\"] = 451] = \"UNAVAILABLE_FOR_LEGAL_REASONS\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc2518#section-10.3\n *\n * The request was well-formed but was unable to be followed due to semantic errors.\n */\n StatusCodes[StatusCodes[\"UNPROCESSABLE_ENTITY\"] = 422] = \"UNPROCESSABLE_ENTITY\";\n /**\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.5.13\n *\n * The media format of the requested data is not supported by the server, so the server is rejecting the request.\n */\n StatusCodes[StatusCodes[\"UNSUPPORTED_MEDIA_TYPE\"] = 415] = \"UNSUPPORTED_MEDIA_TYPE\";\n /**\n * @deprecated\n * Official Documentation @ https://tools.ietf.org/html/rfc7231#section-6.4.6\n *\n * Was defined in a previous version of the HTTP specification to indicate that a requested response must be accessed by a proxy. It has been deprecated due to security concerns regarding in-band configuration of a proxy.\n */\n StatusCodes[StatusCodes[\"USE_PROXY\"] = 305] = \"USE_PROXY\";\n /**\n * Official Documentation @ https://datatracker.ietf.org/doc/html/rfc7540#section-9.1.2\n *\n * Defined in the specification of HTTP/2 to indicate that a server is not able to produce a response for the combination of scheme and authority that are included in the request URI.\n */\n StatusCodes[StatusCodes[\"MISDIRECTED_REQUEST\"] = 421] = \"MISDIRECTED_REQUEST\";\n})(StatusCodes || (StatusCodes = {}));\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","module.exports = LinearLayoutVector;\n\nLinearLayoutVector.prototype.getLength = getLength;\nLinearLayoutVector.prototype.setLength = setLength;\nLinearLayoutVector.prototype.getDefaultSize = getDefaultSize;\nLinearLayoutVector.prototype.setDefaultSize = setDefaultSize;\nLinearLayoutVector.prototype.getAxisOffset = getAxisOffset;\nLinearLayoutVector.prototype.setAxisOffset = setAxisOffset;\nLinearLayoutVector.prototype.getGap = getGap;\nLinearLayoutVector.prototype.setGap = setGap;\nLinearLayoutVector.prototype.getItemSize = getItemSize;\nLinearLayoutVector.prototype.setItemSize = setItemSize;\nLinearLayoutVector.prototype.insert = insert;\nLinearLayoutVector.prototype.remove = remove;\nLinearLayoutVector.prototype.start = start;\nLinearLayoutVector.prototype.end = end;\nLinearLayoutVector.prototype.indexOf = indexOf;\nLinearLayoutVector.prototype.clear = clear;\nLinearLayoutVector.prototype.toString = toString;\n\n/**\n * A sparse array of sizes that represent items in a dimension.\n *\n * Provides efficient support for finding the cumulative distance to\n * the start/end of an item along the axis, and similarly for finding the\n * index of the item at a particular distance.\n *\n * Default size is used for items whose size hasn't been specified.\n */\nfunction LinearLayoutVector(block_size) {\n\n if(block_size === undefined) {\n block_size = 128;\n }\n\n // Assumption: vector elements (sizes) will typically be set in\n // small ranges that reflect localized scrolling. Allocate vector\n // elements in blocks of block_size, which must be a power of 2.\n // block_shift is the power of 2 and block_mask masks off as many\n // low order bits. The block_table contains all of the allocated\n // blocks and has length/block_size elements which are allocated lazily.\n var pow = (Math.log(block_size) / Math.log(2)) | 0,\n size = Math.pow(2, pow),\n mask = size - 1;\n\n this.block_size = size;\n this.block_shift = pow;\n this.block_mask = mask;\n this.block_table = [];\n\n this._defaultSize = 0;\n this._axisOffset = 0;\n this._gap = 0;\n\n // Sorted Vector of intervals for the pending removes, in descending order,\n // for example [7, 5, 3, 1] for the removes at 7, 6, 5, 3, 2, 1\n this.removes = null;\n // Sorted Vector of intervals for the pending inserts, in ascending order,\n // for example [1, 3, 5, 7] for the inserts at 1, 2, 3, 5, 6, 7\n this.inserts = null;\n\n this._length = 0;\n // What the length will be after any pending changes are flushed.\n this._pendingLength = -1;\n}\n\n/**\n * The number of item size valued elements.\n *\n * @default 0\n */\nfunction getLength() {\n return this._pendingLength === -1 ? this._length : this._pendingLength;\n}\n\n/**\n * @private\n * Grows or truncates the vector to be the specified newLength.\n * When truncating, releases empty blocks and sets to NaN any values\n * in the last block beyond the newLength.\n */\nfunction setLength(newLength) {\n flushPendingChanges.call(this);\n\n if(newLength < this._length) {\n // Clear any remaining non-NaN values in the last block\n var blockIndex = newLength >> this.block_shift;\n var endIndex = Math.min(blockIndex * this.block_size + this.block_size, this._length) - 1;\n clearInterval.call(this, newLength, endIndex);\n }\n\n this._length = newLength;\n\n // update the table\n var partialBlock = ((this._length & this.block_mask) === 0) ? 0 : 1;\n this.block_table.length = (this._length >> this.block_shift) + partialBlock;\n}\n\n//----------------------------------\n// defaultSize\n//----------------------------------\n\n/**\n * The size of items whose size was not specified with setItemSize.\n *\n * @default 0\n */\nfunction getDefaultSize() {\n return this._defaultSize;\n}\n\n/**\n * @private\n */\nfunction setDefaultSize(value) {\n this._defaultSize = value;\n}\n\n//----------------------------------\n// axisOffset\n//----------------------------------\n\n/**\n * The offset of the first item from the origin in the majorAxis\n * direction. This is useful when implementing padding,\n * in addition to gaps, for virtual layouts.\n *\n * @see #gap\n */\nfunction getAxisOffset() {\n return this._axisOffset;\n}\n\n/**\n * @private\n */\nfunction setAxisOffset(value) {\n this._axisOffset = value;\n}\n\n//----------------------------------\n// gap\n//----------------------------------\n\n/**\n * The distance between items.\n *\n * @default 0\n */\nfunction getGap() {\n return this._gap;\n}\n\n/**\n * @private\n */\nfunction setGap(value) {\n this._gap = value;\n}\n\n//--------------------------------------------------------------------------\n//\n// Methods\n//\n//--------------------------------------------------------------------------\n\n/**\n * Return the size of the item at index. If no size was ever\n * specified then then the defaultSize is returned.\n *\n * @param index The item's index.\n * @see defaultSize\n */\nfunction getItemSize(index) {\n flushPendingChanges.call(this);\n\n var block = this.block_table[index >> this.block_shift];\n if(block) {\n var value = block.sizes[index & this.block_mask];\n return (value !== value) ? this._defaultSize : value;\n } else {\n return this._defaultSize;\n }\n}\n\n/**\n * Set the size of the item at index. If an index is\n * set to NaN then subsequent calls to get\n * will return the defaultSize.\n *\n * @param index The item's index.\n * @param value The item's size.\n * @see defaultSize\n */\nfunction setItemSize(index, value) {\n flushPendingChanges.call(this);\n\n if(index >= this.getLength()) {\n throw new Error(\"Invalid index and all that.\");\n }\n\n var blockIndex = index >> this.block_shift;\n var block = this.block_table[blockIndex];\n if(!block) {\n block = this.block_table[blockIndex] = new Block(this.block_size);\n }\n\n var sizesIndex = index & this.block_mask;\n var sizes = block.sizes;\n var oldValue = sizes[sizesIndex];\n if(oldValue === value) {\n return;\n }\n\n if(oldValue !== oldValue) {\n block.defaultCount -= 1;\n block.sizesSum += value;\n } else if(value !== value) {\n block.defaultCount += 1;\n block.sizesSum -= oldValue;\n } else {\n block.sizesSum += value - oldValue;\n }\n\n sizes[sizesIndex] = value;\n}\n\n/**\n * Make room for a new item at index by shifting all of the sizes\n * one position to the right, beginning with startIndex.\n *\n * The value at index will be NaN.\n *\n * This is similar to array.splice(index, 0, NaN).\n *\n * @param index The position of the new NaN size item.\n */\nfunction insert(index) {\n // We don't support interleaved pending inserts and removes\n if(this.removes) {\n flushPendingChanges.call(this);\n }\n\n if(this.inserts) {\n // Update the last interval or add a new one?\n var lastIndex = this.inserts.length - 1;\n var intervalEnd = this.inserts[lastIndex];\n\n if(index === intervalEnd + 1) {\n // Extend the end of the interval\n this.inserts[lastIndex] = index;\n } else if(index > intervalEnd) {\n // New interval\n this.inserts.push(index);\n this.inserts.push(index);\n } else {\n // We can't support pending inserts that are not ascending\n flushPendingChanges.call(this);\n }\n }\n\n this._pendingLength = Math.max(this._length, index + 1);\n\n if(!this.inserts) {\n this.inserts = [];\n this.inserts.push(index);\n this.inserts.push(index);\n }\n}\n\n/**\n * Remove index by shifting all of the sizes one position to the left,\n * begining with index+1.\n *\n * This is similar to array.splice(index, 1).\n *\n * @param index The position to be removed.\n */\nfunction remove(index) {\n // We don't support interleaved pending inserts and removes\n if(this.inserts) {\n flushPendingChanges.call(this);\n }\n\n // length getter takes into account pending inserts/removes but doesn't flush\n if(index >= this.getLength()) {\n throw new Error(\"Invalid index and all that.\");\n }\n\n if(this.removes) {\n // Update the last interval or add a new one?\n var lastIndex = this.removes.length - 1;\n var intervalStart = this.removes[lastIndex];\n\n if(index === intervalStart - 1) {\n // Extend the start of the interval\n this.removes[lastIndex] = index;\n } else if(index < intervalStart) {\n // New interval\n this.removes.push(index);\n this.removes.push(index);\n } else {\n // We can't support pending removes that are not descending\n flushPendingChanges.call(this);\n }\n }\n\n this._pendingLength = (this._pendingLength === -1) ? length - 1 : this._pendingLength - 1;\n\n if(!this.removes) {\n this.removes = [];\n this.removes.push(index);\n this.removes.push(index);\n }\n}\n\n/**\n * @private\n * Returns true when all sizes in the specified interval for the block are NaN\n */\nfunction isIntervalClear(block, index, count) {\n var sizes = block.sizes, size;\n for(count += index; index < count; ++index) {\n if((size = sizes[index]) === size) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * @private\n * Copies elements between blocks. Indices relative to the blocks.\n * If srcBlock is null, then it fills the destination with NaNs.\n * The case of srcBlock === dstBlock is also supported.\n * The caller must ensure that count is within range.\n */\nfunction inBlockCopy(dstBlock, dstIndexStart, srcBlock, srcIndexStart, count) {\n var ascending = dstIndexStart < srcIndexStart;\n\n var srcIndex = ascending ? srcIndexStart : srcIndexStart + count - 1;\n var dstIndex = ascending ? dstIndexStart : dstIndexStart + count - 1;\n var increment = ascending ? +1 : -1;\n\n var dstSizes = dstBlock.sizes;\n var srcSizes = srcBlock ? srcBlock.sizes : null;\n var dstValue = NaN;\n var srcValue = NaN;\n var sizesSumDelta = 0; // How much the destination sizesSum will change\n var defaultCountDelta = 0; // How much the destination defaultCount will change\n\n while(count > 0) {\n if(srcSizes) {\n srcValue = srcSizes[srcIndex];\n }\n\n dstValue = dstSizes[dstIndex];\n\n // Are the values different?\n if(srcValue !== dstValue) { // Triple '=' to handle NaN comparison\n\n // Are we removing a default size or a chached size?\n if(dstValue !== dstValue) {\n defaultCountDelta--;\n } else {\n sizesSumDelta -= dstValue;\n }\n\n // Are we adding a default size or a cached size?\n if(srcValue !== srcValue) {\n defaultCountDelta++;\n } else {\n sizesSumDelta += srcValue;\n }\n\n dstSizes[dstIndex] = srcValue;\n }\n\n srcIndex += increment;\n dstIndex += increment;\n count--;\n }\n\n dstBlock.sizesSum += sizesSumDelta;\n dstBlock.defaultCount += defaultCountDelta;\n}\n\n/**\n * @private\n * Copies 'count' elements from dstIndex to srcIndex.\n * Safe for overlapping source and destination intervals.\n * If any blocks are left full of NaNs, they will be deallcated.\n */\nfunction copyInterval(dstIndex, srcIndex, count) {\n var ascending = dstIndex < srcIndex;\n if(!ascending) {\n dstIndex += count - 1;\n srcIndex += count - 1;\n }\n\n while(count > 0) {\n // Figure out destination block\n var dstBlockIndex = dstIndex >> this.block_shift;\n var dstSizesIndex = dstIndex & this.block_mask;\n var dstBlock = this.block_table[dstBlockIndex];\n\n // Figure out source block\n var srcBlockIndex = srcIndex >> this.block_shift;\n var srcSizesIndex = srcIndex & this.block_mask;\n var srcBlock = this.block_table[srcBlockIndex];\n\n // Figure out number of elements to copy\n var copyCount = ascending ?\n Math.min(this.block_size - dstSizesIndex, this.block_size - srcSizesIndex) :\n 1 + Math.min(dstSizesIndex, srcSizesIndex);\n\n copyCount = Math.min(copyCount, count);\n\n // Figure out the start index for each block\n var dstStartIndex = ascending ? dstSizesIndex : dstSizesIndex - copyCount + 1;\n var srcStartIndex = ascending ? srcSizesIndex : srcSizesIndex - copyCount + 1;\n\n // Check whether a destination block needs to be allocated.\n // Allocate only if there are non-default values to be copied from the source.\n if(srcBlock && !dstBlock && isIntervalClear(srcBlock, srcStartIndex, copyCount)) {\n dstBlock = new Block(this.block_size);\n this.block_table[dstBlockIndex] = dstBlock;\n }\n\n // Copy to non-null dstBlock, srcBlock can be null\n if(dstBlock) {\n inBlockCopy(dstBlock, dstStartIndex, srcBlock, srcStartIndex, copyCount);\n\n // If this is the last time we're visiting this block, and it contains\n // only NaNs, then remove it\n if(dstBlock.defaultCount === this.block_size) {\n var blockEndReached = ascending ?\n (dstStartIndex + copyCount === this.block_size) :\n (dstStartIndex === 0);\n if(blockEndReached || count === copyCount)\n this.block_table[dstBlockIndex] = null;\n }\n }\n\n dstIndex += ascending ? copyCount : -copyCount;\n srcIndex += ascending ? copyCount : -copyCount;\n count -= copyCount;\n }\n}\n\n/**\n * @private\n * Sets all elements within the specified interval to NaN (both ends inclusive).\n * Releases empty blocks.\n */\nfunction clearInterval(start, end) {\n while(start <= end) {\n // Figure our destination block\n var blockIndex = start >> this.block_shift;\n var sizesIndex = start & this.block_mask;\n var block = this.block_table[blockIndex];\n\n // Figure out number of elements to clear in this iteration\n // Make sure we don't clear more items than requested\n var clearCount = this.block_size - sizesIndex;\n clearCount = Math.min(clearCount, end - start + 1);\n\n if(block) {\n if(clearCount === this.block_size) {\n this.block_table[blockIndex] = null;\n } else {\n // Copying from null source block is equivalent of clearing the destination block\n inBlockCopy(block, sizesIndex, null /*srcBlock*/, 0, clearCount);\n\n // If the blockDst contains only default sizes, then remove the block\n if(block.defaultCount === this.block_size) {\n this.block_table[blockIndex] = null;\n }\n }\n }\n\n start += clearCount;\n }\n}\n\n/**\n * @private\n * Removes the elements designated by the intervals and truncates\n * the LinearLayoutVector to the new length.\n * 'intervals' is a Vector of descending intervals [7, 5, 3, 1]\n */\nfunction removeIntervals(intervals) {\n var intervalsCount = intervals.length;\n if(intervalsCount === 0) {\n return;\n }\n\n // Adding final nextIntervalStart value (see below).\n intervals.reverse(); // turn into ascending, for example [7, 5, 3, 1] --> [1, 3, 5, 7]\n intervals.push(this.getLength());\n\n // Move the elements\n var dstStart = intervals[0];\n var srcStart;\n var count;\n var i = 0;\n do {\n var intervalEnd = intervals[i + 1];\n var nextIntervalStart = intervals[i + 2]\n i += 2;\n\n // Start copy from after the end of current interval\n srcStart = intervalEnd + 1;\n\n // copy all elements up to the start of the next interval.\n count = nextIntervalStart - srcStart;\n\n copyInterval.call(this, dstStart, srcStart, count);\n dstStart += count;\n } while(i < intervalsCount)\n\n // Truncate the excess elements.\n this.setLength(dstStart);\n}\n\n/**\n * @private\n * Increases the length and inserts NaN values for the elements designated by the intervals.\n * 'intervals' is a Vector of ascending intervals [1, 3, 5, 7]\n */\nfunction insertIntervals(intervals, newLength) {\n var intervalsCount = intervals.length;\n if(intervalsCount === 0) {\n return;\n }\n\n // Allocate enough space for the insertions, all the elements\n // allocated are NaN by default.\n var oldLength = this.getLength();\n this.setLength(newLength);\n\n var srcEnd = oldLength - 1;\n var dstEnd = newLength - 1;\n var i = intervalsCount - 2;\n while(i >= 0) {\n // Find current interval\n var intervalStart = intervals[i];\n var intervalEnd = intervals[i + 1];\n i -= 2;\n\n // Start after the current interval\n var dstStart = intervalEnd + 1;\n var copyCount = dstEnd - dstStart + 1;\n var srcStart = srcEnd - copyCount + 1;\n\n copyInterval.call(this, dstStart, srcStart, copyCount);\n dstStart -= copyCount;\n dstEnd = intervalStart - 1;\n\n // Fill in with default NaN values after the copy\n clearInterval.call(this, intervalStart, intervalEnd);\n }\n}\n\n/**\n * @private\n * Processes any pending removes or pending inserts.\n */\nfunction flushPendingChanges() {\n var intervals;\n if(this.removes) {\n intervals = this.removes;\n this.removes = null;\n this._pendingLength = -1;\n removeIntervals.call(this, intervals);\n } else if(this.inserts) {\n intervals = this.inserts;\n var newLength = this._pendingLength;\n this.inserts = null;\n this._pendingLength = -1;\n insertIntervals.call(this, intervals, newLength);\n }\n}\n\n/**\n * The cumulative distance to the start of the item at index, including\n * the gaps between items and the axisOffset.\n *\n * The value of start(0) is axisOffset.\n *\n * Equivalent to:\n *
\n * var distance = this.getAxisOffset();\n * for (var i = 0; i < index; i++)\n *     distance += get(i);\n * return distance + (gap * index);\n * 
\n *\n * The actual implementation is relatively efficient.\n *\n * @param index The item's index.\n * @see #end\n */\nfunction start(index) {\n\n flushPendingChanges.call(this);\n\n if((this._length === 0) || (index === 0)) {\n return this.getAxisOffset();\n }\n\n if(index >= this._length) {\n throw new Error(\"Invalid index and all that.\");\n }\n\n var distance = this.getAxisOffset();\n var blockIndex = index >> this.block_shift;\n for(var i = 0; i < blockIndex; i++)\n {\n var block = this.block_table[i];\n distance += block ?\n block.sizesSum + (block.defaultCount * this._defaultSize) :\n this.block_size * this._defaultSize;\n }\n var lastBlock = this.block_table[blockIndex];\n var lastBlockOffset = index & ~this.block_mask;\n var lastBlockLength = index - lastBlockOffset;\n if(lastBlock) {\n var sizes = lastBlock.sizes;\n for(i = 0; i < lastBlockLength; i++) {\n var size = sizes[i];\n distance += (size !== size) ? this._defaultSize : size;\n }\n } else {\n distance += this._defaultSize * lastBlockLength;\n }\n distance += index * this.getGap();\n return distance;\n}\n\n/**\n * The cumulative distance to the end of the item at index, including\n * the gaps between items.\n *\n * If index <(length-1) then the value of this\n * function is defined as:\n * start(index) + get(index).\n *\n * @param index The item's index.\n * @see #start\n */\nfunction end(index) {\n flushPendingChanges.call(this);\n return this.start(index) + this.getItemSize(index);\n}\n\n/**\n * Returns the index of the item that overlaps the specified distance.\n *\n * The item at index i overlaps a distance value\n * if start(i) <= distance < end(i).\n *\n * If no such item exists, -1 is returned.\n */\nfunction indexOf(distance) {\n flushPendingChanges.call(this);\n var index = indexOfInternal.call(this, distance);\n return (index >= this._length) ? -1 : index;\n}\n\nfunction indexOfInternal(distance) {\n\n if((this._length === 0) || (distance < 0)) {\n return -1;\n }\n\n // The area of the first item includes the axisOffset\n var curDistance = this.getAxisOffset();\n\n if(distance < curDistance) {\n return 0;\n }\n\n var index = -1,\n block = null,\n blockSize = this.block_size,\n defaultSize = this._defaultSize,\n gap = this.getGap(),\n blockGap = gap * blockSize;\n\n // Find the block that contains distance and the index of its\n // first element\n var blockIndex = -1,\n blockTable = this.block_table,\n blockTableLength = blockTable.length;\n\n for(; ++blockIndex < blockTableLength;) {\n block = blockTable[blockIndex];\n var blockDistance = blockGap + (\n block ?\n block.sizesSum + (block.defaultCount * defaultSize) :\n blockSize * defaultSize\n );\n\n if((distance === curDistance) || ((distance >= curDistance) && (distance < (curDistance + blockDistance)))) {\n index = blockIndex << this.block_shift;\n break;\n }\n curDistance += blockDistance;\n }\n\n if((index === -1) || (distance === curDistance)) {\n return index;\n }\n\n // At this point index corresponds to the first item in this block\n if(block) {\n // Find the item that contains distance and return its index\n var sizes = block.sizes,\n n = this.block_size - 1;\n for(var i = 0; i < n; i++) {\n var size = sizes[i];\n curDistance += gap + (size !== size ? this._defaultSize : size);\n if(curDistance > distance) {\n return index + i;\n }\n }\n // TBD special-case for the very last index\n return index + this.block_size - 1;\n } else {\n return index + Math.floor(Number(distance - curDistance) / Number(this._defaultSize + gap));\n }\n}\n\n/**\n * Clear all cached state, reset length to zero.\n */\nfunction clear() {\n // Discard any pending changes, before setting the length\n // otherwise the length setter will commit the changes.\n this.removes = null;\n this.inserts = null;\n this._pendingLength = -1;\n\n this.setLength(0); // clears the this.block_table as well\n}\n\nfunction toString() {\n return \"LinearLayoutVector { \" +\n \"length: \" + this._length + \", \" +\n \"size: \" + this.end(this.getLength() -1) + \", \" +\n \"[blocks: \" + this.block_table.length + \"]\" + \", \" +\n \"gap: \" + this._gap + \", \" +\n \"defaultSize: \" + this._defaultSize + \", \" +\n \"pendingRemoves: \" + (this.removes ? this.removes.length : 0) + \", \" +\n \"pendingInserts: \" + (this.inserts ? this.inserts.length : 0) +\n \" }\";\n}\n\n/**\n * @private\n * A LinearLayoutVector block of layout element heights or widths.\n *\n * Total \"distance\" for a Block is: sizesSum + (defaultCount * distanceVector.default).\n */\nfunction Block(block_size) {\n\n this.sizes = new Array(block_size);\n this.sizesSum = 0;\n this.defaultCount = block_size;\n\n for(var i = -1; ++i < block_size;) {\n this.sizes[i] = NaN;\n }\n}\n","import baseEach from './_baseEach.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nexport default baseMap;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nexport default baseSortBy;\n","import isSymbol from './isSymbol.js';\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nexport default compareAscending;\n","import compareAscending from './_compareAscending.js';\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nexport default compareMultiple;\n","import arrayMap from './_arrayMap.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseMap from './_baseMap.js';\nimport baseSortBy from './_baseSortBy.js';\nimport baseUnary from './_baseUnary.js';\nimport compareMultiple from './_compareMultiple.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nexport default baseOrderBy;\n","import capitalize from './capitalize.js';\nimport createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nexport default camelCase;\n","/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default compact;\n","import basePropertyOf from './_basePropertyOf.js';\n\n/** Used to map characters to HTML entities. */\nvar htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n\n/**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\nvar escapeHtmlChar = basePropertyOf(htmlEscapes);\n\nexport default escapeHtmlChar;\n","import escapeHtmlChar from './_escapeHtmlChar.js';\nimport toString from './toString.js';\n\n/** Used to match HTML entities and HTML characters. */\nvar reUnescapedHtml = /[&<>\"']/g,\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n/**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\nfunction escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n}\n\nexport default escape;\n","import baseIteratee from './_baseIteratee.js';\nimport isArrayLike from './isArrayLike.js';\nimport keys from './keys.js';\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nexport default createFind;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIteratee from './_baseIteratee.js';\nimport toInteger from './toInteger.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nexport default findIndex;\n","import createFind from './_createFind.js';\nimport findIndex from './findIndex.js';\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nexport default find;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nexport default isNil;\n","import createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nexport default kebabCase;\n","import baseOrderBy from './_baseOrderBy.js';\nimport isArray from './isArray.js';\n\n/**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\nfunction orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n}\n\nexport default orderBy;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nexport default last;\n","import baseGet from './_baseGet.js';\nimport baseSlice from './_baseSlice.js';\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nexport default parent;\n","import castPath from './_castPath.js';\nimport last from './last.js';\nimport parent from './_parent.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nexport default baseUnset;\n","import baseUnset from './_baseUnset.js';\nimport isIndex from './_isIndex.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n}\n\nexport default basePullAt;\n","import baseIteratee from './_baseIteratee.js';\nimport basePullAt from './_basePullAt.js';\n\n/**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\nfunction remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = baseIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n}\n\nexport default remove;\n","import baseGetTag from './_baseGetTag.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nexport default isString;\n","import baseProperty from './_baseProperty.js';\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nexport default asciiSize;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n}\n\nexport default unicodeSize;\n","import asciiSize from './_asciiSize.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeSize from './_unicodeSize.js';\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\nexport default stringSize;\n","import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArrayLike from './isArrayLike.js';\nimport isString from './isString.js';\nimport stringSize from './_stringSize.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\nfunction size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n}\n\nexport default size;\n","import createCompounder from './_createCompounder.js';\n\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\nvar snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n});\n\nexport default snakeCase;\n","import baseFlatten from './_baseFlatten.js';\nimport baseOrderBy from './_baseOrderBy.js';\nimport baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nexport default sortBy;\n","import toString from './toString.js';\n\n/**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\nfunction toLower(value) {\n return toString(value).toLowerCase();\n}\n\nexport default toLower;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\nfunction charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\nexport default charsEndIndex;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\nfunction charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\nexport default charsStartIndex;\n","import baseToString from './_baseToString.js';\nimport castSlice from './_castSlice.js';\nimport charsEndIndex from './_charsEndIndex.js';\nimport charsStartIndex from './_charsStartIndex.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\nfunction trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n}\n\nexport default trim;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nexport default noop;\n","import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nexport default createSet;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseUniq;\n","import baseIteratee from './_baseIteratee.js';\nimport baseUniq from './_baseUniq.js';\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nexport default uniqBy;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","var Mexp=require('./postfix_evaluator.js');\r\nMexp.prototype.formulaEval = function () {\r\n\t\"use strict\";\r\n\tvar stack=[],pop1,pop2,pop3;\r\n\tvar disp=[];\r\n\tvar temp='';\r\n\tvar arr=this.value;\r\n\tfor(var i=0;i\"+pop2.value+\"\"+arr[i].show+\"\"+pop1.value+\"\",type:10});\r\n\t\t\telse disp.push({value:(pop2.type!=1?\"(\":\"\")+pop2.value+(pop2.type!=1?\")\":\"\")+\"\"+pop1.value+\"\",type:1});\r\n\t\t}\r\n\t\telse if(arr[i].type===2||arr[i].type===9){\r\n\t\t\tpop1=disp.pop();\r\n\t\t\tpop2=disp.pop();\r\n\t\t\tdisp.push({value:(pop2.type!=1?\"(\":\"\")+pop2.value+(pop2.type!=1?\")\":\"\")+arr[i].show+(pop1.type!=1?\"(\":\"\")+pop1.value+(pop1.type!=1?\")\":\"\"),type:arr[i].type});\r\n\t\t}\r\n\t\telse if(arr[i].type===12){\r\n\t\t\tpop1=disp.pop();\r\n\t\t\tpop2=disp.pop();\r\n\t\t\tpop3=disp.pop();\r\n\t\t\tdisp.push({value:arr[i].show+\"(\"+pop3.value+\",\"+pop2.value+\",\"+pop1.value+\")\",type:12});\r\n\t\t}\r\n\t}\r\n\treturn disp[0].value;\r\n};\r\nmodule.exports=Mexp;","'use strict'\r\nvar Mexp = require('./math_function.js')\r\nfunction inc (arr, val) {\r\n for (var i = 0; i < arr.length; i++) {\r\n arr[i] += val\r\n }\r\n return arr\r\n}\r\nvar token = [\r\n 'sin',\r\n 'cos',\r\n 'tan',\r\n 'pi',\r\n '(',\r\n ')',\r\n 'P',\r\n 'C',\r\n ' ',\r\n 'asin',\r\n 'acos',\r\n 'atan',\r\n '7',\r\n '8',\r\n '9',\r\n 'int',\r\n 'cosh',\r\n 'acosh',\r\n 'ln',\r\n '^',\r\n 'root',\r\n '4',\r\n '5',\r\n '6',\r\n '/',\r\n '!',\r\n 'tanh',\r\n 'atanh',\r\n 'Mod',\r\n '1',\r\n '2',\r\n '3',\r\n '*',\r\n 'sinh',\r\n 'asinh',\r\n 'e',\r\n 'log',\r\n '0',\r\n '.',\r\n '+',\r\n '-',\r\n ',',\r\n 'Sigma',\r\n 'n',\r\n 'Pi',\r\n 'pow',\r\n '&'\r\n]\r\nvar show = [\r\n 'sin',\r\n 'cos',\r\n 'tan',\r\n 'π',\r\n '(',\r\n ')',\r\n 'P',\r\n 'C',\r\n ' ',\r\n 'asin',\r\n 'acos',\r\n 'atan',\r\n '7',\r\n '8',\r\n '9',\r\n 'Int',\r\n 'cosh',\r\n 'acosh',\r\n ' ln',\r\n '^',\r\n 'root',\r\n '4',\r\n '5',\r\n '6',\r\n '÷',\r\n '!',\r\n 'tanh',\r\n 'atanh',\r\n ' Mod ',\r\n '1',\r\n '2',\r\n '3',\r\n '×',\r\n 'sinh',\r\n 'asinh',\r\n 'e',\r\n ' log',\r\n '0',\r\n '.',\r\n '+',\r\n '-',\r\n ',',\r\n 'Σ',\r\n 'n',\r\n 'Π',\r\n 'pow',\r\n '&'\r\n]\r\nvar eva = [\r\n Mexp.math.sin,\r\n Mexp.math.cos,\r\n Mexp.math.tan,\r\n 'PI',\r\n '(',\r\n ')',\r\n Mexp.math.P,\r\n Mexp.math.C,\r\n ' '.anchor,\r\n Mexp.math.asin,\r\n Mexp.math.acos,\r\n Mexp.math.atan,\r\n '7',\r\n '8',\r\n '9',\r\n Math.floor,\r\n Mexp.math.cosh,\r\n Mexp.math.acosh,\r\n Math.log,\r\n Math.pow,\r\n Math.sqrt,\r\n '4',\r\n '5',\r\n '6',\r\n Mexp.math.div,\r\n Mexp.math.fact,\r\n Mexp.math.tanh,\r\n Mexp.math.atanh,\r\n Mexp.math.mod,\r\n '1',\r\n '2',\r\n '3',\r\n Mexp.math.mul,\r\n Mexp.math.sinh,\r\n Mexp.math.asinh,\r\n 'E',\r\n Mexp.math.log,\r\n '0',\r\n '.',\r\n Mexp.math.add,\r\n Mexp.math.sub,\r\n ',',\r\n Mexp.math.sigma,\r\n 'n',\r\n Mexp.math.Pi,\r\n Math.pow,\r\n Mexp.math.and\r\n]\r\nvar preced = {\r\n 0: 11,\r\n 1: 0,\r\n 2: 3,\r\n 3: 0,\r\n 4: 0,\r\n 5: 0,\r\n 6: 0,\r\n 7: 11,\r\n 8: 11,\r\n 9: 1,\r\n 10: 10,\r\n 11: 0,\r\n 12: 11,\r\n 13: 0,\r\n 14: -1 // will be filtered after lexer\r\n} // stores precedence by types\r\nvar type = [\r\n 0, 0, 0, 3, 4, 5, 10, 10, 14, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 10, 0, 1, 1, 1, 2, 7, 0, 0, 2, 1, 1,\r\n 1, 2, 0, 0, 3, 0, 1, 6, 9, 9, 11, 12, 13, 12, 8, 9\r\n]\r\n/*\r\n0 : function with syntax function_name(Maths_exp)\r\n1 : numbers\r\n2 : binary operators like * / Mod left associate and same precedence\r\n3 : Math constant values like e,pi,Cruncher ans\r\n4 : opening bracket\r\n5 : closing bracket\r\n6 : decimal\r\n7 : function with syntax (Math_exp)function_name\r\n8: function with syntax function_name(Math_exp1,Math_exp2)\r\n9 : binary operator like +,-\r\n10: binary operator like P C or ^\r\n11: ,\r\n12: function with , seperated three parameters and third parameter is a string that will be mexp string\r\n13: variable of Sigma function\r\n*/\r\nvar type0 = {\r\n 0: true,\r\n 1: true,\r\n 3: true,\r\n 4: true,\r\n 6: true,\r\n 8: true,\r\n 9: true,\r\n 12: true,\r\n 13: true,\r\n 14: true\r\n} // type2:true,type4:true,type9:true,type11:true,type21:true,type22\r\nvar type1 = {\r\n 0: true,\r\n 1: true,\r\n 2: true,\r\n 3: true,\r\n 4: true,\r\n 5: true,\r\n 6: true,\r\n 7: true,\r\n 8: true,\r\n 9: true,\r\n 10: true,\r\n 11: true,\r\n 12: true,\r\n 13: true\r\n} // type3:true,type5:true,type7:true,type23\r\nvar type1Asterick = {\r\n 0: true,\r\n 3: true,\r\n 4: true,\r\n 8: true,\r\n 12: true,\r\n 13: true\r\n}\r\nvar empty = {}\r\nvar type3Asterick = {\r\n 0: true,\r\n 1: true,\r\n 3: true,\r\n 4: true,\r\n 6: true,\r\n 8: true,\r\n 12: true,\r\n 13: true\r\n} // type_5:true,type_7:true,type_23\r\nvar type6 = {\r\n 1: true\r\n}\r\nvar newAr = [\r\n [],\r\n [\r\n '1',\r\n '2',\r\n '3',\r\n '7',\r\n '8',\r\n '9',\r\n '4',\r\n '5',\r\n '6',\r\n '+',\r\n '-',\r\n '*',\r\n '/',\r\n '(',\r\n ')',\r\n '^',\r\n '!',\r\n 'P',\r\n 'C',\r\n 'e',\r\n '0',\r\n '.',\r\n ',',\r\n 'n',\r\n ' ',\r\n '&'\r\n ],\r\n ['pi', 'ln', 'Pi'],\r\n ['sin', 'cos', 'tan', 'Del', 'int', 'Mod', 'log', 'pow'],\r\n ['asin', 'acos', 'atan', 'cosh', 'root', 'tanh', 'sinh'],\r\n ['acosh', 'atanh', 'asinh', 'Sigma']\r\n]\r\n\r\nfunction match (str1, str2, i, x) {\r\n for (var f = 0; f < x; f++) {\r\n if (str1[i + f] !== str2[f]) {\r\n return false\r\n }\r\n }\r\n return true\r\n}\r\nMexp.addToken = function (tokens) {\r\n for (var i = 0; i < tokens.length; i++) {\r\n var x = tokens[i].token.length\r\n var temp = -1\r\n\r\n // newAr is a specially designed data structure index of 1d array = length of tokens\r\n newAr[x] = newAr[x] || []\r\n for (var y = 0; y < newAr[x].length; y++) {\r\n if (tokens[i].token === newAr[x][y]) {\r\n temp = token.indexOf(newAr[x][y])\r\n break\r\n }\r\n }\r\n if (temp === -1) {\r\n token.push(tokens[i].token)\r\n type.push(tokens[i].type)\r\n if (newAr.length <= tokens[i].token.length) {\r\n newAr[tokens[i].token.length] = []\r\n }\r\n newAr[tokens[i].token.length].push(tokens[i].token)\r\n eva.push(tokens[i].value)\r\n show.push(tokens[i].show)\r\n } else {\r\n // overwrite\r\n token[temp] = tokens[i].token\r\n type[temp] = tokens[i].type\r\n eva[temp] = tokens[i].value\r\n show[temp] = tokens[i].show\r\n }\r\n }\r\n}\r\n\r\nfunction tokenize (string) {\r\n var nodes = []\r\n var length = string.length\r\n var key, x, y\r\n for (var i = 0; i < length; i++) {\r\n if (i < length - 1 && string[i] === ' ' && string[i + 1] === ' ') {\r\n continue\r\n }\r\n key = ''\r\n for (\r\n x = string.length - i > newAr.length - 2 ? newAr.length - 1 : string.length - i;\r\n x > 0;\r\n x--\r\n ) {\r\n if (newAr[x] === undefined) continue\r\n for (y = 0; y < newAr[x].length; y++) {\r\n if (match(string, newAr[x][y], i, x)) {\r\n key = newAr[x][y]\r\n y = newAr[x].length\r\n x = 0\r\n }\r\n }\r\n }\r\n i += key.length - 1\r\n if (key === '') {\r\n throw new Mexp.Exception(\"Can't understand after \" + string.slice(i))\r\n }\r\n var index = token.indexOf(key)\r\n nodes.push({\r\n index: index,\r\n token: key,\r\n type: type[index],\r\n eval: eva[index],\r\n precedence: preced[type[index]],\r\n show: show[index]\r\n })\r\n }\r\n return nodes\r\n}\r\n\r\nMexp.lex = function (inp, tokens) {\r\n 'use strict'\r\n\r\n var changeSignObj = {\r\n value: Mexp.math.changeSign,\r\n type: 0,\r\n pre: 21,\r\n show: '-'\r\n }\r\n var closingParObj = {\r\n value: ')',\r\n show: ')',\r\n type: 5,\r\n pre: 0\r\n }\r\n var openingParObj = {\r\n value: '(',\r\n type: 4,\r\n pre: 0,\r\n show: '('\r\n }\r\n var str = [openingParObj]\r\n\r\n var ptc = [] // Parenthesis to close at the beginning is after one token\r\n var inpStr = inp\r\n var allowed = type0\r\n var bracToClose = 0\r\n var asterick = empty\r\n var prevKey = ''\r\n var i\r\n if (typeof tokens !== 'undefined') {\r\n Mexp.addToken(tokens)\r\n }\r\n var obj = {}\r\n var nodes = tokenize(inpStr)\r\n for (i = 0; i < nodes.length; i++) {\r\n var node = nodes[i]\r\n if (node.type === 14) {\r\n if (\r\n i > 0 &&\r\n i < nodes.length - 1 &&\r\n nodes[i + 1].type === 1 &&\r\n (nodes[i - 1].type === 1 || nodes[i - 1].type === 6)\r\n ) { throw new Mexp.Exception('Unexpected Space') }\r\n continue\r\n }\r\n var cToken = node.token\r\n var cType = node.type\r\n var cEv = node.eval\r\n var cPre = node.precedence\r\n var cShow = node.show\r\n var pre = str[str.length - 1]\r\n var j\r\n for (j = ptc.length; j--;) {\r\n // loop over ptc\r\n if (ptc[j] === 0) {\r\n if ([0, 2, 3, 4, 5, 9, 11, 12, 13].indexOf(cType) !== -1) {\r\n if (allowed[cType] !== true) {\r\n throw new Mexp.Exception(cToken + ' is not allowed after ' + prevKey)\r\n }\r\n str.push(closingParObj)\r\n allowed = type1\r\n asterick = type3Asterick\r\n ptc.pop()\r\n }\r\n } else break\r\n }\r\n if (allowed[cType] !== true) {\r\n throw new Mexp.Exception(cToken + ' is not allowed after ' + prevKey)\r\n }\r\n if (asterick[cType] === true) {\r\n cType = 2\r\n cEv = Mexp.math.mul\r\n cShow = '×'\r\n cPre = 3\r\n i = i - 1\r\n }\r\n obj = {\r\n value: cEv,\r\n type: cType,\r\n pre: cPre,\r\n show: cShow\r\n }\r\n if (cType === 0) {\r\n allowed = type0\r\n asterick = empty\r\n inc(ptc, 2)\r\n str.push(obj)\r\n if (nodes[i + 1].type !== 4) {\r\n str.push(openingParObj)\r\n ptc.push(2)\r\n }\r\n // bracToClose++\r\n } else if (cType === 1) {\r\n if (pre.type === 1) {\r\n pre.value += cEv\r\n inc(ptc, 1)\r\n } else {\r\n str.push(obj)\r\n }\r\n allowed = type1\r\n asterick = type1Asterick\r\n } else if (cType === 2) {\r\n allowed = type0\r\n asterick = empty\r\n inc(ptc, 2)\r\n str.push(obj)\r\n } else if (cType === 3) {\r\n // constant\r\n str.push(obj)\r\n allowed = type1\r\n asterick = type3Asterick\r\n } else if (cType === 4) {\r\n inc(ptc, 1)\r\n bracToClose++\r\n allowed = type0\r\n asterick = empty\r\n str.push(obj)\r\n } else if (cType === 5) {\r\n if (!bracToClose) {\r\n throw new Mexp.Exception('Closing parenthesis are more than opening one, wait What!!!')\r\n }\r\n bracToClose--\r\n allowed = type1\r\n asterick = type3Asterick\r\n str.push(obj)\r\n inc(ptc, 1)\r\n } else if (cType === 6) {\r\n if (pre.hasDec) {\r\n throw new Mexp.Exception('Two decimals are not allowed in one number')\r\n }\r\n if (pre.type !== 1) {\r\n pre = {\r\n value: 0,\r\n type: 1,\r\n pre: 0\r\n } // pre needs to be changed as it will the last value now to be safe in later code\r\n str.push(pre)\r\n // inc(ptc, 1)\r\n }\r\n allowed = type6\r\n inc(ptc, 1)\r\n asterick = empty\r\n pre.value += cEv\r\n pre.hasDec = true\r\n } else if (cType === 7) {\r\n allowed = type1\r\n asterick = type3Asterick\r\n inc(ptc, 1)\r\n str.push(obj)\r\n }\r\n if (cType === 8) {\r\n allowed = type0\r\n asterick = empty\r\n inc(ptc, 4)\r\n str.push(obj)\r\n // str.push(openingParObj)\r\n if (nodes[i + 1].type !== 4) {\r\n str.push(openingParObj)\r\n ptc.push(4)\r\n }\r\n } else if (cType === 9) {\r\n if (pre.type === 9) {\r\n if (pre.value === Mexp.math.add) {\r\n pre.value = cEv\r\n pre.show = cShow\r\n inc(ptc, 1)\r\n } else if (pre.value === Mexp.math.sub && cShow === '-') {\r\n pre.value = Mexp.math.add\r\n pre.show = '+'\r\n inc(ptc, 1)\r\n }\r\n } else if (\r\n pre.type !== 5 &&\r\n pre.type !== 7 &&\r\n pre.type !== 1 &&\r\n pre.type !== 3 &&\r\n pre.type !== 13\r\n ) {\r\n // changesign only when negative is found\r\n if (cToken === '-') {\r\n // do nothing for + token\r\n // don't add with the above if statement as that will run the else statement of parent if on Ctoken +\r\n allowed = type0\r\n asterick = empty\r\n inc(ptc, 2).push(2)\r\n str.push(changeSignObj)\r\n str.push(openingParObj)\r\n }\r\n } else {\r\n str.push(obj)\r\n inc(ptc, 2)\r\n }\r\n allowed = type0\r\n asterick = empty\r\n } else if (cType === 10) {\r\n allowed = type0\r\n asterick = empty\r\n inc(ptc, 2)\r\n str.push(obj)\r\n } else if (cType === 11) {\r\n allowed = type0\r\n asterick = empty\r\n str.push(obj)\r\n } else if (cType === 12) {\r\n allowed = type0\r\n asterick = empty\r\n inc(ptc, 6)\r\n str.push(obj)\r\n if (nodes[i + 1].type !== 4) {\r\n str.push(openingParObj)\r\n ptc.push(6)\r\n }\r\n } else if (cType === 13) {\r\n allowed = type1\r\n asterick = type3Asterick\r\n str.push(obj)\r\n }\r\n inc(ptc, -1)\r\n prevKey = cToken\r\n\r\n }\r\n for (j = ptc.length; j--;) {\r\n // loop over ptc\r\n str.push(closingParObj)\r\n }\r\n if (allowed[5] !== true) {\r\n throw new Mexp.Exception('complete the expression')\r\n }\r\n while (bracToClose--) {\r\n str.push(closingParObj)\r\n }\r\n\r\n str.push(closingParObj)\r\n // console.log(str);\r\n return new Mexp(str)\r\n}\r\nmodule.exports = Mexp\r\n","\"use strict\";\r\nvar Mexp = function (parsed) {\r\n this.value = parsed\r\n}\r\n\r\nMexp.math = {\r\n isDegree: true, // mode of calculator\r\n acos: function (x) {\r\n return (Mexp.math.isDegree ? 180 / Math.PI * Math.acos(x) : Math.acos(x))\r\n },\r\n add: function (a, b) {\r\n return a + b\r\n },\r\n asin: function (x) {\r\n return (Mexp.math.isDegree ? 180 / Math.PI * Math.asin(x) : Math.asin(x))\r\n },\r\n atan: function (x) {\r\n return (Mexp.math.isDegree ? 180 / Math.PI * Math.atan(x) : Math.atan(x))\r\n },\r\n acosh: function (x) {\r\n return Math.log(x + Math.sqrt(x * x - 1))\r\n },\r\n asinh: function (x) {\r\n return Math.log(x + Math.sqrt(x * x + 1))\r\n },\r\n atanh: function (x) {\r\n return Math.log((1 + x) / (1 - x))\r\n },\r\n C: function (n, r) {\r\n var pro = 1\r\n var other = n - r\r\n var choice = r\r\n if (choice < other) {\r\n choice = other\r\n other = r\r\n }\r\n for (var i = choice + 1; i <= n; i++) {\r\n pro *= i\r\n }\r\n return pro / Mexp.math.fact(other)\r\n },\r\n changeSign: function (x) {\r\n return -x\r\n },\r\n cos: function (x) {\r\n if (Mexp.math.isDegree) x = Mexp.math.toRadian(x)\r\n return Math.cos(x)\r\n },\r\n cosh: function (x) {\r\n return (Math.pow(Math.E, x) + Math.pow(Math.E, -1 * x)) / 2\r\n },\r\n div: function (a, b) {\r\n return a / b\r\n },\r\n fact: function (n) {\r\n if (n % 1 !== 0) return 'NaN'\r\n var pro = 1\r\n for (var i = 2; i <= n; i++) {\r\n pro *= i\r\n }\r\n return pro\r\n },\r\n inverse: function (x) {\r\n return 1 / x\r\n },\r\n log: function (i) {\r\n return Math.log(i) / Math.log(10)\r\n },\r\n mod: function (a, b) {\r\n return a % b\r\n },\r\n mul: function (a, b) {\r\n return a * b\r\n },\r\n P: function (n, r) {\r\n var pro = 1\r\n for (var i = Math.floor(n) - Math.floor(r) + 1; i <= Math.floor(n); i++) {\r\n pro *= i\r\n }\r\n return pro\r\n },\r\n Pi: function (low, high, ex) {\r\n var pro = 1\r\n for (var i = low; i <= high; i++) {\r\n pro *= Number(ex.postfixEval({\r\n n: i\r\n }))\r\n }\r\n return pro\r\n },\r\n pow10x: function (e) {\r\n var x = 1\r\n while (e--) {\r\n x *= 10\r\n }\r\n return x\r\n },\r\n sigma: function (low, high, ex) {\r\n var sum = 0\r\n for (var i = low; i <= high; i++) {\r\n sum += Number(ex.postfixEval({\r\n n: i\r\n }))\r\n }\r\n return sum\r\n },\r\n sin: function (x) {\r\n if (Mexp.math.isDegree) x = Mexp.math.toRadian(x)\r\n return Math.sin(x)\r\n },\r\n sinh: function (x) {\r\n return (Math.pow(Math.E, x) - Math.pow(Math.E, -1 * x)) / 2\r\n },\r\n sub: function (a, b) {\r\n return a - b\r\n },\r\n tan: function (x) {\r\n if (Mexp.math.isDegree) x = Mexp.math.toRadian(x)\r\n return Math.tan(x)\r\n },\r\n tanh: function (x) {\r\n return Mexp.sinha(x) / Mexp.cosha(x)\r\n },\r\n toRadian: function (x) {\r\n return x * Math.PI / 180\r\n },\r\n and: function (a, b) {\r\n return a & b\r\n }\r\n}\r\nMexp.Exception = function (message) {\r\n this.message = message\r\n}\r\nmodule.exports = Mexp\r\n","\r\nvar Mexp = require('./lexer.js');\r\n\r\nMexp.prototype.toPostfix = function () {\r\n\t'use strict';\r\n\tvar post = [], elem, popped, prep, pre, ele;\r\n\tvar stack = [{ value: \"(\", type: 4, pre: 0 }];\r\n\tvar arr = this.value;\r\n\tfor (var i = 1; i < arr.length; i++) {\r\n\t\tif (arr[i].type === 1 || arr[i].type === 3 || arr[i].type === 13) {\t//if token is number,constant,or n(which is also a special constant in our case)\r\n\t\t\tif (arr[i].type === 1)\r\n\t\t\t\tarr[i].value = Number(arr[i].value);\r\n\t\t\tpost.push(arr[i]);\r\n\t\t}\r\n\t\telse if (arr[i].type === 4) {\r\n\t\t\tstack.push(arr[i]);\r\n\t\t}\r\n\t\telse if (arr[i].type === 5) {\r\n\t\t\twhile ((popped = stack.pop()).type !== 4) {\r\n\t\t\t\tpost.push(popped);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if (arr[i].type === 11) {\r\n\t\t\twhile ((popped = stack.pop()).type !== 4) {\r\n\t\t\t\tpost.push(popped);\r\n\t\t\t}\r\n\t\t\tstack.push(popped);\r\n\t\t}\r\n\t\telse {\r\n\t\t\telem = arr[i];\r\n\t\t\tpre = elem.pre;\r\n\t\t\tele = stack[stack.length - 1];\r\n\t\t\tprep = ele.pre;\r\n\t\t\tvar flag = ele.value == 'Math.pow' && elem.value == 'Math.pow';\r\n\t\t\tif (pre > prep) stack.push(elem);\r\n\t\t\telse {\r\n\t\t\t\twhile (prep >= pre && !flag || flag && pre < prep) {\r\n\t\t\t\t\tpopped = stack.pop();\r\n\t\t\t\t\tele = stack[stack.length - 1];\r\n\t\t\t\t\tpost.push(popped);\r\n\t\t\t\t\tprep = ele.pre;\r\n\t\t\t\t\tflag = elem.value == 'Math.pow' && ele.value == 'Math.pow';\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(elem);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn new Mexp(post);\r\n};\r\nmodule.exports = Mexp;","var Mexp=require('./postfix.js');\r\nMexp.prototype.postfixEval = function (UserDefined) {\r\n\t'use strict';\r\n\tUserDefined=UserDefined||{};\r\n\tUserDefined.PI=Math.PI;\r\n\tUserDefined.E=Math.E;\r\n\tvar stack=[],pop1,pop2,pop3;\r\n\tvar disp=[];\r\n\tvar temp='';\r\n\tvar arr=this.value;\r\n\tvar bool=(typeof UserDefined.n!==\"undefined\");\r\n\tfor(var i=0;i1) {\r\n\t\tthrow(new Mexp.Exception(\"Uncaught Syntax error\"));\r\n\t}\r\n\treturn stack[0].value>1000000000000000?\"Infinity\":parseFloat(stack[0].value.toFixed(15));\r\n};\r\nMexp.eval=function(str,tokens,obj){\r\n\tif (typeof tokens===\"undefined\") {\r\n\t\treturn this.lex(str).toPostfix().postfixEval();\r\n\t}\r\n\telse if (typeof obj===\"undefined\") {\r\n\t\tif (typeof tokens.length!==\"undefined\") \r\n\t\t\treturn this.lex(str,tokens).toPostfix().postfixEval();\r\n\t\telse\r\n\t\t\treturn this.lex(str).toPostfix().postfixEval(tokens);\r\n\t}\r\n\telse\r\n\t\treturn this.lex(str,tokens).toPostfix().postfixEval(obj);\r\n};\r\nmodule.exports=Mexp;","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\n","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(\n this.key('type').objid(),\n this.key('value').any()\n )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('parameters').optional(),\n this.key('curve').objid().optional()\n )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n })\n})\n\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(\n this.key('notBefore').use(Time),\n this.key('notAfter').use(Time)\n )\n})\n\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(\n this.key('extnID').objid(),\n this.key('critical').bool().def(false),\n this.key('extnValue').octstr()\n )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(\n this.key('version').explicit(0).int().optional(),\n this.key('serialNumber').int(),\n this.key('signature').use(AlgorithmIdentifier),\n this.key('issuer').use(Name),\n this.key('validity').use(Validity),\n this.key('subject').use(Name),\n this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n this.key('extensions').explicit(3).seqof(Extension).optional()\n )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(\n this.key('tbsCertificate').use(TBSCertificate),\n this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n this.key('signatureValue').bitstr()\n )\n})\n\nmodule.exports = X509Certificate\n","// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = Buffer.from(match[2], 'hex')\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1]\n return {\n tag: tag,\n data: decrypted\n }\n}\n","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\nvar nextTick\nfunction getNextTick () {\n if (nextTick) {\n return nextTick\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask\n } else if (global.setImmediate) {\n nextTick = global.setImmediate\n } else {\n nextTick = global.setTimeout\n }\n return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out)\n })\n }, function (e) {\n getNextTick()(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n return\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","exports.publicEncrypt = require('./publicEncrypt')\nexports.privateDecrypt = require('./privateDecrypt')\n\nexports.privateEncrypt = function privateEncrypt (key, buf) {\n return exports.publicEncrypt(key, buf, true)\n}\n\nexports.publicDecrypt = function publicDecrypt (key, buf) {\n return exports.privateDecrypt(key, buf, true)\n}\n","var createHash = require('create-hash')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0)\n var i = 0\n var c\n while (t.length < len) {\n c = i2ops(i++)\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()])\n }\n return t.slice(0, len)\n}\n\nfunction i2ops (c) {\n var out = Buffer.allocUnsafe(4)\n out.writeUInt32BE(c, 0)\n return out\n}\n","var parseKeys = require('parse-asn1')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar crt = require('browserify-rsa')\nvar createHash = require('create-hash')\nvar withPublic = require('./withPublic')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function privateDecrypt (privateKey, enc, reverse) {\n var padding\n if (privateKey.padding) {\n padding = privateKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n\n var key = parseKeys(privateKey)\n var k = key.modulus.byteLength()\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error')\n }\n var msg\n if (reverse) {\n msg = withPublic(new BN(enc), key)\n } else {\n msg = crt(enc, key)\n }\n var zBuffer = Buffer.alloc(k - msg.length)\n msg = Buffer.concat([zBuffer, msg], k)\n if (padding === 4) {\n return oaep(key, msg)\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n return msg\n } else {\n throw new Error('unknown padding')\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n if (msg[0] !== 0) {\n throw new Error('decryption error')\n }\n var maskedSeed = msg.slice(1, hLen + 1)\n var maskedDb = msg.slice(hLen + 1)\n var seed = xor(maskedSeed, mgf(maskedDb, hLen))\n var db = xor(maskedDb, mgf(seed, k - hLen - 1))\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error')\n }\n var i = hLen\n while (db[i] === 0) {\n i++\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error')\n }\n return db.slice(i)\n}\n\nfunction pkcs1 (key, msg, reverse) {\n var p1 = msg.slice(0, 2)\n var i = 2\n var status = 0\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++\n break\n }\n }\n var ps = msg.slice(2, i - 1)\n\n if ((p1.toString('hex') !== '0002' && !reverse) || (p1.toString('hex') !== '0001' && reverse)) {\n status++\n }\n if (ps.length < 8) {\n status++\n }\n if (status) {\n throw new Error('decryption error')\n }\n return msg.slice(i)\n}\nfunction compare (a, b) {\n a = Buffer.from(a)\n b = Buffer.from(b)\n var dif = 0\n var len = a.length\n if (a.length !== b.length) {\n dif++\n len = Math.min(a.length, b.length)\n }\n var i = -1\n while (++i < len) {\n dif += (a[i] ^ b[i])\n }\n return dif\n}\n","var parseKeys = require('parse-asn1')\nvar randomBytes = require('randombytes')\nvar createHash = require('create-hash')\nvar mgf = require('./mgf')\nvar xor = require('./xor')\nvar BN = require('bn.js')\nvar withPublic = require('./withPublic')\nvar crt = require('browserify-rsa')\nvar Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function publicEncrypt (publicKey, msg, reverse) {\n var padding\n if (publicKey.padding) {\n padding = publicKey.padding\n } else if (reverse) {\n padding = 1\n } else {\n padding = 4\n }\n var key = parseKeys(publicKey)\n var paddedMsg\n if (padding === 4) {\n paddedMsg = oaep(key, msg)\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse)\n } else if (padding === 3) {\n paddedMsg = new BN(msg)\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus')\n }\n } else {\n throw new Error('unknown padding')\n }\n if (reverse) {\n return crt(paddedMsg, key)\n } else {\n return withPublic(paddedMsg, key)\n }\n}\n\nfunction oaep (key, msg) {\n var k = key.modulus.byteLength()\n var mLen = msg.length\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest()\n var hLen = iHash.length\n var hLen2 = 2 * hLen\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long')\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2)\n var dblen = k - hLen - 1\n var seed = randomBytes(hLen)\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen))\n var maskedSeed = xor(seed, mgf(maskedDb, hLen))\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k))\n}\nfunction pkcs1 (key, msg, reverse) {\n var mLen = msg.length\n var k = key.modulus.byteLength()\n if (mLen > k - 11) {\n throw new Error('message too long')\n }\n var ps\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff)\n } else {\n ps = nonZero(k - mLen - 3)\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k))\n}\nfunction nonZero (len) {\n var out = Buffer.allocUnsafe(len)\n var i = 0\n var cache = randomBytes(len * 2)\n var cur = 0\n var num\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2)\n cur = 0\n }\n num = cache[cur++]\n if (num) {\n out[i++] = num\n }\n }\n return out\n}\n","var BN = require('bn.js')\nvar Buffer = require('safe-buffer').Buffer\n\nfunction withPublic (paddedMsg, key) {\n return Buffer.from(paddedMsg\n .toRed(BN.mont(key.modulus))\n .redPow(new BN(key.publicExponent))\n .fromRed()\n .toArray())\n}\n\nmodule.exports = withPublic\n","module.exports = function xor (a, b) {\n var len = a.length\n var i = -1\n while (++i < len) {\n a[i] ^= b[i]\n }\n return a\n}\n","'use strict'\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295\n\nfunction oldBrowser () {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11')\n}\n\nvar Buffer = require('safe-buffer').Buffer\nvar crypto = global.crypto || global.msCrypto\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes\n} else {\n module.exports = oldBrowser\n}\n\nfunction randomBytes (size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes')\n\n var bytes = Buffer.allocUnsafe(size)\n\n if (size > 0) { // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) { // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES))\n }\n } else {\n crypto.getRandomValues(bytes)\n }\n }\n\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes)\n })\n }\n\n return bytes\n}\n","'use strict'\n\nfunction oldBrowser () {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11')\n}\nvar safeBuffer = require('safe-buffer')\nvar randombytes = require('randombytes')\nvar Buffer = safeBuffer.Buffer\nvar kBufferMaxLength = safeBuffer.kMaxLength\nvar crypto = global.crypto || global.msCrypto\nvar kMaxUint32 = Math.pow(2, 32) - 1\nfunction assertOffset (offset, length) {\n if (typeof offset !== 'number' || offset !== offset) { // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number')\n }\n\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32')\n }\n\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range')\n }\n}\n\nfunction assertSize (size, offset, length) {\n if (typeof size !== 'number' || size !== size) { // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number')\n }\n\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32')\n }\n\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small')\n }\n}\nif ((crypto && crypto.getRandomValues) || !process.browser) {\n exports.randomFill = randomFill\n exports.randomFillSync = randomFillSync\n} else {\n exports.randomFill = oldBrowser\n exports.randomFillSync = oldBrowser\n}\nfunction randomFill (buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n if (typeof offset === 'function') {\n cb = offset\n offset = 0\n size = buf.length\n } else if (typeof size === 'function') {\n cb = size\n size = buf.length - offset\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function')\n }\n assertOffset(offset, buf.length)\n assertSize(size, offset, buf.length)\n return actualFill(buf, offset, size, cb)\n}\n\nfunction actualFill (buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer\n var uint = new Uint8Array(ourBuf, offset, size)\n crypto.getRandomValues(uint)\n if (cb) {\n process.nextTick(function () {\n cb(null, buf)\n })\n return\n }\n return buf\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err)\n }\n bytes.copy(buf, offset)\n cb(null, buf)\n })\n return\n }\n var bytes = randombytes(size)\n bytes.copy(buf, offset)\n return buf\n}\nfunction randomFillSync (buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array')\n }\n\n assertOffset(offset, buf.length)\n\n if (size === undefined) size = buf.length - offset\n\n assertSize(size, offset, buf.length)\n\n return actualFill(buf, offset, size)\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","import { createElement, Component } from 'react';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\n\nvar VIEWBOX_WIDTH = 100;\r\nvar VIEWBOX_HEIGHT = 100;\r\nvar VIEWBOX_HEIGHT_HALF = 50;\r\nvar VIEWBOX_CENTER_X = 50;\r\nvar VIEWBOX_CENTER_Y = 50;\n\nfunction Path(_a) {\r\n var className = _a.className, counterClockwise = _a.counterClockwise, dashRatio = _a.dashRatio, pathRadius = _a.pathRadius, strokeWidth = _a.strokeWidth, style = _a.style;\r\n return (createElement(\"path\", { className: className, style: Object.assign({}, style, getDashStyle({ pathRadius: pathRadius, dashRatio: dashRatio, counterClockwise: counterClockwise })), d: getPathDescription({\r\n pathRadius: pathRadius,\r\n counterClockwise: counterClockwise,\r\n }), strokeWidth: strokeWidth, fillOpacity: 0 }));\r\n}\r\nfunction getPathDescription(_a) {\r\n var pathRadius = _a.pathRadius, counterClockwise = _a.counterClockwise;\r\n var radius = pathRadius;\r\n var rotation = counterClockwise ? 1 : 0;\r\n return \"\\n M \" + VIEWBOX_CENTER_X + \",\" + VIEWBOX_CENTER_Y + \"\\n m 0,-\" + radius + \"\\n a \" + radius + \",\" + radius + \" \" + rotation + \" 1 1 0,\" + 2 * radius + \"\\n a \" + radius + \",\" + radius + \" \" + rotation + \" 1 1 0,-\" + 2 * radius + \"\\n \";\r\n}\r\nfunction getDashStyle(_a) {\r\n var counterClockwise = _a.counterClockwise, dashRatio = _a.dashRatio, pathRadius = _a.pathRadius;\r\n var diameter = Math.PI * 2 * pathRadius;\r\n var gapLength = (1 - dashRatio) * diameter;\r\n return {\r\n strokeDasharray: diameter + \"px \" + diameter + \"px\",\r\n strokeDashoffset: (counterClockwise ? -gapLength : gapLength) + \"px\",\r\n };\r\n}\n\nvar CircularProgressbar = (function (_super) {\r\n __extends(CircularProgressbar, _super);\r\n function CircularProgressbar() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n CircularProgressbar.prototype.getBackgroundPadding = function () {\r\n if (!this.props.background) {\r\n return 0;\r\n }\r\n return this.props.backgroundPadding;\r\n };\r\n CircularProgressbar.prototype.getPathRadius = function () {\r\n return VIEWBOX_HEIGHT_HALF - this.props.strokeWidth / 2 - this.getBackgroundPadding();\r\n };\r\n CircularProgressbar.prototype.getPathRatio = function () {\r\n var _a = this.props, value = _a.value, minValue = _a.minValue, maxValue = _a.maxValue;\r\n var boundedValue = Math.min(Math.max(value, minValue), maxValue);\r\n return (boundedValue - minValue) / (maxValue - minValue);\r\n };\r\n CircularProgressbar.prototype.render = function () {\r\n var _a = this.props, circleRatio = _a.circleRatio, className = _a.className, classes = _a.classes, counterClockwise = _a.counterClockwise, styles = _a.styles, strokeWidth = _a.strokeWidth, text = _a.text;\r\n var pathRadius = this.getPathRadius();\r\n var pathRatio = this.getPathRatio();\r\n return (createElement(\"svg\", { className: classes.root + \" \" + className, style: styles.root, viewBox: \"0 0 \" + VIEWBOX_WIDTH + \" \" + VIEWBOX_HEIGHT, \"data-test-id\": \"CircularProgressbar\" },\r\n this.props.background ? (createElement(\"circle\", { className: classes.background, style: styles.background, cx: VIEWBOX_CENTER_X, cy: VIEWBOX_CENTER_Y, r: VIEWBOX_HEIGHT_HALF })) : null,\r\n createElement(Path, { className: classes.trail, counterClockwise: counterClockwise, dashRatio: circleRatio, pathRadius: pathRadius, strokeWidth: strokeWidth, style: styles.trail }),\r\n createElement(Path, { className: classes.path, counterClockwise: counterClockwise, dashRatio: pathRatio * circleRatio, pathRadius: pathRadius, strokeWidth: strokeWidth, style: styles.path }),\r\n text ? (createElement(\"text\", { className: classes.text, style: styles.text, x: VIEWBOX_CENTER_X, y: VIEWBOX_CENTER_Y }, text)) : null));\r\n };\r\n CircularProgressbar.defaultProps = {\r\n background: false,\r\n backgroundPadding: 0,\r\n circleRatio: 1,\r\n classes: {\r\n root: 'CircularProgressbar',\r\n trail: 'CircularProgressbar-trail',\r\n path: 'CircularProgressbar-path',\r\n text: 'CircularProgressbar-text',\r\n background: 'CircularProgressbar-background',\r\n },\r\n counterClockwise: false,\r\n className: '',\r\n maxValue: 100,\r\n minValue: 0,\r\n strokeWidth: 8,\r\n styles: {\r\n root: {},\r\n trail: {},\r\n path: {},\r\n text: {},\r\n background: {},\r\n },\r\n text: '',\r\n };\r\n return CircularProgressbar;\r\n}(Component));\n\nfunction CircularProgressbarWithChildren(props) {\r\n var children = props.children, circularProgressbarProps = __rest(props, [\"children\"]);\r\n return (createElement(\"div\", { \"data-test-id\": \"CircularProgressbarWithChildren\" },\r\n createElement(\"div\", { style: { position: 'relative', width: '100%', height: '100%' } },\r\n createElement(CircularProgressbar, __assign({}, circularProgressbarProps)),\r\n props.children ? (createElement(\"div\", { \"data-test-id\": \"CircularProgressbarWithChildren__children\", style: {\r\n position: 'absolute',\r\n width: '100%',\r\n height: '100%',\r\n marginTop: '-100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n } }, props.children)) : null)));\r\n}\n\nfunction buildStyles(_a) {\r\n var rotation = _a.rotation, strokeLinecap = _a.strokeLinecap, textColor = _a.textColor, textSize = _a.textSize, pathColor = _a.pathColor, pathTransition = _a.pathTransition, pathTransitionDuration = _a.pathTransitionDuration, trailColor = _a.trailColor, backgroundColor = _a.backgroundColor;\r\n var rotationTransform = rotation == null ? undefined : \"rotate(\" + rotation + \"turn)\";\r\n var rotationTransformOrigin = rotation == null ? undefined : 'center center';\r\n return {\r\n root: {},\r\n path: removeUndefinedValues({\r\n stroke: pathColor,\r\n strokeLinecap: strokeLinecap,\r\n transform: rotationTransform,\r\n transformOrigin: rotationTransformOrigin,\r\n transition: pathTransition,\r\n transitionDuration: pathTransitionDuration == null ? undefined : pathTransitionDuration + \"s\",\r\n }),\r\n trail: removeUndefinedValues({\r\n stroke: trailColor,\r\n strokeLinecap: strokeLinecap,\r\n transform: rotationTransform,\r\n transformOrigin: rotationTransformOrigin,\r\n }),\r\n text: removeUndefinedValues({\r\n fill: textColor,\r\n fontSize: textSize,\r\n }),\r\n background: removeUndefinedValues({\r\n fill: backgroundColor,\r\n }),\r\n };\r\n}\r\nfunction removeUndefinedValues(obj) {\r\n Object.keys(obj).forEach(function (key) {\r\n if (obj[key] == null) {\r\n delete obj[key];\r\n }\r\n });\r\n return obj;\r\n}\n\nexport { CircularProgressbar, CircularProgressbarWithChildren, buildStyles };\n//# sourceMappingURL=index.esm.js.map\n","!function(e,t){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=t(require(\"react\"));else if(\"function\"==typeof define&&define.amd)define([\"react\"],t);else{var n=\"object\"==typeof exports?t(require(\"react\")):t(e.react);for(var i in n)(\"object\"==typeof exports?exports:e)[i]=n[i]}}(this,(function(e){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=4)}([function(e,t,n){e.exports=n(2)()},function(t,n){t.exports=e},function(e,t,n){\"use strict\";var i=n(3);function r(){}function o(){}o.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,o,s){if(s!==i){var a=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw a.name=\"Invariant Violation\",a}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:r};return n.PropTypes=n,n}},function(e,t,n){\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},function(e,t,n){\"use strict\";n.r(t);var i=n(1),r=n.n(i),o=n(0),s=n.n(o),a=function(e){return 0!==e};function l(e){return(l=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function c(){return(c=Object.assign||function(e){for(var t=1;t= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nvar ReCAPTCHA =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReCAPTCHA, _React$Component);\n\n function ReCAPTCHA() {\n var _this;\n\n _this = _React$Component.call(this) || this;\n _this.handleExpired = _this.handleExpired.bind(_assertThisInitialized(_this));\n _this.handleErrored = _this.handleErrored.bind(_assertThisInitialized(_this));\n _this.handleChange = _this.handleChange.bind(_assertThisInitialized(_this));\n _this.handleRecaptchaRef = _this.handleRecaptchaRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = ReCAPTCHA.prototype;\n\n _proto.getValue = function getValue() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this.props.grecaptcha.getResponse(this._widgetId);\n }\n\n return null;\n };\n\n _proto.getWidgetId = function getWidgetId() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this._widgetId;\n }\n\n return null;\n };\n\n _proto.execute = function execute() {\n var grecaptcha = this.props.grecaptcha;\n\n if (grecaptcha && this._widgetId !== undefined) {\n return grecaptcha.execute(this._widgetId);\n } else {\n this._executeRequested = true;\n }\n };\n\n _proto.executeAsync = function executeAsync() {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n _this2.executionResolve = resolve;\n _this2.executionReject = reject;\n\n _this2.execute();\n });\n };\n\n _proto.reset = function reset() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n this.props.grecaptcha.reset(this._widgetId);\n }\n };\n\n _proto.handleExpired = function handleExpired() {\n if (this.props.onExpired) {\n this.props.onExpired();\n } else {\n this.handleChange(null);\n }\n };\n\n _proto.handleErrored = function handleErrored() {\n if (this.props.onErrored) {\n this.props.onErrored();\n }\n\n if (this.executionReject) {\n this.executionReject();\n delete this.executionResolve;\n delete this.executionReject;\n }\n };\n\n _proto.handleChange = function handleChange(token) {\n if (this.props.onChange) {\n this.props.onChange(token);\n }\n\n if (this.executionResolve) {\n this.executionResolve(token);\n delete this.executionReject;\n delete this.executionResolve;\n }\n };\n\n _proto.explicitRender = function explicitRender() {\n if (this.props.grecaptcha && this.props.grecaptcha.render && this._widgetId === undefined) {\n var wrapper = document.createElement(\"div\");\n this._widgetId = this.props.grecaptcha.render(wrapper, {\n sitekey: this.props.sitekey,\n callback: this.handleChange,\n theme: this.props.theme,\n type: this.props.type,\n tabindex: this.props.tabindex,\n \"expired-callback\": this.handleExpired,\n \"error-callback\": this.handleErrored,\n size: this.props.size,\n stoken: this.props.stoken,\n hl: this.props.hl,\n badge: this.props.badge\n });\n this.captcha.appendChild(wrapper);\n }\n\n if (this._executeRequested && this.props.grecaptcha && this._widgetId !== undefined) {\n this._executeRequested = false;\n this.execute();\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.explicitRender();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.explicitRender();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._widgetId !== undefined) {\n this.delayOfCaptchaIframeRemoving();\n this.reset();\n }\n };\n\n _proto.delayOfCaptchaIframeRemoving = function delayOfCaptchaIframeRemoving() {\n var temporaryNode = document.createElement(\"div\");\n document.body.appendChild(temporaryNode);\n temporaryNode.style.display = \"none\"; // move of the recaptcha to a temporary node\n\n while (this.captcha.firstChild) {\n temporaryNode.appendChild(this.captcha.firstChild);\n } // delete the temporary node after reset will be done\n\n\n setTimeout(function () {\n document.body.removeChild(temporaryNode);\n }, 5000);\n };\n\n _proto.handleRecaptchaRef = function handleRecaptchaRef(elem) {\n this.captcha = elem;\n };\n\n _proto.render = function render() {\n // consume properties owned by the reCATPCHA, pass the rest to the div so the user can style it.\n\n /* eslint-disable no-unused-vars */\n var _this$props = this.props,\n sitekey = _this$props.sitekey,\n onChange = _this$props.onChange,\n theme = _this$props.theme,\n type = _this$props.type,\n tabindex = _this$props.tabindex,\n onExpired = _this$props.onExpired,\n onErrored = _this$props.onErrored,\n size = _this$props.size,\n stoken = _this$props.stoken,\n grecaptcha = _this$props.grecaptcha,\n badge = _this$props.badge,\n hl = _this$props.hl,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"sitekey\", \"onChange\", \"theme\", \"type\", \"tabindex\", \"onExpired\", \"onErrored\", \"size\", \"stoken\", \"grecaptcha\", \"badge\", \"hl\"]);\n /* eslint-enable no-unused-vars */\n\n\n return React.createElement(\"div\", _extends({}, childProps, {\n ref: this.handleRecaptchaRef\n }));\n };\n\n return ReCAPTCHA;\n}(React.Component);\n\nexport { ReCAPTCHA as default };\nReCAPTCHA.displayName = \"ReCAPTCHA\";\nReCAPTCHA.propTypes = {\n sitekey: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n grecaptcha: PropTypes.object,\n theme: PropTypes.oneOf([\"dark\", \"light\"]),\n type: PropTypes.oneOf([\"image\", \"audio\"]),\n tabindex: PropTypes.number,\n onExpired: PropTypes.func,\n onErrored: PropTypes.func,\n size: PropTypes.oneOf([\"compact\", \"normal\", \"invisible\"]),\n stoken: PropTypes.string,\n hl: PropTypes.string,\n badge: PropTypes.oneOf([\"bottomright\", \"bottomleft\", \"inline\"])\n};\nReCAPTCHA.defaultProps = {\n onChange: function onChange() {},\n theme: \"light\",\n type: \"image\",\n tabindex: 0,\n size: \"normal\",\n badge: \"bottomright\"\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nimport { Component, createElement, forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nvar SCRIPT_MAP = {}; // A counter used to generate a unique id for each component that uses the function\n\nvar idCount = 0;\nexport default function makeAsyncScript(getScriptURL, options) {\n options = options || {};\n return function wrapWithAsyncScript(WrappedComponent) {\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || \"Component\";\n\n var AsyncScriptLoader =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(AsyncScriptLoader, _Component);\n\n function AsyncScriptLoader(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this.state = {};\n _this.__scriptURL = \"\";\n return _this;\n }\n\n var _proto = AsyncScriptLoader.prototype;\n\n _proto.asyncScriptLoaderGetScriptLoaderID = function asyncScriptLoaderGetScriptLoaderID() {\n if (!this.__scriptLoaderID) {\n this.__scriptLoaderID = \"async-script-loader-\" + idCount++;\n }\n\n return this.__scriptLoaderID;\n };\n\n _proto.setupScriptURL = function setupScriptURL() {\n this.__scriptURL = typeof getScriptURL === \"function\" ? getScriptURL() : getScriptURL;\n return this.__scriptURL;\n };\n\n _proto.asyncScriptLoaderHandleLoad = function asyncScriptLoaderHandleLoad(state) {\n var _this2 = this;\n\n // use reacts setState callback to fire props.asyncScriptOnLoad with new state/entry\n this.setState(state, function () {\n return _this2.props.asyncScriptOnLoad && _this2.props.asyncScriptOnLoad(_this2.state);\n });\n };\n\n _proto.asyncScriptLoaderTriggerOnScriptLoaded = function asyncScriptLoaderTriggerOnScriptLoaded() {\n var mapEntry = SCRIPT_MAP[this.__scriptURL];\n\n if (!mapEntry || !mapEntry.loaded) {\n throw new Error(\"Script is not loaded.\");\n }\n\n for (var obsKey in mapEntry.observers) {\n mapEntry.observers[obsKey](mapEntry);\n }\n\n delete window[options.callbackName];\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this3 = this;\n\n var scriptURL = this.setupScriptURL();\n var key = this.asyncScriptLoaderGetScriptLoaderID();\n var _options = options,\n globalName = _options.globalName,\n callbackName = _options.callbackName,\n scriptId = _options.scriptId; // check if global object already attached to window\n\n if (globalName && typeof window[globalName] !== \"undefined\") {\n SCRIPT_MAP[scriptURL] = {\n loaded: true,\n observers: {}\n };\n } // check if script loading already\n\n\n if (SCRIPT_MAP[scriptURL]) {\n var entry = SCRIPT_MAP[scriptURL]; // if loaded or errored then \"finish\"\n\n if (entry && (entry.loaded || entry.errored)) {\n this.asyncScriptLoaderHandleLoad(entry);\n return;\n } // if still loading then callback to observer queue\n\n\n entry.observers[key] = function (entry) {\n return _this3.asyncScriptLoaderHandleLoad(entry);\n };\n\n return;\n }\n /*\n * hasn't started loading\n * start the \"magic\"\n * setup script to load and observers\n */\n\n\n var observers = {};\n\n observers[key] = function (entry) {\n return _this3.asyncScriptLoaderHandleLoad(entry);\n };\n\n SCRIPT_MAP[scriptURL] = {\n loaded: false,\n observers: observers\n };\n var script = document.createElement(\"script\");\n script.src = scriptURL;\n script.async = true;\n\n for (var attribute in options.attributes) {\n script.setAttribute(attribute, options.attributes[attribute]);\n }\n\n if (scriptId) {\n script.id = scriptId;\n }\n\n var callObserverFuncAndRemoveObserver = function callObserverFuncAndRemoveObserver(func) {\n if (SCRIPT_MAP[scriptURL]) {\n var mapEntry = SCRIPT_MAP[scriptURL];\n var observersMap = mapEntry.observers;\n\n for (var obsKey in observersMap) {\n if (func(observersMap[obsKey])) {\n delete observersMap[obsKey];\n }\n }\n }\n };\n\n if (callbackName && typeof window !== \"undefined\") {\n window[callbackName] = function () {\n return _this3.asyncScriptLoaderTriggerOnScriptLoaded();\n };\n }\n\n script.onload = function () {\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n mapEntry.loaded = true;\n callObserverFuncAndRemoveObserver(function (observer) {\n if (callbackName) {\n return false;\n }\n\n observer(mapEntry);\n return true;\n });\n }\n };\n\n script.onerror = function () {\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n mapEntry.errored = true;\n callObserverFuncAndRemoveObserver(function (observer) {\n observer(mapEntry);\n return true;\n });\n }\n };\n\n document.body.appendChild(script);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n // Remove tag script\n var scriptURL = this.__scriptURL;\n\n if (options.removeOnUnmount === true) {\n var allScripts = document.getElementsByTagName(\"script\");\n\n for (var i = 0; i < allScripts.length; i += 1) {\n if (allScripts[i].src.indexOf(scriptURL) > -1) {\n if (allScripts[i].parentNode) {\n allScripts[i].parentNode.removeChild(allScripts[i]);\n }\n }\n }\n } // Clean the observer entry\n\n\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n delete mapEntry.observers[this.asyncScriptLoaderGetScriptLoaderID()];\n\n if (options.removeOnUnmount === true) {\n delete SCRIPT_MAP[scriptURL];\n }\n }\n };\n\n _proto.render = function render() {\n var globalName = options.globalName; // remove asyncScriptOnLoad from childProps\n\n var _this$props = this.props,\n asyncScriptOnLoad = _this$props.asyncScriptOnLoad,\n forwardedRef = _this$props.forwardedRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"asyncScriptOnLoad\", \"forwardedRef\"]); // eslint-disable-line no-unused-vars\n\n\n if (globalName && typeof window !== \"undefined\") {\n childProps[globalName] = typeof window[globalName] !== \"undefined\" ? window[globalName] : undefined;\n }\n\n childProps.ref = forwardedRef;\n return createElement(WrappedComponent, childProps);\n };\n\n return AsyncScriptLoader;\n }(Component); // Note the second param \"ref\" provided by React.forwardRef.\n // We can pass it along to AsyncScriptLoader as a regular prop, e.g. \"forwardedRef\"\n // And it can then be attached to the Component.\n\n\n var ForwardedComponent = forwardRef(function (props, ref) {\n return createElement(AsyncScriptLoader, _extends({}, props, {\n forwardedRef: ref\n }));\n });\n ForwardedComponent.displayName = \"AsyncScriptLoader(\" + wrappedComponentName + \")\";\n ForwardedComponent.propTypes = {\n asyncScriptOnLoad: PropTypes.func\n };\n return hoistStatics(ForwardedComponent, WrappedComponent);\n };\n}","import ReCAPTCHA from \"./recaptcha\";\nimport makeAsyncScriptLoader from \"react-async-script\";\nvar callbackName = \"onloadcallback\";\nvar globalName = \"grecaptcha\";\n\nfunction getOptions() {\n return typeof window !== \"undefined\" && window.recaptchaOptions || {};\n}\n\nfunction getURL() {\n var dynamicOptions = getOptions();\n var hostname = dynamicOptions.useRecaptchaNet ? \"recaptcha.net\" : \"www.google.com\";\n return \"https://\" + hostname + \"/recaptcha/api.js?onload=\" + callbackName + \"&render=explicit\";\n}\n\nexport default makeAsyncScriptLoader(getURL, {\n callbackName: callbackName,\n globalName: globalName\n})(ReCAPTCHA);","import RecaptchaWrapper from \"./recaptcha-wrapper\";\nimport ReCAPTCHA from \"./recaptcha\";\nexport default RecaptchaWrapper;\nexport { ReCAPTCHA };","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","import * as React from 'react';\nimport { useEffect } from 'react';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar observerMap = new Map();\nvar RootIds = new WeakMap();\nvar rootId = 0;\nvar unsupportedValue = undefined;\n/**\r\n * What should be the default behavior if the IntersectionObserver is unsupported?\r\n * Ideally the polyfill has been loaded, you can have the following happen:\r\n * - `undefined`: Throw an error\r\n * - `true` or `false`: Set the `inView` value to this regardless of intersection state\r\n * **/\n\nfunction defaultFallbackInView(inView) {\n unsupportedValue = inView;\n}\n/**\r\n * Generate a unique ID for the root element\r\n * @param root\r\n */\n\nfunction getRootId(root) {\n if (!root) return '0';\n if (RootIds.has(root)) return RootIds.get(root);\n rootId += 1;\n RootIds.set(root, rootId.toString());\n return RootIds.get(root);\n}\n/**\r\n * Convert the options to a string Id, based on the values.\r\n * Ensures we can reuse the same observer when observing elements with the same options.\r\n * @param options\r\n */\n\n\nfunction optionsToId(options) {\n return Object.keys(options).sort().filter(function (key) {\n return options[key] !== undefined;\n }).map(function (key) {\n return key + \"_\" + (key === 'root' ? getRootId(options.root) : options[key]);\n }).toString();\n}\n\nfunction createObserver(options) {\n // Create a unique ID for this observer instance, based on the root, root margin and threshold.\n var id = optionsToId(options);\n var instance = observerMap.get(id);\n\n if (!instance) {\n // Create a map of elements this observer is going to observe. Each element has a list of callbacks that should be triggered, once it comes into view.\n var elements = new Map();\n var thresholds;\n var observer = new IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n var _elements$get;\n\n // While it would be nice if you could just look at isIntersecting to determine if the component is inside the viewport, browsers can't agree on how to use it.\n // -Firefox ignores `threshold` when considering `isIntersecting`, so it will never be false again if `threshold` is > 0\n var inView = entry.isIntersecting && thresholds.some(function (threshold) {\n return entry.intersectionRatio >= threshold;\n }); // @ts-ignore support IntersectionObserver v2\n\n if (options.trackVisibility && typeof entry.isVisible === 'undefined') {\n // The browser doesn't support Intersection Observer v2, falling back to v1 behavior.\n // @ts-ignore\n entry.isVisible = inView;\n }\n\n (_elements$get = elements.get(entry.target)) == null ? void 0 : _elements$get.forEach(function (callback) {\n callback(inView, entry);\n });\n });\n }, options); // Ensure we have a valid thresholds array. If not, use the threshold from the options\n\n thresholds = observer.thresholds || (Array.isArray(options.threshold) ? options.threshold : [options.threshold || 0]);\n instance = {\n id: id,\n observer: observer,\n elements: elements\n };\n observerMap.set(id, instance);\n }\n\n return instance;\n}\n/**\r\n * @param element - DOM Element to observe\r\n * @param callback - Callback function to trigger when intersection status changes\r\n * @param options - Intersection Observer options\r\n * @param fallbackInView - Fallback inView value.\r\n * @return Function - Cleanup function that should be triggered to unregister the observer\r\n */\n\n\nfunction observe(element, callback, options, fallbackInView) {\n if (options === void 0) {\n options = {};\n }\n\n if (fallbackInView === void 0) {\n fallbackInView = unsupportedValue;\n }\n\n if (typeof window.IntersectionObserver === 'undefined' && fallbackInView !== undefined) {\n var bounds = element.getBoundingClientRect();\n callback(fallbackInView, {\n isIntersecting: fallbackInView,\n target: element,\n intersectionRatio: typeof options.threshold === 'number' ? options.threshold : 0,\n time: 0,\n boundingClientRect: bounds,\n intersectionRect: bounds,\n rootBounds: bounds\n });\n return function () {// Nothing to cleanup\n };\n } // An observer with the same options can be reused, so lets use this fact\n\n\n var _createObserver = createObserver(options),\n id = _createObserver.id,\n observer = _createObserver.observer,\n elements = _createObserver.elements; // Register the callback listener for this element\n\n\n var callbacks = elements.get(element) || [];\n\n if (!elements.has(element)) {\n elements.set(element, callbacks);\n }\n\n callbacks.push(callback);\n observer.observe(element);\n return function unobserve() {\n // Remove the callback from the callback list\n callbacks.splice(callbacks.indexOf(callback), 1);\n\n if (callbacks.length === 0) {\n // No more callback exists for element, so destroy it\n elements[\"delete\"](element);\n observer.unobserve(element);\n }\n\n if (elements.size === 0) {\n // No more elements are being observer by this instance, so destroy it\n observer.disconnect();\n observerMap[\"delete\"](id);\n }\n };\n}\n\nvar _excluded = [\"children\", \"as\", \"triggerOnce\", \"threshold\", \"root\", \"rootMargin\", \"onChange\", \"skip\", \"trackVisibility\", \"delay\", \"initialInView\", \"fallbackInView\"];\n\nfunction isPlainChildren(props) {\n return typeof props.children !== 'function';\n}\n/**\r\n ## Render props\r\n\n To use the `` component, you pass it a function. It will be called\r\n whenever the state changes, with the new value of `inView`. In addition to the\r\n `inView` prop, children also receive a `ref` that should be set on the\r\n containing DOM element. This is the element that the IntersectionObserver will\r\n monitor.\r\n\n If you need it, you can also access the\r\n [`IntersectionObserverEntry`](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry)\r\n on `entry`, giving you access to all the details about the current intersection\r\n state.\r\n\n ```jsx\r\n import { InView } from 'react-intersection-observer';\r\n\n const Component = () => (\r\n \r\n {({ inView, ref, entry }) => (\r\n
\r\n

{`Header inside viewport ${inView}.`}

\r\n
\r\n )}\r\n
\r\n );\r\n\n export default Component;\r\n ```\r\n\n ## Plain children\r\n\n You can pass any element to the ``, and it will handle creating the\r\n wrapping DOM element. Add a handler to the `onChange` method, and control the\r\n state in your own component. Any extra props you add to `` will be\r\n passed to the HTML element, allowing you set the `className`, `style`, etc.\r\n\n ```jsx\r\n import { InView } from 'react-intersection-observer';\r\n\n const Component = () => (\r\n console.log('Inview:', inView)}>\r\n

Plain children are always rendered. Use onChange to monitor state.

\r\n
\r\n );\r\n\n export default Component;\r\n ```\r\n */\n\n\nvar InView = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(InView, _React$Component);\n\n function InView(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.node = null;\n _this._unobserveCb = null;\n\n _this.handleNode = function (node) {\n if (_this.node) {\n // Clear the old observer, before we start observing a new element\n _this.unobserve();\n\n if (!node && !_this.props.triggerOnce && !_this.props.skip) {\n // Reset the state if we get a new node, and we aren't ignoring updates\n _this.setState({\n inView: !!_this.props.initialInView,\n entry: undefined\n });\n }\n }\n\n _this.node = node ? node : null;\n\n _this.observeNode();\n };\n\n _this.handleChange = function (inView, entry) {\n if (inView && _this.props.triggerOnce) {\n // If `triggerOnce` is true, we should stop observing the element.\n _this.unobserve();\n }\n\n if (!isPlainChildren(_this.props)) {\n // Store the current State, so we can pass it to the children in the next render update\n // There's no reason to update the state for plain children, since it's not used in the rendering.\n _this.setState({\n inView: inView,\n entry: entry\n });\n }\n\n if (_this.props.onChange) {\n // If the user is actively listening for onChange, always trigger it\n _this.props.onChange(inView, entry);\n }\n };\n\n _this.state = {\n inView: !!props.initialInView,\n entry: undefined\n };\n return _this;\n }\n\n var _proto = InView.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n // If a IntersectionObserver option changed, reinit the observer\n if (prevProps.rootMargin !== this.props.rootMargin || prevProps.root !== this.props.root || prevProps.threshold !== this.props.threshold || prevProps.skip !== this.props.skip || prevProps.trackVisibility !== this.props.trackVisibility || prevProps.delay !== this.props.delay) {\n this.unobserve();\n this.observeNode();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.unobserve();\n this.node = null;\n };\n\n _proto.observeNode = function observeNode() {\n if (!this.node || this.props.skip) return;\n var _this$props = this.props,\n threshold = _this$props.threshold,\n root = _this$props.root,\n rootMargin = _this$props.rootMargin,\n trackVisibility = _this$props.trackVisibility,\n delay = _this$props.delay,\n fallbackInView = _this$props.fallbackInView;\n this._unobserveCb = observe(this.node, this.handleChange, {\n threshold: threshold,\n root: root,\n rootMargin: rootMargin,\n // @ts-ignore\n trackVisibility: trackVisibility,\n // @ts-ignore\n delay: delay\n }, fallbackInView);\n };\n\n _proto.unobserve = function unobserve() {\n if (this._unobserveCb) {\n this._unobserveCb();\n\n this._unobserveCb = null;\n }\n };\n\n _proto.render = function render() {\n if (!isPlainChildren(this.props)) {\n var _this$state = this.state,\n inView = _this$state.inView,\n entry = _this$state.entry;\n return this.props.children({\n inView: inView,\n entry: entry,\n ref: this.handleNode\n });\n }\n\n var _this$props2 = this.props,\n children = _this$props2.children,\n as = _this$props2.as,\n props = _objectWithoutPropertiesLoose(_this$props2, _excluded);\n\n return /*#__PURE__*/React.createElement(as || 'div', _extends({\n ref: this.handleNode\n }, props), children);\n };\n\n return InView;\n}(React.Component);\nInView.displayName = 'InView';\nInView.defaultProps = {\n threshold: 0,\n triggerOnce: false,\n initialInView: false\n};\n\n/**\r\n * React Hooks make it easy to monitor the `inView` state of your components. Call\r\n * the `useInView` hook with the (optional) [options](#options) you need. It will\r\n * return an array containing a `ref`, the `inView` status and the current\r\n * [`entry`](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry).\r\n * Assign the `ref` to the DOM element you want to monitor, and the hook will\r\n * report the status.\r\n *\r\n * @example\r\n * ```jsx\r\n * import React from 'react';\r\n * import { useInView } from 'react-intersection-observer';\r\n *\r\n * const Component = () => {\r\n * const { ref, inView, entry } = useInView({\r\n * threshold: 0,\r\n * });\r\n *\r\n * return (\r\n *
\r\n *

{`Header inside viewport ${inView}.`}

\r\n *
\r\n * );\r\n * };\r\n * ```\r\n */\n\nfunction useInView(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n threshold = _ref.threshold,\n delay = _ref.delay,\n trackVisibility = _ref.trackVisibility,\n rootMargin = _ref.rootMargin,\n root = _ref.root,\n triggerOnce = _ref.triggerOnce,\n skip = _ref.skip,\n initialInView = _ref.initialInView,\n fallbackInView = _ref.fallbackInView;\n\n var unobserve = React.useRef();\n\n var _React$useState = React.useState({\n inView: !!initialInView\n }),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n var setRef = React.useCallback(function (node) {\n if (unobserve.current !== undefined) {\n unobserve.current();\n unobserve.current = undefined;\n } // Skip creating the observer\n\n\n if (skip) return;\n\n if (node) {\n unobserve.current = observe(node, function (inView, entry) {\n setState({\n inView: inView,\n entry: entry\n });\n\n if (entry.isIntersecting && triggerOnce && unobserve.current) {\n // If it should only trigger once, unobserve the element after it's inView\n unobserve.current();\n unobserve.current = undefined;\n }\n }, {\n root: root,\n rootMargin: rootMargin,\n threshold: threshold,\n // @ts-ignore\n trackVisibility: trackVisibility,\n // @ts-ignore\n delay: delay\n }, fallbackInView);\n }\n }, // We break the rule here, because we aren't including the actual `threshold` variable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [// If the threshold is an array, convert it to a string so it won't change between renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n Array.isArray(threshold) ? threshold.toString() : threshold, root, rootMargin, triggerOnce, skip, trackVisibility, fallbackInView, delay]);\n /* eslint-disable-next-line */\n\n useEffect(function () {\n if (!unobserve.current && state.entry && !triggerOnce && !skip) {\n // If we don't have a ref, then reset the state (unless the hook is set to only `triggerOnce` or `skip`)\n // This ensures we correctly reflect the current state - If you aren't observing anything, then nothing is inView\n setState({\n inView: !!initialInView\n });\n }\n });\n var result = [setRef, state.inView, state.entry]; // Support object destructuring, by adding the specific values.\n\n result.ref = result[0];\n result.inView = result[1];\n result.entry = result[2];\n return result;\n}\n\nexport { InView, InView as default, defaultFallbackInView, observe, useInView };\n//# sourceMappingURL=react-intersection-observer.m.js.map\n","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nexport default function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nexport var keys = function keys(obj) {\n return obj === Object(obj) ? Object.keys(obj) : [];\n};\nexport var values = function values(obj) {\n return obj === Object(obj) ? Object.values(obj) : [];\n};\n\nfunction mergeDeep(target, source) {\n var output = Object.assign({}, target);\n\n if (isPlainObject(target) && isPlainObject(source)) {\n keys(source).forEach(function (key) {\n if (isPlainObject(source[key])) {\n if (!(key in target)) Object.assign(output, _defineProperty({}, key, source[key]));else output[key] = mergeDeep(target[key], source[key]);\n } else {\n Object.assign(output, _defineProperty({}, key, source[key]));\n }\n });\n }\n\n return output;\n}\n\nexport var merge = function merge(target) {\n for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n sources[_key - 1] = arguments[_key];\n }\n\n return sources.reduce(function (t, s) {\n return mergeDeep(t, s);\n }, target);\n};\nexport var identity = function identity(value) {\n return value;\n};\nexport var omit = function omit(obj, keys) {\n var other = Object.assign({}, obj);\n\n if (keys) {\n for (var i = 0; i < keys.length; i++) {\n delete other[keys[i]];\n }\n }\n\n return other;\n};\nexport var isPlainObject = function isPlainObject(obj) {\n return obj === Object(obj) && !(obj instanceof Date) && !Array.isArray(obj);\n};\nexport var compact = function compact(arr) {\n return (arr || []).filter(Boolean);\n};","export var isModifier = function isModifier(key) {\n return key[0] === '&';\n};\nexport var isElement = function isElement(key) {\n return !isModifier(key);\n};","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport { keys, merge, omit, values } from './utils';\nimport { isModifier } from './filterKeys';\n\nvar camelize = function camelize(key) {\n return key.replace(/-(\\w)/g, function (m, c) {\n return c.toUpperCase();\n });\n};\n\nexport var pickDirectStyles = function pickDirectStyles(style) {\n var objectPropertiesWhitelist = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var styleKeys = keys(style);\n var result = {};\n\n for (var i = 0, l = styleKeys.length; i < l; i += 1) {\n var key = styleKeys[i];\n var isDirect = Object.prototype.toString.call(style[key]) !== '[object Object]' || // style defs\n key[0] === ':' || // pseudo selectors\n key[0] === '@' || // @media / @keyframes / @supports / @font-face\n objectPropertiesWhitelist.indexOf(key) >= 0; // whitelisted object-type properties\n\n if (isDirect) {\n result[key] = style[key];\n }\n }\n\n return result;\n};\nexport var pickNestedStyles = function pickNestedStyles(style, keysToPick) {\n var camelizedKeysToPick = keysToPick.map(camelize);\n var styleKeys = keys(style);\n var result = {};\n\n for (var i = 0, l = styleKeys.length; i < l; i += 1) {\n var key = styleKeys[i];\n\n if (keysToPick.indexOf(key) >= 0 || camelizedKeysToPick.indexOf(camelize(key)) >= 0) {\n result[key] = style[key];\n }\n }\n\n return result;\n}; // breadth-first hoisting of selected modifier style subtrees\n// does not traverse into element, :pseudo-selector or @directive subtrees\n\nexport var hoistModifierStylesRecursive = function hoistModifierStylesRecursive(style, modifierKeysToPick) {\n // hoist styles for selected modifiers on current level\n var result = merge.apply(void 0, [{}, omit(style, modifierKeysToPick)].concat(_toConsumableArray(values(pickNestedStyles(style, modifierKeysToPick))))); // traverse nested styled for ALL modifiers\n\n var modifierKeys = keys(result).filter(isModifier);\n\n for (var i = 0, l = modifierKeys.length; i < l; i += 1) {\n var key = modifierKeys[i];\n var subresult = hoistModifierStylesRecursive(result[key], modifierKeysToPick);\n\n if (modifierKeysToPick.indexOf(key) >= 0) {\n // selected modifier: hoist subresult\n delete result[key];\n result = merge({}, result, subresult);\n } else {\n // non-selected modifier: replace with subresult\n result[key] = subresult;\n }\n }\n\n return result;\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { pickDirectStyles } from './pickStyles';\n// many css-in-js libs process keyframes objects as the value for `animationName`\nvar defaultObjectPropsWhitelist = ['animationName'];\n\nvar defaultPropsDecorator = function defaultPropsDecorator(_ref) {\n var style = _ref.style,\n className = _ref.className;\n return _objectSpread(_objectSpread({}, style ? {\n style: pickDirectStyles(style, defaultObjectPropsWhitelist)\n } : {}), className ? {\n className: className\n } : {});\n};\n\nexport default defaultPropsDecorator;","import { createContext } from 'react';\nimport defaultPropsDecorator from './defaultPropsDecorator';\nexport var PropsDecoratorContext = /*#__PURE__*/createContext(defaultPropsDecorator);\nexport default PropsDecoratorContext.Provider;","import { keys } from './utils';\n\nvar coerceSelection = function coerceSelection(select) {\n if (!select) {\n return [];\n } else if (typeof select === 'string') {\n return [select];\n } else if (!Array.isArray(select)) {\n var objSelect = select; // workaround for https://github.com/facebook/flow/issues/5781\n\n return keys(select).reduce(function (acc, key) {\n return acc.concat(objSelect[key] ? [key] : []);\n }, []);\n }\n\n return select;\n};\n\nexport default coerceSelection;","import coerceSelection from './coerceSelection';\nvar EMPTY = {};\n\nvar memoize = function memoize(substyle) {\n return function (select, defaultStyle) {\n var cacheKey = defaultStyle || EMPTY;\n substyle.memoize = substyle.memoize || new WeakMap();\n var mapEntry;\n\n if (!substyle.memoize.has(cacheKey)) {\n mapEntry = {};\n substyle.memoize.set(cacheKey, mapEntry);\n } else {\n mapEntry = substyle.memoize.get(cacheKey);\n }\n\n var selectHash = coerceSelection(select).join(' ');\n return selectHash in mapEntry ? mapEntry[selectHash] : mapEntry[selectHash] = substyle(select || [], defaultStyle);\n };\n};\n\nexport default memoize;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport invariant from 'invariant';\nimport coerceSelection from './coerceSelection';\nimport defaultPropsDecorator from './defaultPropsDecorator';\nimport { isElement, isModifier } from './filterKeys';\nimport memoize from './memoize';\nimport { hoistModifierStylesRecursive, pickNestedStyles } from './pickStyles';\nimport { compact, isPlainObject, keys, merge, values } from './utils';\n\nvar guessBaseClassName = function guessBaseClassName(classNames) {\n // all class names must start with the same prefix: the component's base class name\n // which will finally go to the container element\n var firstKey = classNames && keys(classNames)[0];\n return firstKey && firstKey.split('__')[0].split('--')[0];\n};\n\nvar deriveClassNames = function deriveClassNames(className, elementKeys, modifierKeys) {\n // do not derive class names, if the user did not specify any class name\n if (!className) {\n return undefined;\n } // derive class names based using the passed modifier/element keys\n\n\n var firstClassName = className.split(' ')[0];\n var derivedClassNames = [].concat(_toConsumableArray(elementKeys.length === 0 ? modifierKeys.map(function (key) {\n return \"\".concat(firstClassName, \"--\").concat(key.substring(1));\n }) : []), _toConsumableArray(elementKeys.map(function (key) {\n return \"\".concat(firstClassName, \"__\").concat(key);\n }))); // also use the provided `className` if there is no sub-element selection\n\n return elementKeys.length === 0 ? [className].concat(_toConsumableArray(derivedClassNames)) : derivedClassNames;\n};\n\nfunction createSubstyle(_ref) {\n var style = _ref.style,\n className = _ref.className,\n classNames = _ref.classNames;\n var propsDecorator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultPropsDecorator;\n var baseClassName = className || guessBaseClassName(classNames) || (style === null || style === void 0 ? void 0 : style.className);\n var substyle = typeof style === 'function' ? style : memoize(function (select, defaultStyle) {\n var selectedKeys = coerceSelection(select);\n invariant(Array.isArray(selectedKeys), 'First parameter must be a string, an array of strings, ' + 'a plain object with boolean values, or a falsy value.');\n invariant(!defaultStyle || isPlainObject(defaultStyle), 'Optional second parameter must be a plain object.');\n var modifierKeys = selectedKeys.filter(isModifier);\n var elementKeys = selectedKeys.filter(isElement);\n var collectElementStyles = elementKeys.length > 0 ? function (fromStyle) {\n return values(pickNestedStyles(fromStyle, elementKeys));\n } : function (fromStyle) {\n return [fromStyle];\n };\n\n var collectSelectedStyles = function collectSelectedStyles() {\n var fromStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return collectElementStyles(hoistModifierStylesRecursive(fromStyle, modifierKeys));\n };\n\n var derivedClassNames = deriveClassNames(baseClassName, elementKeys, modifierKeys);\n return createSubstyle(_objectSpread(_objectSpread(_objectSpread({}, (style || defaultStyle) && {\n style: merge.apply(void 0, [{}].concat(_toConsumableArray(collectSelectedStyles(defaultStyle)), _toConsumableArray(collectSelectedStyles(style))))\n }), derivedClassNames && {\n className: derivedClassNames.join(' ')\n }), classNames && {\n classNames: classNames\n }), propsDecorator);\n });\n\n var styleProps = _objectSpread({}, typeof style === 'function' ? style : {\n style: style\n });\n\n var classNameSplit = _toConsumableArray(new Set([].concat(_toConsumableArray(styleProps.className ? styleProps.className.split(' ') : []), _toConsumableArray(baseClassName ? baseClassName.split(' ') : []))));\n\n var mappedClassNames = classNames ? compact(classNameSplit.map(function (singleClassName) {\n return classNames[singleClassName];\n })) : classNameSplit;\n var propsForSpread = propsDecorator(_objectSpread(_objectSpread({}, styleProps), mappedClassNames.length > 0 ? {\n className: mappedClassNames.join(' ')\n } : {})); // assign `style`, `className`, and/or any props added by the decorator to the return function object\n\n Object.assign(substyle, propsForSpread);\n return substyle;\n}\n\nexport default createSubstyle;","import { useContext, useMemo } from 'react';\nimport { PropsDecoratorContext } from './PropsDecoratorProvider';\nimport createSubstyle from './createSubstyle';\n\nvar useStyles = function useStyles(defaultStyle, _ref, modifiers) {\n var style = _ref.style,\n className = _ref.className,\n classNames = _ref.classNames;\n var propsDecorator = useContext(PropsDecoratorContext);\n var substyle = useMemo(function () {\n return createSubstyle({\n style: style,\n className: className,\n classNames: classNames\n }, propsDecorator);\n }, [style, className, classNames, propsDecorator]);\n return substyle(modifiers, defaultStyle);\n};\n\nexport default useStyles;","import PropsDecoratorProvider, { PropsDecoratorContext } from './PropsDecoratorProvider';\nimport createSubstyle from './createSubstyle';\nimport defaultPropsDecorator from './defaultPropsDecorator';\nimport inline from './inline';\nimport useStyles from './useStyles';\nexport { createSubstyle, PropsDecoratorProvider, PropsDecoratorContext, defaultPropsDecorator, inline };\nexport default useStyles;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar inline = function inline() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return args.reduce(function (result, arg) {\n return _objectSpread(_objectSpread(_objectSpread({}, result), typeof arg === 'function' ? arg : {}), {}, {\n style: _objectSpread(_objectSpread({}, result.style), typeof arg === 'function' ? arg.style : arg)\n });\n }, {});\n};\n\nexport default inline;","import _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { Children, Component } from 'react';\nimport invariant from 'invariant';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport useStyles, { inline } from 'substyle';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\n\n// escape RegExp special characters https://stackoverflow.com/a/9310752/5142490\nvar escapeRegex = function escapeRegex(str) {\n return str.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n};\n\nvar PLACEHOLDERS = {\n id: '__id__',\n display: '__display__'\n};\n\nvar findPositionOfCapturingGroup = function findPositionOfCapturingGroup(markup, parameterName) {\n invariant(parameterName === 'id' || parameterName === 'display', \"Second arg must be either \\\"id\\\" or \\\"display\\\", got: \\\"\".concat(parameterName, \"\\\"\")); // find positions of placeholders in the markup\n\n var indexDisplay = markup.indexOf(PLACEHOLDERS.display);\n var indexId = markup.indexOf(PLACEHOLDERS.id); // set indices to null if not found\n\n if (indexDisplay < 0) indexDisplay = null;\n if (indexId < 0) indexId = null; // markup must contain one of the mandatory placeholders\n\n invariant(indexDisplay !== null || indexId !== null, \"The markup '\".concat(markup, \"' does not contain either of the placeholders '__id__' or '__display__'\"));\n\n if (indexDisplay !== null && indexId !== null) {\n // both placeholders are used, return 0 or 1 depending on the position of the requested parameter\n return parameterName === 'id' && indexId <= indexDisplay || parameterName === 'display' && indexDisplay <= indexId ? 0 : 1;\n } // just one placeholder is being used, we'll use the captured string for both parameters\n\n\n return 0;\n};\n\nvar combineRegExps = function combineRegExps(regExps) {\n var serializedRegexParser = /^\\/(.+)\\/(\\w+)?$/;\n return new RegExp(regExps.map(function (regex) {\n var _serializedRegexParse = serializedRegexParser.exec(regex.toString()),\n _serializedRegexParse2 = _slicedToArray(_serializedRegexParse, 3),\n regexString = _serializedRegexParse2[1],\n regexFlags = _serializedRegexParse2[2];\n\n invariant(!regexFlags, \"RegExp flags are not supported. Change /\".concat(regexString, \"/\").concat(regexFlags, \" into /\").concat(regexString, \"/\"));\n return \"(\".concat(regexString, \")\");\n }).join('|'), 'g');\n};\n\nvar countPlaceholders = function countPlaceholders(markup) {\n var count = 0;\n if (markup.indexOf('__id__') >= 0) count++;\n if (markup.indexOf('__display__') >= 0) count++;\n return count;\n};\n\nvar emptyFn = function emptyFn() {}; // Finds all occurrences of the markup in the value and calls the `markupIteratee` callback for each of them.\n// The optional `textIteratee` callback is called for each plain text ranges in between these markup occurrences.\n\n\nvar iterateMentionsMarkup = function iterateMentionsMarkup(value, config, markupIteratee) {\n var textIteratee = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : emptyFn;\n var regex = combineRegExps(config.map(function (c) {\n return c.regex;\n }));\n var accOffset = 2; // first is whole match, second is the for the capturing group of first regexp component\n\n var captureGroupOffsets = config.map(function (_ref) {\n var markup = _ref.markup;\n var result = accOffset; // + 1 is for the capturing group we add around each regexp component in combineRegExps\n\n accOffset += countPlaceholders(markup) + 1;\n return result;\n });\n var match;\n var start = 0;\n var currentPlainTextIndex = 0; // detect all mention markup occurrences in the value and iterate the matches\n\n while ((match = regex.exec(value)) !== null) {\n var offset = captureGroupOffsets.find(function (o) {\n return !!match[o];\n }); // eslint-disable-line no-loop-func\n\n var mentionChildIndex = captureGroupOffsets.indexOf(offset);\n var _config$mentionChildI = config[mentionChildIndex],\n markup = _config$mentionChildI.markup,\n displayTransform = _config$mentionChildI.displayTransform;\n var idPos = offset + findPositionOfCapturingGroup(markup, 'id');\n var displayPos = offset + findPositionOfCapturingGroup(markup, 'display');\n var id = match[idPos];\n var display = displayTransform(id, match[displayPos]);\n var substr = value.substring(start, match.index);\n textIteratee(substr, start, currentPlainTextIndex);\n currentPlainTextIndex += substr.length;\n markupIteratee(match[0], match.index, currentPlainTextIndex, id, display, mentionChildIndex, start);\n currentPlainTextIndex += display.length;\n start = regex.lastIndex;\n }\n\n if (start < value.length) {\n textIteratee(value.substring(start), start, currentPlainTextIndex);\n }\n};\n\nvar getPlainText = function getPlainText(value, config) {\n var result = '';\n iterateMentionsMarkup(value, config, function (match, index, plainTextIndex, id, display) {\n result += display;\n }, function (plainText) {\n result += plainText;\n });\n return result;\n};\n\n// in the marked up value string.\n// If the passed character index lies inside a mention, the value of `inMarkupCorrection` defines the\n// correction to apply:\n// - 'START' to return the index of the mention markup's first char (default)\n// - 'END' to return the index after its last char\n// - 'NULL' to return null\n\nvar mapPlainTextIndex = function mapPlainTextIndex(value, config, indexInPlainText) {\n var inMarkupCorrection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'START';\n\n if (typeof indexInPlainText !== 'number') {\n return indexInPlainText;\n }\n\n var result;\n\n var textIteratee = function textIteratee(substr, index, substrPlainTextIndex) {\n if (result !== undefined) return;\n\n if (substrPlainTextIndex + substr.length >= indexInPlainText) {\n // found the corresponding position in the current plain text range\n result = index + indexInPlainText - substrPlainTextIndex;\n }\n };\n\n var markupIteratee = function markupIteratee(markup, index, mentionPlainTextIndex, id, display, childIndex, lastMentionEndIndex) {\n if (result !== undefined) return;\n\n if (mentionPlainTextIndex + display.length > indexInPlainText) {\n // found the corresponding position inside current match,\n // return the index of the first or after the last char of the matching markup\n // depending on whether the `inMarkupCorrection`\n if (inMarkupCorrection === 'NULL') {\n result = null;\n } else {\n result = index + (inMarkupCorrection === 'END' ? markup.length : 0);\n }\n }\n };\n\n iterateMentionsMarkup(value, config, markupIteratee, textIteratee); // when a mention is at the end of the value and we want to get the caret position\n // at the end of the string, result is undefined\n\n return result === undefined ? value.length : result;\n};\n\nvar spliceString = function spliceString(str, start, end, insert) {\n return str.substring(0, start) + insert + str.substring(end);\n};\n\n// guided by the textarea text selection ranges before and after the change\n\nvar applyChangeToValue = function applyChangeToValue(value, plainTextValue, _ref, config) {\n var selectionStartBefore = _ref.selectionStartBefore,\n selectionEndBefore = _ref.selectionEndBefore,\n selectionEndAfter = _ref.selectionEndAfter;\n var oldPlainTextValue = getPlainText(value, config);\n var lengthDelta = oldPlainTextValue.length - plainTextValue.length;\n\n if (selectionStartBefore === 'undefined') {\n selectionStartBefore = selectionEndAfter + lengthDelta;\n }\n\n if (selectionEndBefore === 'undefined') {\n selectionEndBefore = selectionStartBefore;\n } // Fixes an issue with replacing combined characters for complex input. Eg like acented letters on OSX\n\n\n if (selectionStartBefore === selectionEndBefore && selectionEndBefore === selectionEndAfter && oldPlainTextValue.length === plainTextValue.length) {\n selectionStartBefore = selectionStartBefore - 1;\n } // extract the insertion from the new plain text value\n\n\n var insert = plainTextValue.slice(selectionStartBefore, selectionEndAfter); // handling for Backspace key with no range selection\n\n var spliceStart = Math.min(selectionStartBefore, selectionEndAfter);\n var spliceEnd = selectionEndBefore;\n\n if (selectionStartBefore === selectionEndAfter) {\n // handling for Delete key with no range selection\n spliceEnd = Math.max(selectionEndBefore, selectionStartBefore + lengthDelta);\n }\n\n var mappedSpliceStart = mapPlainTextIndex(value, config, spliceStart, 'START');\n var mappedSpliceEnd = mapPlainTextIndex(value, config, spliceEnd, 'END');\n var controlSpliceStart = mapPlainTextIndex(value, config, spliceStart, 'NULL');\n var controlSpliceEnd = mapPlainTextIndex(value, config, spliceEnd, 'NULL');\n var willRemoveMention = controlSpliceStart === null || controlSpliceEnd === null;\n var newValue = spliceString(value, mappedSpliceStart, mappedSpliceEnd, insert);\n\n if (!willRemoveMention) {\n // test for auto-completion changes\n var controlPlainTextValue = getPlainText(newValue, config);\n\n if (controlPlainTextValue !== plainTextValue) {\n // some auto-correction is going on\n // find start of diff\n spliceStart = 0;\n\n while (plainTextValue[spliceStart] === controlPlainTextValue[spliceStart]) {\n spliceStart++;\n } // extract auto-corrected insertion\n\n\n insert = plainTextValue.slice(spliceStart, selectionEndAfter); // find index of the unchanged remainder\n\n spliceEnd = oldPlainTextValue.lastIndexOf(plainTextValue.substring(selectionEndAfter)); // re-map the corrected indices\n\n mappedSpliceStart = mapPlainTextIndex(value, config, spliceStart, 'START');\n mappedSpliceEnd = mapPlainTextIndex(value, config, spliceEnd, 'END');\n newValue = spliceString(value, mappedSpliceStart, mappedSpliceEnd, insert);\n }\n }\n\n return newValue;\n};\n\n// returns a the index of of the first char of the mention in the plain text.\n// If indexInPlainText does not lie inside a mention, returns indexInPlainText.\n\nvar findStartOfMentionInPlainText = function findStartOfMentionInPlainText(value, config, indexInPlainText) {\n var result = indexInPlainText;\n var foundMention = false;\n\n var markupIteratee = function markupIteratee(markup, index, mentionPlainTextIndex, id, display, childIndex, lastMentionEndIndex) {\n if (mentionPlainTextIndex <= indexInPlainText && mentionPlainTextIndex + display.length > indexInPlainText) {\n result = mentionPlainTextIndex;\n foundMention = true;\n }\n };\n\n iterateMentionsMarkup(value, config, markupIteratee);\n\n if (foundMention) {\n return result;\n }\n};\n\nvar getMentions = function getMentions(value, config) {\n var mentions = [];\n iterateMentionsMarkup(value, config, function (match, index, plainTextIndex, id, display, childIndex, start) {\n mentions.push({\n id: id,\n display: display,\n childIndex: childIndex,\n index: index,\n plainTextIndex: plainTextIndex\n });\n });\n return mentions;\n};\n\nvar getSuggestionHtmlId = function getSuggestionHtmlId(prefix, id) {\n return \"\".concat(prefix, \"-\").concat(id);\n};\n\nvar countSuggestions = function countSuggestions(suggestions) {\n return Object.values(suggestions).reduce(function (acc, _ref) {\n var results = _ref.results;\n return acc + results.length;\n }, 0);\n};\n\nvar getEndOfLastMention = function getEndOfLastMention(value, config) {\n var mentions = getMentions(value, config);\n var lastMention = mentions[mentions.length - 1];\n return lastMention ? lastMention.plainTextIndex + lastMention.display.length : 0;\n};\n\nvar markupToRegex = function markupToRegex(markup) {\n var escapedMarkup = escapeRegex(markup);\n var charAfterDisplay = markup[markup.indexOf(PLACEHOLDERS.display) + PLACEHOLDERS.display.length];\n var charAfterId = markup[markup.indexOf(PLACEHOLDERS.id) + PLACEHOLDERS.id.length];\n return new RegExp(escapedMarkup.replace(PLACEHOLDERS.display, \"([^\".concat(escapeRegex(charAfterDisplay || ''), \"]+?)\")).replace(PLACEHOLDERS.id, \"([^\".concat(escapeRegex(charAfterId || ''), \"]+?)\")));\n};\n\nvar readConfigFromChildren = function readConfigFromChildren(children) {\n return Children.toArray(children).map(function (_ref) {\n var _ref$props = _ref.props,\n markup = _ref$props.markup,\n regex = _ref$props.regex,\n displayTransform = _ref$props.displayTransform;\n return {\n markup: markup,\n regex: regex ? coerceCapturingGroups(regex, markup) : markupToRegex(markup),\n displayTransform: displayTransform || function (id, display) {\n return display || id;\n }\n };\n });\n}; // make sure that the custom regex defines the correct number of capturing groups\n\n\nvar coerceCapturingGroups = function coerceCapturingGroups(regex, markup) {\n var numberOfGroups = new RegExp(regex.toString() + '|').exec('').length - 1;\n var numberOfPlaceholders = countPlaceholders(markup);\n invariant(numberOfGroups === numberOfPlaceholders, \"Number of capturing groups in RegExp \".concat(regex.toString(), \" (\").concat(numberOfGroups, \") does not match the number of placeholders in the markup '\").concat(markup, \"' (\").concat(numberOfPlaceholders, \")\"));\n return regex;\n};\n\nvar makeMentionsMarkup = function makeMentionsMarkup(markup, id, display) {\n return markup.replace(PLACEHOLDERS.id, id).replace(PLACEHOLDERS.display, display);\n};\n\n// This contains all the latin letters and the regex that match these letters with diacritics\n// https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript\nvar lettersDiacritics = [{\n base: 'A',\n letters: /(A|Ⓐ|A|À|Á|Â|Ầ|Ấ|Ẫ|Ẩ|Ã|Ā|Ă|Ằ|Ắ|Ẵ|Ẳ|Ȧ|Ǡ|Ä|Ǟ|Ả|Å|Ǻ|Ǎ|Ȁ|Ȃ|Ạ|Ậ|Ặ|Ḁ|Ą|Ⱥ|Ɐ|[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F])/g\n}, {\n base: 'AA',\n letters: /(Ꜳ|[\\uA732])/g\n}, {\n base: 'AE',\n letters: /(Æ|Ǽ|Ǣ|[\\u00C6\\u01FC\\u01E2])/g\n}, {\n base: 'AO',\n letters: /(Ꜵ|[\\uA734])/g\n}, {\n base: 'AU',\n letters: /(Ꜷ|[\\uA736])/g\n}, {\n base: 'AV',\n letters: /(Ꜹ|Ꜻ|[\\uA738\\uA73A])/g\n}, {\n base: 'AY',\n letters: /(Ꜽ|[\\uA73C])/g\n}, {\n base: 'B',\n letters: /(B|Ⓑ|B|Ḃ|Ḅ|Ḇ|Ƀ|Ƃ|Ɓ|[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181])/g\n}, {\n base: 'C',\n letters: /(C|Ⓒ|C|Ć|Ĉ|Ċ|Č|Ç|Ḉ|Ƈ|Ȼ|Ꜿ|[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E])/g\n}, {\n base: 'D',\n letters: /(D|Ⓓ|D|Ḋ|Ď|Ḍ|Ḑ|Ḓ|Ḏ|Đ|Ƌ|Ɗ|Ɖ|Ꝺ|Ð|[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\\u00D0])/g\n}, {\n base: 'DZ',\n letters: /(DZ|DŽ|[\\u01F1\\u01C4])/g\n}, {\n base: 'Dz',\n letters: /(Dz|Dž|[\\u01F2\\u01C5])/g\n}, {\n base: 'E',\n letters: /(E|Ⓔ|E|È|É|Ê|Ề|Ế|Ễ|Ể|Ẽ|Ē|Ḕ|Ḗ|Ĕ|Ė|Ë|Ẻ|Ě|Ȅ|Ȇ|Ẹ|Ệ|Ȩ|Ḝ|Ę|Ḙ|Ḛ|Ɛ|Ǝ|[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E])/g\n}, {\n base: 'F',\n letters: /(F|Ⓕ|F|Ḟ|Ƒ|Ꝼ|[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B])/g\n}, {\n base: 'G',\n letters: /(G|Ⓖ|G|Ǵ|Ĝ|Ḡ|Ğ|Ġ|Ǧ|Ģ|Ǥ|Ɠ|Ꞡ|Ᵹ|Ꝿ|[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E])/g\n}, {\n base: 'H',\n letters: /(H|Ⓗ|H|Ĥ|Ḣ|Ḧ|Ȟ|Ḥ|Ḩ|Ḫ|Ħ|Ⱨ|Ⱶ|Ɥ|[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D])/g\n}, {\n base: 'I',\n letters: /(I|Ⓘ|I|Ì|Í|Î|Ĩ|Ī|Ĭ|İ|Ï|Ḯ|Ỉ|Ǐ|Ȉ|Ȋ|Ị|Į|Ḭ|Ɨ|[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197])/g\n}, {\n base: 'J',\n letters: /(J|Ⓙ|J|Ĵ|Ɉ|[\\u004A\\u24BF\\uFF2A\\u0134\\u0248])/g\n}, {\n base: 'K',\n letters: /(K|Ⓚ|K|Ḱ|Ǩ|Ḳ|Ķ|Ḵ|Ƙ|Ⱪ|Ꝁ|Ꝃ|Ꝅ|Ꞣ|[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2])/g\n}, {\n base: 'L',\n letters: /(L|Ⓛ|L|Ŀ|Ĺ|Ľ|Ḷ|Ḹ|Ļ|Ḽ|Ḻ|Ł|Ƚ|Ɫ|Ⱡ|Ꝉ|Ꝇ|Ꞁ|[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780])/g\n}, {\n base: 'LJ',\n letters: /(LJ|[\\u01C7])/g\n}, {\n base: 'Lj',\n letters: /(Lj|[\\u01C8])/g\n}, {\n base: 'M',\n letters: /(M|Ⓜ|M|Ḿ|Ṁ|Ṃ|Ɱ|Ɯ|[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C])/g\n}, {\n base: 'N',\n letters: /(N|Ⓝ|N|Ǹ|Ń|Ñ|Ṅ|Ň|Ṇ|Ņ|Ṋ|Ṉ|Ƞ|Ɲ|Ꞑ|Ꞥ|Ŋ|[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4\\u014A])/g\n}, {\n base: 'NJ',\n letters: /(NJ|[\\u01CA])/g\n}, {\n base: 'Nj',\n letters: /(Nj|[\\u01CB])/g\n}, {\n base: 'O',\n letters: /(O|Ⓞ|O|Ò|Ó|Ô|Ồ|Ố|Ỗ|Ổ|Õ|Ṍ|Ȭ|Ṏ|Ō|Ṑ|Ṓ|Ŏ|Ȯ|Ȱ|Ö|Ȫ|Ỏ|Ő|Ǒ|Ȍ|Ȏ|Ơ|Ờ|Ớ|Ỡ|Ở|Ợ|Ọ|Ộ|Ǫ|Ǭ|Ø|Ǿ|Ɔ|Ɵ|Ꝋ|Ꝍ|[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C])/g\n}, {\n base: 'OE',\n letters: /(Œ|[\\u0152])/g\n}, {\n base: 'OI',\n letters: /(Ƣ|[\\u01A2])/g\n}, {\n base: 'OO',\n letters: /(Ꝏ|[\\uA74E])/g\n}, {\n base: 'OU',\n letters: /(Ȣ|[\\u0222])/g\n}, {\n base: 'P',\n letters: /(P|Ⓟ|P|Ṕ|Ṗ|Ƥ|Ᵽ|Ꝑ|Ꝓ|Ꝕ|[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754])/g\n}, {\n base: 'Q',\n letters: /(Q|Ⓠ|Q|Ꝗ|Ꝙ|Ɋ|[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A])/g\n}, {\n base: 'R',\n letters: /(R|Ⓡ|R|Ŕ|Ṙ|Ř|Ȑ|Ȓ|Ṛ|Ṝ|Ŗ|Ṟ|Ɍ|Ɽ|Ꝛ|Ꞧ|Ꞃ|[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782])/g\n}, {\n base: 'S',\n letters: /(S|Ⓢ|S|ẞ|Ś|Ṥ|Ŝ|Ṡ|Š|Ṧ|Ṣ|Ṩ|Ș|Ş|Ȿ|Ꞩ|Ꞅ|[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784])/g\n}, {\n base: 'T',\n letters: /(T|Ⓣ|T|Ṫ|Ť|Ṭ|Ț|Ţ|Ṱ|Ṯ|Ŧ|Ƭ|Ʈ|Ⱦ|Ꞇ|[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786])/g\n}, {\n base: 'TH',\n letters: /(Þ|[\\u00DE])/g\n}, {\n base: 'TZ',\n letters: /(Ꜩ|[\\uA728])/g\n}, {\n base: 'U',\n letters: /(U|Ⓤ|U|Ù|Ú|Û|Ũ|Ṹ|Ū|Ṻ|Ŭ|Ü|Ǜ|Ǘ|Ǖ|Ǚ|Ủ|Ů|Ű|Ǔ|Ȕ|Ȗ|Ư|Ừ|Ứ|Ữ|Ử|Ự|Ụ|Ṳ|Ų|Ṷ|Ṵ|Ʉ|[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244])/g\n}, {\n base: 'V',\n letters: /(V|Ⓥ|V|Ṽ|Ṿ|Ʋ|Ꝟ|Ʌ|[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245])/g\n}, {\n base: 'VY',\n letters: /(Ꝡ|[\\uA760])/g\n}, {\n base: 'W',\n letters: /(W|Ⓦ|W|Ẁ|Ẃ|Ŵ|Ẇ|Ẅ|Ẉ|Ⱳ|[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72])/g\n}, {\n base: 'X',\n letters: /(X|Ⓧ|X|Ẋ|Ẍ|[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C])/g\n}, {\n base: 'Y',\n letters: /(Y|Ⓨ|Y|Ỳ|Ý|Ŷ|Ỹ|Ȳ|Ẏ|Ÿ|Ỷ|Ỵ|Ƴ|Ɏ|Ỿ|[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE])/g\n}, {\n base: 'Z',\n letters: /(Z|Ⓩ|Z|Ź|Ẑ|Ż|Ž|Ẓ|Ẕ|Ƶ|Ȥ|Ɀ|Ⱬ|Ꝣ|[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762])/g\n}, {\n base: 'a',\n letters: /(a|ⓐ|a|ẚ|à|á|â|ầ|ấ|ẫ|ẩ|ã|ā|ă|ằ|ắ|ẵ|ẳ|ȧ|ǡ|ä|ǟ|ả|å|ǻ|ǎ|ȁ|ȃ|ạ|ậ|ặ|ḁ|ą|ⱥ|ɐ|[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250])/g\n}, {\n base: 'aa',\n letters: /(ꜳ|[\\uA733])/g\n}, {\n base: 'ae',\n letters: /(æ|ǽ|ǣ|[\\u00E6\\u01FD\\u01E3])/g\n}, {\n base: 'ao',\n letters: /(ꜵ|[\\uA735])/g\n}, {\n base: 'au',\n letters: /(ꜷ|[\\uA737])/g\n}, {\n base: 'av',\n letters: /(ꜹ|ꜻ|[\\uA739\\uA73B])/g\n}, {\n base: 'ay',\n letters: /(ꜽ|[\\uA73D])/g\n}, {\n base: 'b',\n letters: /(b|ⓑ|b|ḃ|ḅ|ḇ|ƀ|ƃ|ɓ|[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253])/g\n}, {\n base: 'c',\n letters: /(c|ⓒ|c|ć|ĉ|ċ|č|ç|ḉ|ƈ|ȼ|ꜿ|ↄ|[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184])/g\n}, {\n base: 'd',\n letters: /(d|ⓓ|d|ḋ|ď|ḍ|ḑ|ḓ|ḏ|đ|ƌ|ɖ|ɗ|ꝺ|ð|[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A\\u00F0])/g\n}, {\n base: 'dz',\n letters: /(dz|dž|[\\u01F3\\u01C6])/g\n}, {\n base: 'e',\n letters: /(e|ⓔ|e|è|é|ê|ề|ế|ễ|ể|ẽ|ē|ḕ|ḗ|ĕ|ė|ë|ẻ|ě|ȅ|ȇ|ẹ|ệ|ȩ|ḝ|ę|ḙ|ḛ|ɇ|ɛ|ǝ|[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD])/g\n}, {\n base: 'f',\n letters: /(f|ⓕ|f|ḟ|ƒ|ꝼ|[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C])/g\n}, {\n base: 'g',\n letters: /(g|ⓖ|g|ǵ|ĝ|ḡ|ğ|ġ|ǧ|ģ|ǥ|ɠ|ꞡ|ᵹ|ꝿ|[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F])/g\n}, {\n base: 'h',\n letters: /(h|ⓗ|h|ĥ|ḣ|ḧ|ȟ|ḥ|ḩ|ḫ|ẖ|ħ|ⱨ|ⱶ|ɥ|[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265])/g\n}, {\n base: 'hv',\n letters: /(ƕ|[\\u0195])/g\n}, {\n base: 'i',\n letters: /(i|ⓘ|i|ì|í|î|ĩ|ī|ĭ|ï|ḯ|ỉ|ǐ|ȉ|ȋ|ị|į|ḭ|ɨ|ı|[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131])/g\n}, {\n base: 'ij',\n letters: /(ij|[\\u0133])/g\n}, {\n base: 'j',\n letters: /(j|ⓙ|j|ĵ|ǰ|ɉ|[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249])/g\n}, {\n base: 'k',\n letters: /(k|ⓚ|k|ḱ|ǩ|ḳ|ķ|ḵ|ƙ|ⱪ|ꝁ|ꝃ|ꝅ|ꞣ|[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3])/g\n}, {\n base: 'l',\n letters: /(l|ⓛ|l|ŀ|ĺ|ľ|ḷ|ḹ|ļ|ḽ|ḻ|ł|ƚ|ɫ|ⱡ|ꝉ|ꞁ|ꝇ|[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747])/g\n}, {\n base: 'lj',\n letters: /(lj|[\\u01C9])/g\n}, {\n base: 'm',\n letters: /(m|ⓜ|m|ḿ|ṁ|ṃ|ɱ|ɯ|[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F])/g\n}, {\n base: 'n',\n letters: /(n|ⓝ|n|ǹ|ń|ñ|ṅ|ň|ṇ|ņ|ṋ|ṉ|ƞ|ɲ|ʼn|ꞑ|ꞥ|ŋ|[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\\u014B])/g\n}, {\n base: 'nj',\n letters: /(nj|[\\u01CC])/g\n}, {\n base: 'o',\n letters: /(o|ⓞ|o|ò|ó|ô|ồ|ố|ỗ|ổ|õ|ṍ|ȭ|ṏ|ō|ṑ|ṓ|ŏ|ȯ|ȱ|ö|ȫ|ỏ|ő|ǒ|ȍ|ȏ|ơ|ờ|ớ|ỡ|ở|ợ|ọ|ộ|ǫ|ǭ|ø|ǿ|ɔ|ꝋ|ꝍ|ɵ|[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275])/g\n}, {\n base: 'oe',\n letters: /(œ|[\\u0153])/g\n}, {\n base: 'oi',\n letters: /(ƣ|[\\u01A3])/g\n}, {\n base: 'ou',\n letters: /(ȣ|[\\u0223])/g\n}, {\n base: 'oo',\n letters: /(ꝏ|[\\uA74F])/g\n}, {\n base: 'p',\n letters: /(p|ⓟ|p|ṕ|ṗ|ƥ|ᵽ|ꝑ|ꝓ|ꝕ|[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755])/g\n}, {\n base: 'q',\n letters: /(q|ⓠ|q|ɋ|ꝗ|ꝙ|[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759])/g\n}, {\n base: 'r',\n letters: /(r|ⓡ|r|ŕ|ṙ|ř|ȑ|ȓ|ṛ|ṝ|ŗ|ṟ|ɍ|ɽ|ꝛ|ꞧ|ꞃ|[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783])/g\n}, {\n base: 's',\n letters: /(s|ⓢ|s|ś|ṥ|ŝ|ṡ|š|ṧ|ṣ|ṩ|ș|ş|ȿ|ꞩ|ꞅ|ẛ|ſ|[\\u0073\\u24E2\\uFF53\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\\u017F])/g\n}, {\n base: 'ss',\n letters: /(ß|[\\u00DF])/g\n}, {\n base: 't',\n letters: /(t|ⓣ|t|ṫ|ẗ|ť|ṭ|ț|ţ|ṱ|ṯ|ŧ|ƭ|ʈ|ⱦ|ꞇ|[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787])/g\n}, {\n base: 'th',\n letters: /(þ|[\\u00FE])/g\n}, {\n base: 'tz',\n letters: /(ꜩ|[\\uA729])/g\n}, {\n base: 'u',\n letters: /(u|ⓤ|u|ù|ú|û|ũ|ṹ|ū|ṻ|ŭ|ü|ǜ|ǘ|ǖ|ǚ|ủ|ů|ű|ǔ|ȕ|ȗ|ư|ừ|ứ|ữ|ử|ự|ụ|ṳ|ų|ṷ|ṵ|ʉ|[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289])/g\n}, {\n base: 'v',\n letters: /(v|ⓥ|v|ṽ|ṿ|ʋ|ꝟ|ʌ|[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C])/g\n}, {\n base: 'vy',\n letters: /(ꝡ|[\\uA761])/g\n}, {\n base: 'w',\n letters: /(w|ⓦ|w|ẁ|ẃ|ŵ|ẇ|ẅ|ẘ|ẉ|ⱳ|[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73])/g\n}, {\n base: 'x',\n letters: /(x|ⓧ|x|ẋ|ẍ|[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D])/g\n}, {\n base: 'y',\n letters: /(y|ⓨ|y|ỳ|ý|ŷ|ỹ|ȳ|ẏ|ÿ|ỷ|ẙ|ỵ|ƴ|ɏ|ỿ|[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF])/g\n}, {\n base: 'z',\n letters: /(z|ⓩ|z|ź|ẑ|ż|ž|ẓ|ẕ|ƶ|ȥ|ɀ|ⱬ|ꝣ|[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763])/g\n}];\n\nvar removeAccents = function removeAccents(str) {\n var formattedStr = str;\n lettersDiacritics.forEach(function (letterDiacritics) {\n formattedStr = formattedStr.replace(letterDiacritics.letters, letterDiacritics.base);\n });\n return formattedStr;\n};\n\nvar normalizeString = function normalizeString(str) {\n return removeAccents(str).toLowerCase();\n};\n\nvar getSubstringIndex = function getSubstringIndex(str, substr, ignoreAccents) {\n if (!ignoreAccents) {\n return str.toLowerCase().indexOf(substr.toLowerCase());\n }\n\n return normalizeString(str).indexOf(normalizeString(substr));\n};\n\nvar isIE = function isIE() {\n return !!document.documentMode;\n};\n\nvar isNumber = function isNumber(val) {\n return typeof val === 'number';\n};\n\nvar keys = function keys(obj) {\n return obj === Object(obj) ? Object.keys(obj) : [];\n};\n\nvar omit = function omit(obj) {\n var _ref;\n\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n\n var keys = (_ref = []).concat.apply(_ref, rest);\n\n return Object.keys(obj).reduce(function (acc, k) {\n if (obj.hasOwnProperty(k) && !keys.includes(k) && obj[k] !== undefined) {\n acc[k] = obj[k];\n }\n\n return acc;\n }, {});\n};\n\nfunction createDefaultStyle(defaultStyle, getModifiers) {\n var enhance = function enhance(ComponentToWrap) {\n var DefaultStyleEnhancer = function DefaultStyleEnhancer(_ref) {\n var style = _ref.style,\n className = _ref.className,\n classNames = _ref.classNames,\n rest = _objectWithoutProperties(_ref, [\"style\", \"className\", \"classNames\"]);\n\n var modifiers = getModifiers ? getModifiers(rest) : undefined;\n var styles = useStyles(defaultStyle, {\n style: style,\n className: className,\n classNames: classNames\n }, modifiers);\n return React.createElement(ComponentToWrap, _extends({}, rest, {\n style: styles\n }));\n };\n\n var displayName = ComponentToWrap.displayName || ComponentToWrap.name || 'Component';\n DefaultStyleEnhancer.displayName = \"defaultStyle(\".concat(displayName, \")\");\n return DefaultStyleEnhancer;\n };\n\n return enhance;\n}\n\nvar _generateComponentKey = function _generateComponentKey(usedKeys, id) {\n if (!usedKeys.hasOwnProperty(id)) {\n usedKeys[id] = 0;\n } else {\n usedKeys[id]++;\n }\n\n return id + '_' + usedKeys[id];\n};\n\nvar Highlighter =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Highlighter, _Component);\n\n function Highlighter() {\n var _this;\n\n _classCallCheck(this, Highlighter);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Highlighter).apply(this, arguments));\n\n _defineProperty(_assertThisInitialized(_this), \"setCaretElement\", function (el) {\n _this.caretElement = el;\n });\n\n _this.state = {\n left: undefined,\n top: undefined\n };\n return _this;\n }\n\n _createClass(Highlighter, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.notifyCaretPosition();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.notifyCaretPosition();\n }\n }, {\n key: \"notifyCaretPosition\",\n value: function notifyCaretPosition() {\n if (!this.caretElement) {\n return;\n }\n\n var _this$caretElement = this.caretElement,\n offsetLeft = _this$caretElement.offsetLeft,\n offsetTop = _this$caretElement.offsetTop;\n\n if (this.state.left === offsetLeft && this.state.top === offsetTop) {\n return;\n }\n\n var newPosition = {\n left: offsetLeft,\n top: offsetTop\n };\n this.setState(newPosition);\n this.props.onCaretPositionChange(newPosition);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n selectionStart = _this$props.selectionStart,\n selectionEnd = _this$props.selectionEnd,\n value = _this$props.value,\n style = _this$props.style,\n children = _this$props.children,\n containerRef = _this$props.containerRef;\n var config = readConfigFromChildren(children); // If there's a caret (i.e. no range selection), map the caret position into the marked up value\n\n var caretPositionInMarkup;\n\n if (selectionStart === selectionEnd) {\n caretPositionInMarkup = mapPlainTextIndex(value, config, selectionStart, 'START');\n }\n\n var resultComponents = [];\n var componentKeys = {}; // start by appending directly to the resultComponents\n\n var components = resultComponents;\n var substringComponentKey = 0;\n\n var textIteratee = function textIteratee(substr, index, indexInPlainText) {\n // check whether the caret element has to be inserted inside the current plain substring\n if (isNumber(caretPositionInMarkup) && caretPositionInMarkup >= index && caretPositionInMarkup <= index + substr.length) {\n // if yes, split substr at the caret position and insert the caret component\n var splitIndex = caretPositionInMarkup - index;\n components.push(_this2.renderSubstring(substr.substring(0, splitIndex), substringComponentKey)); // add all following substrings and mention components as children of the caret component\n\n components = [_this2.renderSubstring(substr.substring(splitIndex), substringComponentKey)];\n } else {\n // otherwise just push the plain text substring\n components.push(_this2.renderSubstring(substr, substringComponentKey));\n }\n\n substringComponentKey++;\n };\n\n var mentionIteratee = function mentionIteratee(markup, index, indexInPlainText, id, display, mentionChildIndex, lastMentionEndIndex) {\n // generate a component key based on the id\n var key = _generateComponentKey(componentKeys, id);\n\n components.push(_this2.getMentionComponentForMatch(id, display, mentionChildIndex, key));\n };\n\n iterateMentionsMarkup(value, config, mentionIteratee, textIteratee); // append a span containing a space, to ensure the last text line has the correct height\n\n components.push(' ');\n\n if (components !== resultComponents) {\n // if a caret component is to be rendered, add all components that followed as its children\n resultComponents.push(this.renderHighlighterCaret(components));\n }\n\n return React.createElement(\"div\", _extends({}, style, {\n ref: containerRef\n }), resultComponents);\n }\n }, {\n key: \"renderSubstring\",\n value: function renderSubstring(string, key) {\n // set substring span to hidden, so that Emojis are not shown double in Mobile Safari\n return React.createElement(\"span\", _extends({}, this.props.style('substring'), {\n key: key\n }), string);\n } // Returns a clone of the Mention child applicable for the specified type to be rendered inside the highlighter\n\n }, {\n key: \"getMentionComponentForMatch\",\n value: function getMentionComponentForMatch(id, display, mentionChildIndex, key) {\n var props = {\n id: id,\n display: display,\n key: key\n };\n var child = Children.toArray(this.props.children)[mentionChildIndex];\n return React.cloneElement(child, props);\n } // Renders an component to be inserted in the highlighter at the current caret position\n\n }, {\n key: \"renderHighlighterCaret\",\n value: function renderHighlighterCaret(children) {\n return React.createElement(\"span\", _extends({}, this.props.style('caret'), {\n ref: this.setCaretElement,\n key: \"caret\"\n }), children);\n }\n }]);\n\n return Highlighter;\n}(Component);\n\n_defineProperty(Highlighter, \"propTypes\", {\n selectionStart: PropTypes.number,\n selectionEnd: PropTypes.number,\n value: PropTypes.string.isRequired,\n onCaretPositionChange: PropTypes.func.isRequired,\n containerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : PropTypes.instanceOf(Element)\n })]),\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired\n});\n\n_defineProperty(Highlighter, \"defaultProps\", {\n value: ''\n});\n\nvar styled = createDefaultStyle({\n position: 'relative',\n boxSizing: 'border-box',\n width: '100%',\n color: 'transparent',\n overflow: 'hidden',\n whiteSpace: 'pre-wrap',\n wordWrap: 'break-word',\n border: '1px solid transparent',\n textAlign: 'start',\n '&singleLine': {\n whiteSpace: 'pre',\n wordWrap: null\n },\n substring: {\n visibility: 'hidden'\n }\n}, function (props) {\n return {\n '&singleLine': props.singleLine\n };\n});\nvar Highlighter$1 = styled(Highlighter);\n\nvar Suggestion =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Suggestion, _Component);\n\n function Suggestion() {\n _classCallCheck(this, Suggestion);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Suggestion).apply(this, arguments));\n }\n\n _createClass(Suggestion, [{\n key: \"render\",\n value: function render() {\n var rest = omit(this.props, ['style', 'classNames', 'className'], // substyle props\n keys(Suggestion.propTypes));\n return React.createElement(\"li\", _extends({\n id: this.props.id,\n role: \"option\",\n \"aria-selected\": this.props.focused\n }, rest, this.props.style), this.renderContent());\n }\n }, {\n key: \"renderContent\",\n value: function renderContent() {\n var _this$props = this.props,\n query = _this$props.query,\n renderSuggestion = _this$props.renderSuggestion,\n suggestion = _this$props.suggestion,\n index = _this$props.index,\n focused = _this$props.focused;\n var display = this.getDisplay();\n var highlightedDisplay = this.renderHighlightedDisplay(display, query);\n\n if (renderSuggestion) {\n return renderSuggestion(suggestion, query, highlightedDisplay, index, focused);\n }\n\n return highlightedDisplay;\n }\n }, {\n key: \"getDisplay\",\n value: function getDisplay() {\n var suggestion = this.props.suggestion;\n\n if (typeof suggestion === 'string') {\n return suggestion;\n }\n\n var id = suggestion.id,\n display = suggestion.display;\n\n if (id === undefined || !display) {\n return id;\n }\n\n return display;\n }\n }, {\n key: \"renderHighlightedDisplay\",\n value: function renderHighlightedDisplay(display) {\n var _this$props2 = this.props,\n ignoreAccents = _this$props2.ignoreAccents,\n query = _this$props2.query,\n style = _this$props2.style;\n var i = getSubstringIndex(display, query, ignoreAccents);\n\n if (i === -1) {\n return React.createElement(\"span\", style('display'), display);\n }\n\n return React.createElement(\"span\", style('display'), display.substring(0, i), React.createElement(\"b\", style('highlight'), display.substring(i, i + query.length)), display.substring(i + query.length));\n }\n }]);\n\n return Suggestion;\n}(Component);\n\n_defineProperty(Suggestion, \"propTypes\", {\n id: PropTypes.string.isRequired,\n query: PropTypes.string.isRequired,\n index: PropTypes.number.isRequired,\n ignoreAccents: PropTypes.bool,\n suggestion: PropTypes.oneOfType([PropTypes.string, PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n display: PropTypes.string\n })]).isRequired,\n renderSuggestion: PropTypes.func,\n focused: PropTypes.bool\n});\n\nvar styled$1 = createDefaultStyle({\n cursor: 'pointer'\n}, function (props) {\n return {\n '&focused': props.focused\n };\n});\nvar Suggestion$1 = styled$1(Suggestion);\n\nfunction LoadingIndicator() {\n var styles = useStyles();\n var spinnerStyles = styles('spinner');\n return React.createElement(\"div\", styles, React.createElement(\"div\", spinnerStyles, React.createElement(\"div\", spinnerStyles(['element', 'element1'])), React.createElement(\"div\", spinnerStyles(['element', 'element2'])), React.createElement(\"div\", spinnerStyles(['element', 'element3'])), React.createElement(\"div\", spinnerStyles(['element', 'element4'])), React.createElement(\"div\", spinnerStyles(['element', 'element5']))));\n}\n\nvar SuggestionsOverlay =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SuggestionsOverlay, _Component);\n\n function SuggestionsOverlay() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, SuggestionsOverlay);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(SuggestionsOverlay)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"handleMouseEnter\", function (index, ev) {\n if (_this.props.onMouseEnter) {\n _this.props.onMouseEnter(index);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"select\", function (suggestion, queryInfo) {\n _this.props.onSelect(suggestion, queryInfo);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setUlElement\", function (el) {\n _this.ulElement = el;\n });\n\n return _this;\n }\n\n _createClass(SuggestionsOverlay, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n if (!this.ulElement || this.ulElement.offsetHeight >= this.ulElement.scrollHeight || !this.props.scrollFocusedIntoView) {\n return;\n }\n\n var scrollTop = this.ulElement.scrollTop;\n\n var _this$ulElement$child = this.ulElement.children[this.props.focusIndex].getBoundingClientRect(),\n top = _this$ulElement$child.top,\n bottom = _this$ulElement$child.bottom;\n\n var _this$ulElement$getBo = this.ulElement.getBoundingClientRect(),\n topContainer = _this$ulElement$getBo.top;\n\n top = top - topContainer + scrollTop;\n bottom = bottom - topContainer + scrollTop;\n\n if (top < scrollTop) {\n this.ulElement.scrollTop = top;\n } else if (bottom > this.ulElement.offsetHeight) {\n this.ulElement.scrollTop = bottom - this.ulElement.offsetHeight;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n id = _this$props.id,\n a11ySuggestionsListLabel = _this$props.a11ySuggestionsListLabel,\n isOpened = _this$props.isOpened,\n style = _this$props.style,\n onMouseDown = _this$props.onMouseDown,\n containerRef = _this$props.containerRef,\n position = _this$props.position,\n left = _this$props.left,\n right = _this$props.right,\n top = _this$props.top; // do not show suggestions until there is some data\n\n if (!isOpened) {\n return null;\n }\n\n return React.createElement(\"div\", _extends({}, inline({\n position: position || 'absolute',\n left: left,\n right: right,\n top: top\n }, style), {\n onMouseDown: onMouseDown,\n ref: containerRef\n }), React.createElement(\"ul\", _extends({\n ref: this.setUlElement,\n id: id,\n role: \"listbox\",\n \"aria-label\": a11ySuggestionsListLabel\n }, style('list')), this.renderSuggestions()), this.renderLoadingIndicator());\n }\n }, {\n key: \"renderSuggestions\",\n value: function renderSuggestions() {\n var _this2 = this;\n\n return Object.values(this.props.suggestions).reduce(function (accResults, _ref) {\n var results = _ref.results,\n queryInfo = _ref.queryInfo;\n return [].concat(_toConsumableArray(accResults), _toConsumableArray(results.map(function (result, index) {\n return _this2.renderSuggestion(result, queryInfo, accResults.length + index);\n })));\n }, []);\n }\n }, {\n key: \"renderSuggestion\",\n value: function renderSuggestion(result, queryInfo, index) {\n var _this3 = this;\n\n var isFocused = index === this.props.focusIndex;\n var childIndex = queryInfo.childIndex,\n query = queryInfo.query;\n var renderSuggestion = Children.toArray(this.props.children)[childIndex].props.renderSuggestion;\n var ignoreAccents = this.props.ignoreAccents;\n return React.createElement(Suggestion$1, {\n style: this.props.style('item'),\n key: \"\".concat(childIndex, \"-\").concat(getID(result)),\n id: getSuggestionHtmlId(this.props.id, index),\n query: query,\n index: index,\n ignoreAccents: ignoreAccents,\n renderSuggestion: renderSuggestion,\n suggestion: result,\n focused: isFocused,\n onClick: function onClick() {\n return _this3.select(result, queryInfo);\n },\n onMouseEnter: function onMouseEnter() {\n return _this3.handleMouseEnter(index);\n }\n });\n }\n }, {\n key: \"renderLoadingIndicator\",\n value: function renderLoadingIndicator() {\n if (!this.props.isLoading) {\n return;\n }\n\n return React.createElement(LoadingIndicator, {\n style: this.props.style('loadingIndicator')\n });\n }\n }]);\n\n return SuggestionsOverlay;\n}(Component);\n\n_defineProperty(SuggestionsOverlay, \"propTypes\", {\n id: PropTypes.string.isRequired,\n suggestions: PropTypes.object.isRequired,\n a11ySuggestionsListLabel: PropTypes.string,\n focusIndex: PropTypes.number,\n position: PropTypes.string,\n left: PropTypes.number,\n right: PropTypes.number,\n top: PropTypes.number,\n scrollFocusedIntoView: PropTypes.bool,\n isLoading: PropTypes.bool,\n isOpened: PropTypes.bool.isRequired,\n onSelect: PropTypes.func,\n ignoreAccents: PropTypes.bool,\n containerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : PropTypes.instanceOf(Element)\n })]),\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired\n});\n\n_defineProperty(SuggestionsOverlay, \"defaultProps\", {\n suggestions: {},\n onSelect: function onSelect() {\n return null;\n }\n});\n\nvar getID = function getID(suggestion) {\n if (typeof suggestion === 'string') {\n return suggestion;\n }\n\n return suggestion.id;\n};\n\nvar styled$2 = createDefaultStyle({\n zIndex: 1,\n backgroundColor: 'white',\n marginTop: 14,\n minWidth: 100,\n list: {\n margin: 0,\n padding: 0,\n listStyleType: 'none'\n }\n});\nvar SuggestionsOverlay$1 = styled$2(SuggestionsOverlay);\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\nvar makeTriggerRegex = function makeTriggerRegex(trigger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (trigger instanceof RegExp) {\n return trigger;\n } else {\n var allowSpaceInQuery = options.allowSpaceInQuery;\n var escapedTriggerChar = escapeRegex(trigger); // first capture group is the part to be replaced on completion\n // second capture group is for extracting the search query\n\n return new RegExp(\"(?:^|\\\\s)(\".concat(escapedTriggerChar, \"([^\").concat(allowSpaceInQuery ? '' : '\\\\s').concat(escapedTriggerChar, \"]*))$\"));\n }\n};\n\nvar getDataProvider = function getDataProvider(data, ignoreAccents) {\n if (data instanceof Array) {\n // if data is an array, create a function to query that\n return function (query, callback) {\n var results = [];\n\n for (var i = 0, l = data.length; i < l; ++i) {\n var display = data[i].display || data[i].id;\n\n if (getSubstringIndex(display, query, ignoreAccents) >= 0) {\n results.push(data[i]);\n }\n }\n\n return results;\n };\n } else {\n // expect data to be a query function\n return data;\n }\n};\n\nvar KEY = {\n TAB: 9,\n RETURN: 13,\n ESC: 27,\n UP: 38,\n DOWN: 40\n};\nvar isComposing = false;\nvar propTypes = {\n /**\n * If set to `true` a regular text input element will be rendered\n * instead of a textarea\n */\n singleLine: PropTypes.bool,\n allowSpaceInQuery: PropTypes.bool,\n allowSuggestionsAboveCursor: PropTypes.bool,\n forceSuggestionsAboveCursor: PropTypes.bool,\n ignoreAccents: PropTypes.bool,\n a11ySuggestionsListLabel: PropTypes.string,\n value: PropTypes.string,\n onKeyDown: PropTypes.func,\n onSelect: PropTypes.func,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n suggestionsPortalHost: typeof Element === 'undefined' ? PropTypes.any : PropTypes.PropTypes.instanceOf(Element),\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : PropTypes.instanceOf(Element)\n })]),\n children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired\n};\n\nvar MentionsInput =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(MentionsInput, _React$Component);\n\n function MentionsInput(_props) {\n var _this;\n\n _classCallCheck(this, MentionsInput);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(MentionsInput).call(this, _props));\n\n _defineProperty(_assertThisInitialized(_this), \"setContainerElement\", function (el) {\n _this.containerElement = el;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getInputProps\", function () {\n var _this$props = _this.props,\n readOnly = _this$props.readOnly,\n disabled = _this$props.disabled,\n style = _this$props.style; // pass all props that neither we, nor substyle, consume through to the input control\n\n var props = omit(_this.props, ['style', 'classNames', 'className'], // substyle props\n keys(propTypes));\n return _objectSpread({}, props, {}, style('input'), {\n value: _this.getPlainText()\n }, !readOnly && !disabled && {\n onChange: _this.handleChange,\n onSelect: _this.handleSelect,\n onKeyDown: _this.handleKeyDown,\n onBlur: _this.handleBlur,\n onCompositionStart: _this.handleCompositionStart,\n onCompositionEnd: _this.handleCompositionEnd,\n onScroll: _this.updateHighlighterScroll\n }, {}, _this.isOpened() && {\n role: 'combobox',\n 'aria-controls': _this.uuidSuggestionsOverlay,\n 'aria-expanded': true,\n 'aria-autocomplete': 'list',\n 'aria-haspopup': 'listbox',\n 'aria-activedescendant': getSuggestionHtmlId(_this.uuidSuggestionsOverlay, _this.state.focusIndex)\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderControl\", function () {\n var _this$props2 = _this.props,\n singleLine = _this$props2.singleLine,\n style = _this$props2.style;\n\n var inputProps = _this.getInputProps();\n\n return React.createElement(\"div\", style('control'), _this.renderHighlighter(), singleLine ? _this.renderInput(inputProps) : _this.renderTextarea(inputProps));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderInput\", function (props) {\n return React.createElement(\"input\", _extends({\n type: \"text\",\n ref: _this.setInputRef\n }, props));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderTextarea\", function (props) {\n return React.createElement(\"textarea\", _extends({\n ref: _this.setInputRef\n }, props));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setInputRef\", function (el) {\n _this.inputElement = el;\n var inputRef = _this.props.inputRef;\n\n if (typeof inputRef === 'function') {\n inputRef(el);\n } else if (inputRef) {\n inputRef.current = el;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setSuggestionsElement\", function (el) {\n _this.suggestionsElement = el;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderSuggestionsOverlay\", function () {\n if (!isNumber(_this.state.selectionStart)) {\n // do not show suggestions when the input does not have the focus\n return null;\n }\n\n var _this$state$suggestio = _this.state.suggestionsPosition,\n position = _this$state$suggestio.position,\n left = _this$state$suggestio.left,\n top = _this$state$suggestio.top,\n right = _this$state$suggestio.right;\n var suggestionsNode = React.createElement(SuggestionsOverlay$1, {\n id: _this.uuidSuggestionsOverlay,\n style: _this.props.style('suggestions'),\n position: position,\n left: left,\n top: top,\n right: right,\n focusIndex: _this.state.focusIndex,\n scrollFocusedIntoView: _this.state.scrollFocusedIntoView,\n containerRef: _this.setSuggestionsElement,\n suggestions: _this.state.suggestions,\n onSelect: _this.addMention,\n onMouseDown: _this.handleSuggestionsMouseDown,\n onMouseEnter: _this.handleSuggestionsMouseEnter,\n isLoading: _this.isLoading(),\n isOpened: _this.isOpened(),\n ignoreAccents: _this.props.ignoreAccents,\n a11ySuggestionsListLabel: _this.props.a11ySuggestionsListLabel\n }, _this.props.children);\n\n if (_this.props.suggestionsPortalHost) {\n return ReactDOM.createPortal(suggestionsNode, _this.props.suggestionsPortalHost);\n } else {\n return suggestionsNode;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderHighlighter\", function () {\n var _this$state = _this.state,\n selectionStart = _this$state.selectionStart,\n selectionEnd = _this$state.selectionEnd;\n var _this$props3 = _this.props,\n singleLine = _this$props3.singleLine,\n children = _this$props3.children,\n value = _this$props3.value,\n style = _this$props3.style;\n return React.createElement(Highlighter$1, {\n containerRef: _this.setHighlighterElement,\n style: style('highlighter'),\n value: value,\n singleLine: singleLine,\n selectionStart: selectionStart,\n selectionEnd: selectionEnd,\n onCaretPositionChange: _this.handleCaretPositionChange\n }, children);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setHighlighterElement\", function (el) {\n _this.highlighterElement = el;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleCaretPositionChange\", function (position) {\n _this.setState({\n caretPosition: position\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getPlainText\", function () {\n return getPlainText(_this.props.value || '', readConfigFromChildren(_this.props.children));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"executeOnChange\", function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (_this.props.onChange) {\n var _this$props4;\n\n return (_this$props4 = _this.props).onChange.apply(_this$props4, [event].concat(args));\n }\n\n if (_this.props.valueLink) {\n var _this$props$valueLink;\n\n return (_this$props$valueLink = _this.props.valueLink).requestChange.apply(_this$props$valueLink, [event.target.value].concat(args));\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleChange\", function (ev) {\n isComposing = false;\n\n if (isIE()) {\n // if we are inside iframe, we need to find activeElement within its contentDocument\n var currentDocument = document.activeElement && document.activeElement.contentDocument || document;\n\n if (currentDocument.activeElement !== ev.target) {\n // fix an IE bug (blur from empty input element with placeholder attribute trigger \"input\" event)\n return;\n }\n }\n\n var value = _this.props.value || '';\n var config = readConfigFromChildren(_this.props.children);\n var newPlainTextValue = ev.target.value; // Derive the new value to set by applying the local change in the textarea's plain text\n\n var newValue = applyChangeToValue(value, newPlainTextValue, {\n selectionStartBefore: _this.state.selectionStart,\n selectionEndBefore: _this.state.selectionEnd,\n selectionEndAfter: ev.target.selectionEnd\n }, config); // In case a mention is deleted, also adjust the new plain text value\n\n newPlainTextValue = getPlainText(newValue, config); // Save current selection after change to be able to restore caret position after rerendering\n\n var selectionStart = ev.target.selectionStart;\n var selectionEnd = ev.target.selectionEnd;\n var setSelectionAfterMentionChange = false; // Adjust selection range in case a mention will be deleted by the characters outside of the\n // selection range that are automatically deleted\n\n var startOfMention = findStartOfMentionInPlainText(value, config, selectionStart);\n\n if (startOfMention !== undefined && _this.state.selectionEnd > startOfMention) {\n // only if a deletion has taken place\n selectionStart = startOfMention;\n selectionEnd = selectionStart;\n setSelectionAfterMentionChange = true;\n }\n\n _this.setState({\n selectionStart: selectionStart,\n selectionEnd: selectionEnd,\n setSelectionAfterMentionChange: setSelectionAfterMentionChange\n });\n\n var mentions = getMentions(newValue, config); // Propagate change\n // let handleChange = this.getOnChange(this.props) || emptyFunction;\n\n var eventMock = {\n target: {\n value: newValue\n }\n }; // this.props.onChange.call(this, eventMock, newValue, newPlainTextValue, mentions);\n\n _this.executeOnChange(eventMock, newValue, newPlainTextValue, mentions);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleSelect\", function (ev) {\n // keep track of selection range / caret position\n _this.setState({\n selectionStart: ev.target.selectionStart,\n selectionEnd: ev.target.selectionEnd\n }); // do nothing while a IME composition session is active\n\n\n if (isComposing) return; // refresh suggestions queries\n\n var el = _this.inputElement;\n\n if (ev.target.selectionStart === ev.target.selectionEnd) {\n _this.updateMentionsQueries(el.value, ev.target.selectionStart);\n } else {\n _this.clearSuggestions();\n } // sync highlighters scroll position\n\n\n _this.updateHighlighterScroll();\n\n _this.props.onSelect(ev);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleKeyDown\", function (ev) {\n // do not intercept key events if the suggestions overlay is not shown\n var suggestionsCount = countSuggestions(_this.state.suggestions);\n\n if (suggestionsCount === 0 || !_this.suggestionsElement) {\n _this.props.onKeyDown(ev);\n\n return;\n }\n\n if (Object.values(KEY).indexOf(ev.keyCode) >= 0) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n switch (ev.keyCode) {\n case KEY.ESC:\n {\n _this.clearSuggestions();\n\n return;\n }\n\n case KEY.DOWN:\n {\n _this.shiftFocus(+1);\n\n return;\n }\n\n case KEY.UP:\n {\n _this.shiftFocus(-1);\n\n return;\n }\n\n case KEY.RETURN:\n {\n _this.selectFocused();\n\n return;\n }\n\n case KEY.TAB:\n {\n _this.selectFocused();\n\n return;\n }\n\n default:\n {\n return;\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"shiftFocus\", function (delta) {\n var suggestionsCount = countSuggestions(_this.state.suggestions);\n\n _this.setState({\n focusIndex: (suggestionsCount + _this.state.focusIndex + delta) % suggestionsCount,\n scrollFocusedIntoView: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"selectFocused\", function () {\n var _this$state2 = _this.state,\n suggestions = _this$state2.suggestions,\n focusIndex = _this$state2.focusIndex;\n var _Object$values$reduce = Object.values(suggestions).reduce(function (acc, _ref) {\n var results = _ref.results,\n queryInfo = _ref.queryInfo;\n return [].concat(_toConsumableArray(acc), _toConsumableArray(results.map(function (result) {\n return {\n result: result,\n queryInfo: queryInfo\n };\n })));\n }, [])[focusIndex],\n result = _Object$values$reduce.result,\n queryInfo = _Object$values$reduce.queryInfo;\n\n _this.addMention(result, queryInfo);\n\n _this.setState({\n focusIndex: 0\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleBlur\", function (ev) {\n var clickedSuggestion = _this._suggestionsMouseDown;\n _this._suggestionsMouseDown = false; // only reset selection if the mousedown happened on an element\n // other than the suggestions overlay\n\n if (!clickedSuggestion) {\n _this.setState({\n selectionStart: null,\n selectionEnd: null\n });\n }\n\n window.setTimeout(function () {\n _this.updateHighlighterScroll();\n }, 1);\n\n _this.props.onBlur(ev, clickedSuggestion);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleSuggestionsMouseDown\", function (ev) {\n _this._suggestionsMouseDown = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleSuggestionsMouseEnter\", function (focusIndex) {\n _this.setState({\n focusIndex: focusIndex,\n scrollFocusedIntoView: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateSuggestionsPosition\", function () {\n var caretPosition = _this.state.caretPosition;\n var _this$props5 = _this.props,\n suggestionsPortalHost = _this$props5.suggestionsPortalHost,\n allowSuggestionsAboveCursor = _this$props5.allowSuggestionsAboveCursor,\n forceSuggestionsAboveCursor = _this$props5.forceSuggestionsAboveCursor;\n\n if (!caretPosition || !_this.suggestionsElement) {\n return;\n }\n\n var suggestions = _this.suggestionsElement;\n var highlighter = _this.highlighterElement; // first get viewport-relative position (highlighter is offsetParent of caret):\n\n var caretOffsetParentRect = highlighter.getBoundingClientRect();\n var caretHeight = getComputedStyleLengthProp(highlighter, 'font-size');\n var viewportRelative = {\n left: caretOffsetParentRect.left + caretPosition.left,\n top: caretOffsetParentRect.top + caretPosition.top + caretHeight\n };\n var viewportHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n\n if (!suggestions) {\n return;\n }\n\n var position = {}; // if suggestions menu is in a portal, update position to be releative to its portal node\n\n if (suggestionsPortalHost) {\n position.position = 'fixed';\n var left = viewportRelative.left;\n var top = viewportRelative.top; // absolute/fixed positioned elements are positioned according to their entire box including margins; so we remove margins here:\n\n left -= getComputedStyleLengthProp(suggestions, 'margin-left');\n top -= getComputedStyleLengthProp(suggestions, 'margin-top'); // take into account highlighter/textinput scrolling:\n\n left -= highlighter.scrollLeft;\n top -= highlighter.scrollTop; // guard for mentions suggestions list clipped by right edge of window\n\n var viewportWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n\n if (left + suggestions.offsetWidth > viewportWidth) {\n position.left = Math.max(0, viewportWidth - suggestions.offsetWidth);\n } else {\n position.left = left;\n } // guard for mentions suggestions list clipped by bottom edge of window if allowSuggestionsAboveCursor set to true.\n // Move the list up above the caret if it's getting cut off by the bottom of the window, provided that the list height\n // is small enough to NOT cover up the caret\n\n\n if (allowSuggestionsAboveCursor && top + suggestions.offsetHeight > viewportHeight && suggestions.offsetHeight < top - caretHeight || forceSuggestionsAboveCursor) {\n position.top = Math.max(0, top - suggestions.offsetHeight - caretHeight);\n } else {\n position.top = top;\n }\n } else {\n var _left = caretPosition.left - highlighter.scrollLeft;\n\n var _top = caretPosition.top - highlighter.scrollTop; // guard for mentions suggestions list clipped by right edge of window\n\n\n if (_left + suggestions.offsetWidth > _this.containerElement.offsetWidth) {\n position.right = 0;\n } else {\n position.left = _left;\n } // guard for mentions suggestions list clipped by bottom edge of window if allowSuggestionsAboveCursor set to true.\n // move the list up above the caret if it's getting cut off by the bottom of the window, provided that the list height\n // is small enough to NOT cover up the caret\n\n\n if (allowSuggestionsAboveCursor && viewportRelative.top - highlighter.scrollTop + suggestions.offsetHeight > viewportHeight && suggestions.offsetHeight < caretOffsetParentRect.top - caretHeight - highlighter.scrollTop) {\n position.top = _top - suggestions.offsetHeight - caretHeight;\n } else {\n position.top = _top;\n }\n }\n\n if (position.left === _this.state.suggestionsPosition.left && position.top === _this.state.suggestionsPosition.top && position.position === _this.state.suggestionsPosition.position) {\n return;\n }\n\n _this.setState({\n suggestionsPosition: position\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateHighlighterScroll\", function () {\n var input = _this.inputElement;\n var highlighter = _this.highlighterElement;\n\n if (!input || !highlighter) {\n // since the invocation of this function is deferred,\n // the whole component may have been unmounted in the meanwhile\n return;\n }\n\n highlighter.scrollLeft = input.scrollLeft;\n highlighter.scrollTop = input.scrollTop;\n highlighter.height = input.height;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleCompositionStart\", function () {\n isComposing = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleCompositionEnd\", function () {\n isComposing = false;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setSelection\", function (selectionStart, selectionEnd) {\n if (selectionStart === null || selectionEnd === null) return;\n var el = _this.inputElement;\n\n if (el.setSelectionRange) {\n el.setSelectionRange(selectionStart, selectionEnd);\n } else if (el.createTextRange) {\n var range = el.createTextRange();\n range.collapse(true);\n range.moveEnd('character', selectionEnd);\n range.moveStart('character', selectionStart);\n range.select();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateMentionsQueries\", function (plainTextValue, caretPosition) {\n // Invalidate previous queries. Async results for previous queries will be neglected.\n _this._queryId++;\n _this.suggestions = {};\n\n _this.setState({\n suggestions: {}\n });\n\n var value = _this.props.value || '';\n var children = _this.props.children;\n var config = readConfigFromChildren(children);\n var positionInValue = mapPlainTextIndex(value, config, caretPosition, 'NULL'); // If caret is inside of mention, do not query\n\n if (positionInValue === null) {\n return;\n } // Extract substring in between the end of the previous mention and the caret\n\n\n var substringStartIndex = getEndOfLastMention(value.substring(0, positionInValue), config);\n var substring = plainTextValue.substring(substringStartIndex, caretPosition); // Check if suggestions have to be shown:\n // Match the trigger patterns of all Mention children on the extracted substring\n\n React.Children.forEach(children, function (child, childIndex) {\n if (!child) {\n return;\n }\n\n var regex = makeTriggerRegex(child.props.trigger, _this.props);\n var match = substring.match(regex);\n\n if (match) {\n var querySequenceStart = substringStartIndex + substring.indexOf(match[1], match.index);\n\n _this.queryData(match[2], childIndex, querySequenceStart, querySequenceStart + match[1].length, plainTextValue);\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"clearSuggestions\", function () {\n // Invalidate previous queries. Async results for previous queries will be neglected.\n _this._queryId++;\n _this.suggestions = {};\n\n _this.setState({\n suggestions: {},\n focusIndex: 0\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"queryData\", function (query, childIndex, querySequenceStart, querySequenceEnd, plainTextValue) {\n var _this$props6 = _this.props,\n children = _this$props6.children,\n ignoreAccents = _this$props6.ignoreAccents;\n var mentionChild = Children.toArray(children)[childIndex];\n var provideData = getDataProvider(mentionChild.props.data, ignoreAccents);\n var syncResult = provideData(query, _this.updateSuggestions.bind(null, _this._queryId, childIndex, query, querySequenceStart, querySequenceEnd, plainTextValue));\n\n if (syncResult instanceof Array) {\n _this.updateSuggestions(_this._queryId, childIndex, query, querySequenceStart, querySequenceEnd, plainTextValue, syncResult);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateSuggestions\", function (queryId, childIndex, query, querySequenceStart, querySequenceEnd, plainTextValue, results) {\n // neglect async results from previous queries\n if (queryId !== _this._queryId) return; // save in property so that multiple sync state updates from different mentions sources\n // won't overwrite each other\n\n _this.suggestions = _objectSpread({}, _this.suggestions, _defineProperty({}, childIndex, {\n queryInfo: {\n childIndex: childIndex,\n query: query,\n querySequenceStart: querySequenceStart,\n querySequenceEnd: querySequenceEnd,\n plainTextValue: plainTextValue\n },\n results: results\n }));\n var focusIndex = _this.state.focusIndex;\n var suggestionsCount = countSuggestions(_this.suggestions);\n\n _this.setState({\n suggestions: _this.suggestions,\n focusIndex: focusIndex >= suggestionsCount ? Math.max(suggestionsCount - 1, 0) : focusIndex\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"addMention\", function (_ref2, _ref3) {\n var id = _ref2.id,\n display = _ref2.display;\n var childIndex = _ref3.childIndex,\n querySequenceStart = _ref3.querySequenceStart,\n querySequenceEnd = _ref3.querySequenceEnd,\n plainTextValue = _ref3.plainTextValue;\n // Insert mention in the marked up value at the correct position\n var value = _this.props.value || '';\n var config = readConfigFromChildren(_this.props.children);\n var mentionsChild = Children.toArray(_this.props.children)[childIndex];\n var _mentionsChild$props = mentionsChild.props,\n markup = _mentionsChild$props.markup,\n displayTransform = _mentionsChild$props.displayTransform,\n appendSpaceOnAdd = _mentionsChild$props.appendSpaceOnAdd,\n onAdd = _mentionsChild$props.onAdd;\n var start = mapPlainTextIndex(value, config, querySequenceStart, 'START');\n var end = start + querySequenceEnd - querySequenceStart;\n var insert = makeMentionsMarkup(markup, id, display);\n\n if (appendSpaceOnAdd) {\n insert += ' ';\n }\n\n var newValue = spliceString(value, start, end, insert); // Refocus input and set caret position to end of mention\n\n _this.inputElement.focus();\n\n var displayValue = displayTransform(id, display);\n\n if (appendSpaceOnAdd) {\n displayValue += ' ';\n }\n\n var newCaretPosition = querySequenceStart + displayValue.length;\n\n _this.setState({\n selectionStart: newCaretPosition,\n selectionEnd: newCaretPosition,\n setSelectionAfterMentionChange: true\n }); // Propagate change\n\n\n var eventMock = {\n target: {\n value: newValue\n }\n };\n var mentions = getMentions(newValue, config);\n var newPlainTextValue = spliceString(plainTextValue, querySequenceStart, querySequenceEnd, displayValue);\n\n _this.executeOnChange(eventMock, newValue, newPlainTextValue, mentions);\n\n if (onAdd) {\n onAdd(id, display, start, end);\n } // Make sure the suggestions overlay is closed\n\n\n _this.clearSuggestions();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"isLoading\", function () {\n var isLoading = false;\n React.Children.forEach(_this.props.children, function (child) {\n isLoading = isLoading || child && child.props.isLoading;\n });\n return isLoading;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"isOpened\", function () {\n return isNumber(_this.state.selectionStart) && (countSuggestions(_this.state.suggestions) !== 0 || _this.isLoading());\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_queryId\", 0);\n\n _this.suggestions = {};\n _this.uuidSuggestionsOverlay = Math.random().toString(16).substring(2);\n _this.handleCopy = _this.handleCopy.bind(_assertThisInitialized(_this));\n _this.handleCut = _this.handleCut.bind(_assertThisInitialized(_this));\n _this.handlePaste = _this.handlePaste.bind(_assertThisInitialized(_this));\n _this.state = {\n focusIndex: 0,\n selectionStart: null,\n selectionEnd: null,\n suggestions: {},\n caretPosition: null,\n suggestionsPosition: {}\n };\n return _this;\n }\n\n _createClass(MentionsInput, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n document.addEventListener('copy', this.handleCopy);\n document.addEventListener('cut', this.handleCut);\n document.addEventListener('paste', this.handlePaste);\n this.updateSuggestionsPosition();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n // Update position of suggestions unless this componentDidUpdate was\n // triggered by an update to suggestionsPosition.\n if (prevState.suggestionsPosition === this.state.suggestionsPosition) {\n this.updateSuggestionsPosition();\n } // maintain selection in case a mention is added/removed causing\n // the cursor to jump to the end\n\n\n if (this.state.setSelectionAfterMentionChange) {\n this.setState({\n setSelectionAfterMentionChange: false\n });\n this.setSelection(this.state.selectionStart, this.state.selectionEnd);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener('copy', this.handleCopy);\n document.removeEventListener('cut', this.handleCut);\n document.removeEventListener('paste', this.handlePaste);\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(\"div\", _extends({\n ref: this.setContainerElement\n }, this.props.style), this.renderControl(), this.renderSuggestionsOverlay());\n }\n }, {\n key: \"handlePaste\",\n value: function handlePaste(event) {\n if (event.target !== this.inputElement) {\n return;\n }\n\n if (!this.supportsClipboardActions(event)) {\n return;\n }\n\n event.preventDefault();\n var _this$state3 = this.state,\n selectionStart = _this$state3.selectionStart,\n selectionEnd = _this$state3.selectionEnd;\n var _this$props7 = this.props,\n value = _this$props7.value,\n children = _this$props7.children;\n var config = readConfigFromChildren(children);\n var markupStartIndex = mapPlainTextIndex(value, config, selectionStart, 'START');\n var markupEndIndex = mapPlainTextIndex(value, config, selectionEnd, 'END');\n var pastedMentions = event.clipboardData.getData('text/react-mentions');\n var pastedData = event.clipboardData.getData('text/plain');\n var newValue = spliceString(value, markupStartIndex, markupEndIndex, pastedMentions || pastedData).replace(/\\r/g, '');\n var newPlainTextValue = getPlainText(newValue, config);\n var eventMock = {\n target: _objectSpread({}, event.target, {\n value: newValue\n })\n };\n this.executeOnChange(eventMock, newValue, newPlainTextValue, getMentions(newValue, config)); // Move the cursor position to the end of the pasted data\n\n var startOfMention = findStartOfMentionInPlainText(value, config, selectionStart);\n var nextPos = (startOfMention || selectionStart) + getPlainText(pastedMentions || pastedData, config).length;\n this.setSelection(nextPos, nextPos);\n }\n }, {\n key: \"saveSelectionToClipboard\",\n value: function saveSelectionToClipboard(event) {\n var _this$state4 = this.state,\n selectionStart = _this$state4.selectionStart,\n selectionEnd = _this$state4.selectionEnd;\n var _this$props8 = this.props,\n children = _this$props8.children,\n value = _this$props8.value;\n var config = readConfigFromChildren(children);\n var markupStartIndex = mapPlainTextIndex(value, config, selectionStart, 'START');\n var markupEndIndex = mapPlainTextIndex(value, config, selectionEnd, 'END');\n event.clipboardData.setData('text/plain', event.target.value.slice(selectionStart, selectionEnd));\n event.clipboardData.setData('text/react-mentions', value.slice(markupStartIndex, markupEndIndex));\n }\n }, {\n key: \"supportsClipboardActions\",\n value: function supportsClipboardActions(event) {\n return !!event.clipboardData;\n }\n }, {\n key: \"handleCopy\",\n value: function handleCopy(event) {\n if (event.target !== this.inputElement) {\n return;\n }\n\n if (!this.supportsClipboardActions(event)) {\n return;\n }\n\n event.preventDefault();\n this.saveSelectionToClipboard(event);\n }\n }, {\n key: \"handleCut\",\n value: function handleCut(event) {\n if (event.target !== this.inputElement) {\n return;\n }\n\n if (!this.supportsClipboardActions(event)) {\n return;\n }\n\n event.preventDefault();\n this.saveSelectionToClipboard(event);\n var _this$state5 = this.state,\n selectionStart = _this$state5.selectionStart,\n selectionEnd = _this$state5.selectionEnd;\n var _this$props9 = this.props,\n children = _this$props9.children,\n value = _this$props9.value;\n var config = readConfigFromChildren(children);\n var markupStartIndex = mapPlainTextIndex(value, config, selectionStart, 'START');\n var markupEndIndex = mapPlainTextIndex(value, config, selectionEnd, 'END');\n var newValue = [value.slice(0, markupStartIndex), value.slice(markupEndIndex)].join('');\n var newPlainTextValue = getPlainText(newValue, config);\n var eventMock = {\n target: _objectSpread({}, event.target, {\n value: newPlainTextValue\n })\n };\n this.executeOnChange(eventMock, newValue, newPlainTextValue, getMentions(value, config));\n } // Handle input element's change event\n\n }]);\n\n return MentionsInput;\n}(React.Component);\n/**\n * Returns the computed length property value for the provided element.\n * Note: According to spec and testing, can count on length values coming back in pixels. See https://developer.mozilla.org/en-US/docs/Web/CSS/used_value#Difference_from_computed_value\n */\n\n\n_defineProperty(MentionsInput, \"propTypes\", propTypes);\n\n_defineProperty(MentionsInput, \"defaultProps\", {\n ignoreAccents: false,\n singleLine: false,\n allowSuggestionsAboveCursor: false,\n onKeyDown: function onKeyDown() {\n return null;\n },\n onSelect: function onSelect() {\n return null;\n },\n onBlur: function onBlur() {\n return null;\n }\n});\n\nvar getComputedStyleLengthProp = function getComputedStyleLengthProp(forElement, propertyName) {\n var length = parseFloat(window.getComputedStyle(forElement, null).getPropertyValue(propertyName));\n return isFinite(length) ? length : 0;\n};\n\nvar isMobileSafari = typeof navigator !== 'undefined' && /iPhone|iPad|iPod/i.test(navigator.userAgent);\nvar styled$3 = createDefaultStyle({\n position: 'relative',\n overflowY: 'visible',\n input: {\n display: 'block',\n width: '100%',\n position: 'absolute',\n margin: 0,\n top: 0,\n left: 0,\n boxSizing: 'border-box',\n backgroundColor: 'transparent',\n fontFamily: 'inherit',\n fontSize: 'inherit',\n letterSpacing: 'inherit'\n },\n '&multiLine': {\n input: _objectSpread({\n height: '100%',\n bottom: 0,\n overflow: 'hidden',\n resize: 'none'\n }, isMobileSafari ? {\n marginTop: 1,\n marginLeft: -3\n } : null)\n }\n}, function (_ref4) {\n var singleLine = _ref4.singleLine;\n return {\n '&singleLine': singleLine,\n '&multiLine': !singleLine\n };\n});\nvar MentionsInput$1 = styled$3(MentionsInput);\n\nvar defaultStyle = {\n fontWeight: 'inherit'\n};\n\nvar Mention = function Mention(_ref) {\n var display = _ref.display,\n style = _ref.style,\n className = _ref.className,\n classNames = _ref.classNames;\n var styles = useStyles(defaultStyle, {\n style: style,\n className: className,\n classNames: classNames\n });\n return React.createElement(\"strong\", styles, display);\n};\n\nMention.propTypes = {\n /**\n * Called when a new mention is added in the input\n *\n * Example:\n *\n * ```js\n * function(id, display) {\n * console.log(\"user \" + display + \" was mentioned!\");\n * }\n * ```\n */\n onAdd: PropTypes.func,\n onRemove: PropTypes.func,\n renderSuggestion: PropTypes.func,\n trigger: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(RegExp)]),\n markup: PropTypes.string,\n displayTransform: PropTypes.func,\n\n /**\n * If set to `true` spaces will not interrupt matching suggestions\n */\n allowSpaceInQuery: PropTypes.bool,\n isLoading: PropTypes.bool\n};\nMention.defaultProps = {\n trigger: '@',\n markup: '@[__display__](__id__)',\n displayTransform: function displayTransform(id, display) {\n return display || id;\n },\n onAdd: function onAdd() {\n return null;\n },\n onRemove: function onRemove() {\n return null;\n },\n renderSuggestion: null,\n isLoading: false,\n appendSpaceOnAdd: false\n};\n\nexport { Mention, MentionsInput$1 as MentionsInput };\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport createContext from '@hypnosphi/create-react-context';\nexport var ManagerReferenceNodeContext = createContext();\nexport var ManagerReferenceNodeSetterContext = createContext();\n\nvar Manager =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Manager, _React$Component);\n\n function Manager() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"referenceNode\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setReferenceNode\", function (newReferenceNode) {\n if (newReferenceNode && _this.referenceNode !== newReferenceNode) {\n _this.referenceNode = newReferenceNode;\n\n _this.forceUpdate();\n }\n });\n\n return _this;\n }\n\n var _proto = Manager.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.referenceNode = null;\n };\n\n _proto.render = function render() {\n return React.createElement(ManagerReferenceNodeContext.Provider, {\n value: this.referenceNode\n }, React.createElement(ManagerReferenceNodeSetterContext.Provider, {\n value: this.setReferenceNode\n }, this.props.children));\n };\n\n return Manager;\n}(React.Component);\n\nexport { Manager as default };","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overridden using the `options` argument of Popper.js.
\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport deepEqual from \"deep-equal\";\nimport * as React from 'react';\nimport PopperJS from 'popper.js';\nimport { ManagerReferenceNodeContext } from './Manager';\nimport { unwrapArray, setRef, shallowEqual } from './utils';\nvar initialStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n opacity: 0,\n pointerEvents: 'none'\n};\nvar initialArrowStyle = {};\nexport var InnerPopper =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerPopper, _React$Component);\n\n function InnerPopper() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n data: undefined,\n placement: undefined\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popperInstance\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popperNode\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"arrowNode\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setPopperNode\", function (popperNode) {\n if (!popperNode || _this.popperNode === popperNode) return;\n setRef(_this.props.innerRef, popperNode);\n _this.popperNode = popperNode;\n\n _this.updatePopperInstance();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setArrowNode\", function (arrowNode) {\n _this.arrowNode = arrowNode;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updateStateModifier\", {\n enabled: true,\n order: 900,\n fn: function fn(data) {\n var placement = data.placement;\n\n _this.setState({\n data: data,\n placement: placement\n });\n\n return data;\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOptions\", function () {\n return {\n placement: _this.props.placement,\n eventsEnabled: _this.props.eventsEnabled,\n positionFixed: _this.props.positionFixed,\n modifiers: _extends({}, _this.props.modifiers, {\n arrow: _extends({}, _this.props.modifiers && _this.props.modifiers.arrow, {\n enabled: !!_this.arrowNode,\n element: _this.arrowNode\n }),\n applyStyle: {\n enabled: false\n },\n updateStateModifier: _this.updateStateModifier\n })\n };\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPopperStyle\", function () {\n return !_this.popperNode || !_this.state.data ? initialStyle : _extends({\n position: _this.state.data.offsets.popper.position\n }, _this.state.data.styles);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPopperPlacement\", function () {\n return !_this.state.data ? undefined : _this.state.placement;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getArrowStyle\", function () {\n return !_this.arrowNode || !_this.state.data ? initialArrowStyle : _this.state.data.arrowStyles;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOutOfBoundariesState\", function () {\n return _this.state.data ? _this.state.data.hide : undefined;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"destroyPopperInstance\", function () {\n if (!_this.popperInstance) return;\n\n _this.popperInstance.destroy();\n\n _this.popperInstance = null;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updatePopperInstance\", function () {\n _this.destroyPopperInstance();\n\n var _assertThisInitialize = _assertThisInitialized(_assertThisInitialized(_this)),\n popperNode = _assertThisInitialize.popperNode;\n\n var referenceElement = _this.props.referenceElement;\n if (!referenceElement || !popperNode) return;\n _this.popperInstance = new PopperJS(referenceElement, popperNode, _this.getOptions());\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scheduleUpdate\", function () {\n if (_this.popperInstance) {\n _this.popperInstance.scheduleUpdate();\n }\n });\n\n return _this;\n }\n\n var _proto = InnerPopper.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // If the Popper.js options have changed, update the instance (destroy + create)\n if (this.props.placement !== prevProps.placement || this.props.referenceElement !== prevProps.referenceElement || this.props.positionFixed !== prevProps.positionFixed || !deepEqual(this.props.modifiers, prevProps.modifiers, {\n strict: true\n })) {\n // develop only check that modifiers isn't being updated needlessly\n if (process.env.NODE_ENV === \"development\") {\n if (this.props.modifiers !== prevProps.modifiers && this.props.modifiers != null && prevProps.modifiers != null && shallowEqual(this.props.modifiers, prevProps.modifiers)) {\n console.warn(\"'modifiers' prop reference updated even though all values appear the same.\\nConsider memoizing the 'modifiers' object to avoid needless rendering.\");\n }\n }\n\n this.updatePopperInstance();\n } else if (this.props.eventsEnabled !== prevProps.eventsEnabled && this.popperInstance) {\n this.props.eventsEnabled ? this.popperInstance.enableEventListeners() : this.popperInstance.disableEventListeners();\n } // A placement difference in state means popper determined a new placement\n // apart from the props value. By the time the popper element is rendered with\n // the new position Popper has already measured it, if the place change triggers\n // a size change it will result in a misaligned popper. So we schedule an update to be sure.\n\n\n if (prevState.placement !== this.state.placement) {\n this.scheduleUpdate();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n setRef(this.props.innerRef, null);\n this.destroyPopperInstance();\n };\n\n _proto.render = function render() {\n return unwrapArray(this.props.children)({\n ref: this.setPopperNode,\n style: this.getPopperStyle(),\n placement: this.getPopperPlacement(),\n outOfBoundaries: this.getOutOfBoundariesState(),\n scheduleUpdate: this.scheduleUpdate,\n arrowProps: {\n ref: this.setArrowNode,\n style: this.getArrowStyle()\n }\n });\n };\n\n return InnerPopper;\n}(React.Component);\n\n_defineProperty(InnerPopper, \"defaultProps\", {\n placement: 'bottom',\n eventsEnabled: true,\n referenceElement: undefined,\n positionFixed: false\n});\n\nvar placements = PopperJS.placements;\nexport { placements };\nexport default function Popper(_ref) {\n var referenceElement = _ref.referenceElement,\n props = _objectWithoutPropertiesLoose(_ref, [\"referenceElement\"]);\n\n return React.createElement(ManagerReferenceNodeContext.Consumer, null, function (referenceNode) {\n return React.createElement(InnerPopper, _extends({\n referenceElement: referenceElement !== undefined ? referenceElement : referenceNode\n }, props));\n });\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport warning from 'warning';\nimport { ManagerReferenceNodeSetterContext } from './Manager';\nimport { safeInvoke, unwrapArray, setRef } from './utils';\n\nvar InnerReference =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerReference, _React$Component);\n\n function InnerReference() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"refHandler\", function (node) {\n setRef(_this.props.innerRef, node);\n safeInvoke(_this.props.setReferenceNode, node);\n });\n\n return _this;\n }\n\n var _proto = InnerReference.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n setRef(this.props.innerRef, null);\n };\n\n _proto.render = function render() {\n warning(Boolean(this.props.setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');\n return unwrapArray(this.props.children)({\n ref: this.refHandler\n });\n };\n\n return InnerReference;\n}(React.Component);\n\nexport default function Reference(props) {\n return React.createElement(ManagerReferenceNodeSetterContext.Consumer, null, function (setReferenceNode) {\n return React.createElement(InnerReference, _extends({\n setReferenceNode: setReferenceNode\n }, props));\n });\n}","/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n if (typeof fn === \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return fn.apply(void 0, args);\n }\n};\n/**\n * Does a shallow equality check of two objects by comparing the reference\n * equality of each value.\n */\n\nexport var shallowEqual = function shallowEqual(objA, objB) {\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n\n if (bKeys.length !== aKeys.length) {\n return false;\n }\n\n for (var i = 0; i < bKeys.length; i++) {\n var key = aKeys[i];\n\n if (objA[key] !== objB[key]) {\n return false;\n }\n }\n\n return true;\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n // if its a function call it\n if (typeof ref === \"function\") {\n return safeInvoke(ref, node);\n } // otherwise we should treat it as a ref object\n else if (ref != null) {\n ref.current = node;\n }\n};","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _gud = require('gud');\n\nvar _gud2 = _interopRequireDefault(_gud);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__';\n\n var Provider = function (_Component) {\n _inherits(Provider, _Component);\n\n function Provider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Provider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Provider.prototype.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits = void 0;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== 'production') {\n (0, _warning2.default)((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n Provider.prototype.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(_react.Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex);\n\n var Consumer = function (_Component2) {\n _inherits(Consumer, _Component2);\n\n function Consumer() {\n var _temp2, _this2, _ret2;\n\n _classCallCheck(this, Consumer);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {\n value: _this2.getValue()\n }, _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({ value: _this2.getValue() });\n }\n }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n }\n\n Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n var observedBits = this.props.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n Consumer.prototype.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n Consumer.prototype.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(_react.Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType);\n\n\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nexports.default = createReactContext;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _implementation = require('./implementation');\n\nvar _implementation2 = _interopRequireDefault(_implementation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createContext || _implementation2.default;\nmodule.exports = exports['default'];","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","import React from 'react';\nexport var ReactReduxContext = React.createContext(null);\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nvar CLEARED = null;\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n var batch = getBatch(); // the current/next pattern is copied from redux's createStore code.\n // TODO: refactor+expose that code to be reusable here?\n\n var current = [];\n var next = [];\n return {\n clear: function clear() {\n next = CLEARED;\n current = CLEARED;\n },\n notify: function notify() {\n var listeners = current = next;\n batch(function () {\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n });\n },\n get: function get() {\n return next;\n },\n subscribe: function subscribe(listener) {\n var isSubscribed = true;\n if (next === current) next = current.slice();\n next.push(listener);\n return function unsubscribe() {\n if (!isSubscribed || current === CLEARED) return;\n isSubscribed = false;\n if (next === current) next = current.slice();\n next.splice(next.indexOf(listener), 1);\n };\n }\n };\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(store, parentSub) {\n this.store = store;\n this.parentSub = parentSub;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n this.handleChangeWrapper = this.handleChangeWrapper.bind(this);\n }\n\n var _proto = Subscription.prototype;\n\n _proto.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n _proto.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n _proto.handleChangeWrapper = function handleChangeWrapper() {\n if (this.onStateChange) {\n this.onStateChange();\n }\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n _proto.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.handleChangeWrapper) : this.store.subscribe(this.handleChangeWrapper);\n this.listeners = createListenerCollection();\n }\n };\n\n _proto.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\nexport { Subscription as default };","import _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport Subscription from '../utils/Subscription';\n\nvar Provider =\n/*#__PURE__*/\nfunction (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n var store = props.store;\n _this.notifySubscribers = _this.notifySubscribers.bind(_assertThisInitialized(_this));\n var subscription = new Subscription(store);\n subscription.onStateChange = _this.notifySubscribers;\n _this.state = {\n store: store,\n subscription: subscription\n };\n _this.previousState = store.getState();\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n this.state.subscription.trySubscribe();\n\n if (this.previousState !== this.props.store.getState()) {\n this.state.subscription.notifyNestedSubs();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.unsubscribe) this.unsubscribe();\n this.state.subscription.tryUnsubscribe();\n this._isMounted = false;\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.store !== prevProps.store) {\n this.state.subscription.tryUnsubscribe();\n var subscription = new Subscription(this.props.store);\n subscription.onStateChange = this.notifySubscribers;\n this.setState({\n store: this.props.store,\n subscription: subscription\n });\n }\n };\n\n _proto.notifySubscribers = function notifySubscribers() {\n this.state.subscription.notifyNestedSubs();\n };\n\n _proto.render = function render() {\n var Context = this.props.context || ReactReduxContext;\n return React.createElement(Context.Provider, {\n value: this.state\n }, this.props.children);\n };\n\n return Provider;\n}(Component);\n\nProvider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n};\nexport default Provider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport React, { useContext, useMemo, useEffect, useLayoutEffect, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n var updateCount = state[1];\n return [action.payload, updateCount + 1];\n}\n\nvar initStateUpdates = function initStateUpdates() {\n return [null, 0];\n}; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect because we want\n// `connect` to perform sync updates to a ref to save the latest props after\n// a render is actually committed to the DOM.\n\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"]);\n\n invariant(renderCountProp === undefined, \"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n invariant(!withRef, 'withRef is removed. To access the wrapped instance, use a ref on the connected component');\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: . ' + 'You may also pass a {context : MyContext} option to connect';\n invariant(storeKey === 'store', 'storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production') {\n invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n\n function createChildSelector(store) {\n return selectorFactory(store.dispatch, selectorFactoryOptions);\n } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n // that just executes the given callback immediately.\n\n\n var usePureOnlyMemo = pure ? useMemo : function (callback) {\n return callback();\n };\n\n function ConnectFunction(props) {\n var _useMemo = useMemo(function () {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n var forwardedRef = props.forwardedRef,\n wrapperProps = _objectWithoutPropertiesLoose(props, [\"forwardedRef\"]);\n\n return [props.context, forwardedRef, wrapperProps];\n }, [props]),\n propsContext = _useMemo[0],\n forwardedRef = _useMemo[1],\n wrapperProps = _useMemo[2];\n\n var ContextToUse = useMemo(function () {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && isContextConsumer(React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context\n\n var didStoreComeFromProps = Boolean(props.store);\n var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n invariant(didStoreComeFromProps || didStoreComeFromContext, \"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + \"or pass a custom React context provider to and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n var store = props.store || contextValue.store;\n var childPropsSelector = useMemo(function () {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return createChildSelector(store);\n }, [store]);\n\n var _useMemo2 = useMemo(function () {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n var subscription = new Subscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]),\n subscription = _useMemo2[0],\n notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n\n var overriddenContextValue = useMemo(function () {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription: subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n // causes a change to the calculated child component props (or we caught an error in mapState)\n\n var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n _useReducer$ = _useReducer[0],\n previousStateUpdateResult = _useReducer$[0],\n forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n if (previousStateUpdateResult && previousStateUpdateResult.error) {\n throw previousStateUpdateResult.error;\n } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n var lastChildProps = useRef();\n var lastWrapperProps = useRef(wrapperProps);\n var childPropsFromStoreUpdate = useRef();\n var renderIsScheduled = useRef(false);\n var actualChildProps = usePureOnlyMemo(function () {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n useIsomorphicLayoutEffect(function () {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n lastChildProps.current = actualChildProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n }); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n useIsomorphicLayoutEffect(function () {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n var didUnsubscribe = false;\n var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n var checkForUpdates = function checkForUpdates() {\n if (didUnsubscribe) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n }\n\n var latestStoreState = store.getState();\n var newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n forceComponentUpdateDispatch({\n type: 'STORE_UPDATED',\n payload: {\n latestStoreState: latestStoreState,\n error: error\n }\n });\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n var unsubscribeWrapper = function unsubscribeWrapper() {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n }, [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n var renderedWrappedComponent = useMemo(function () {\n return React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: forwardedRef\n }));\n }, [forwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n var renderedChild = useMemo(function () {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return React.createElement(Connect, _extends({}, props, {\n forwardedRef: ref\n }));\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default createConnect();","import { useReducer, useRef, useEffect, useMemo, useLayoutEffect } from 'react';\nimport invariant from 'invariant';\nimport { useReduxContext } from './useReduxContext';\nimport Subscription from '../utils/Subscription'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n/**\n * A hook to access the redux store's state. This hook takes a selector function\n * as an argument. The selector is called with the store state.\n *\n * This hook takes an optional equality comparison function as the second parameter\n * that allows you to customize the way the selected state is compared to determine\n * whether the component needs to be re-rendered.\n *\n * @param {Function} selector the selector function\n * @param {Function=} equalityFn the function that will be used to determine equality\n *\n * @returns {any} the selected state\n *\n * @example\n *\n * import React from 'react'\n * import { useSelector } from 'react-redux'\n *\n * export const CounterComponent = () => {\n * const counter = useSelector(state => state.counter)\n * return
{counter}
\n * }\n */\n\n\nexport function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n invariant(selector, \"You must pass a selector to useSelectors\");\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return new Subscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestSelectedState = useRef();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || latestSubscriptionCallbackError.current) {\n selectedState = selector(store.getState());\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n var errorMessage = \"An error occured while selecting the store state: \" + err.message + \".\";\n\n if (latestSubscriptionCallbackError.current) {\n errorMessage += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\nOriginal stack trace:\";\n }\n\n throw new Error(errorMessage);\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newSelectedState = latestSelector.current(store.getState());\n\n if (equalityFn(newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = newSelectedState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender({});\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}","import Provider from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport { ReactReduxContext } from './components/Context';\nimport connect from './connect/connect';\nimport { useDispatch } from './hooks/useDispatch';\nimport { useSelector } from './hooks/useSelector';\nimport { useStore } from './hooks/useStore';\nimport { setBatch } from './utils/batch';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport shallowEqual from './utils/shallowEqual';\nsetBatch(batch);\nexport { Provider, connectAdvanced, ReactReduxContext, connect, batch, useDispatch, useSelector, useStore, shallowEqual };","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _resizeObserverPolyfill = require('resize-observer-polyfill');\n\nvar _resizeObserverPolyfill2 = _interopRequireDefault(_resizeObserverPolyfill);\n\nvar _lodash = require('lodash.debounce');\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _lodash3 = require('lodash.throttle');\n\nvar _lodash4 = _interopRequireDefault(_lodash3);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar listMode = { debounce: _lodash2.default, throttle: _lodash4.default };\n\nvar styles = {\n position: 'absolute',\n width: 0,\n height: 0,\n visibility: 'hidden',\n display: 'none'\n};\n\nvar ResizeDetector = function (_PureComponent) {\n _inherits(ResizeDetector, _PureComponent);\n\n function ResizeDetector(props) {\n _classCallCheck(this, ResizeDetector);\n\n var _this = _possibleConstructorReturn(this, (ResizeDetector.__proto__ || Object.getPrototypeOf(ResizeDetector)).call(this, props));\n\n _this.createResizeObserver = function (entries) {\n var _this$props = _this.props,\n handleWidth = _this$props.handleWidth,\n handleHeight = _this$props.handleHeight,\n onResize = _this$props.onResize;\n\n entries.forEach(function (entry) {\n var _entry$contentRect = entry.contentRect,\n width = _entry$contentRect.width,\n height = _entry$contentRect.height;\n\n var notifyWidth = handleWidth && _this.width !== width;\n var notifyHeight = handleHeight && _this.height !== height;\n if (!_this.skipOnMount && (notifyWidth || notifyHeight)) {\n onResize(width, height);\n }\n _this.width = width;\n _this.height = height;\n _this.skipOnMount = false;\n });\n };\n\n var skipOnMount = props.skipOnMount,\n refreshMode = props.refreshMode,\n refreshRate = props.refreshRate;\n\n\n _this.width = undefined;\n _this.height = undefined;\n _this.skipOnMount = skipOnMount;\n\n var resizeObserver = listMode[refreshMode] && listMode[refreshMode](_this.createResizeObserver, refreshRate) || _this.createResizeObserver;\n\n _this.ro = new _resizeObserverPolyfill2.default(resizeObserver);\n return _this;\n }\n\n _createClass(ResizeDetector, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var resizableElementId = this.props.resizableElementId;\n\n var resizableElement = resizableElementId ? document.getElementById(resizableElementId) : this.el.parentElement;\n this.ro.observe(resizableElement);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var resizableElementId = this.props.resizableElementId;\n\n var resizableElement = resizableElementId ? document.getElementById(resizableElementId) : this.el.parentElement;\n this.ro.unobserve(resizableElement);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n return _react2.default.createElement('div', {\n style: styles,\n ref: function ref(el) {\n _this2.el = el;\n }\n });\n }\n }]);\n\n return ResizeDetector;\n}(_react.PureComponent);\n\nexports.default = ResizeDetector;\n\n\nResizeDetector.propTypes = {\n handleWidth: _propTypes2.default.bool,\n handleHeight: _propTypes2.default.bool,\n skipOnMount: _propTypes2.default.bool,\n refreshRate: _propTypes2.default.number,\n refreshMode: _propTypes2.default.string,\n resizableElementId: _propTypes2.default.string,\n onResize: _propTypes2.default.func\n};\n\nResizeDetector.defaultProps = {\n handleWidth: false,\n handleHeight: false,\n skipOnMount: false,\n refreshRate: 1000,\n refreshMode: undefined,\n resizableElementId: '',\n onResize: function onResize(e) {\n return e;\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _ResizeDetector = require('./components/ResizeDetector');\n\nvar _ResizeDetector2 = _interopRequireDefault(_ResizeDetector);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _ResizeDetector2.default;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","import { Router, __RouterContext, matchPath } from 'react-router';\nexport { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter } from 'react-router';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport { createBrowserHistory, createHashHistory, createLocation, createPath } from 'history';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport invariant from 'tiny-invariant';\n\n/**\n * The public API for a that uses HTML5 history.\n */\n\nvar BrowserRouter = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(BrowserRouter, _React$Component);\n\n function BrowserRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.history = createBrowserHistory(_this.props);\n return _this;\n }\n\n var _proto = BrowserRouter.prototype;\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return BrowserRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\") : void 0;\n };\n}\n\n/**\n * The public API for a that uses window.location.hash.\n */\n\nvar HashRouter = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(HashRouter, _React$Component);\n\n function HashRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.history = createHashHistory(_this.props);\n return _this;\n }\n\n var _proto = HashRouter.prototype;\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return HashRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { HashRouter as Router }`.\") : void 0;\n };\n}\n\nvar resolveToLocation = function resolveToLocation(to, currentLocation) {\n return typeof to === \"function\" ? to(currentLocation) : to;\n};\nvar normalizeToLocation = function normalizeToLocation(to, currentLocation) {\n return typeof to === \"string\" ? createLocation(to, null, null, currentLocation) : to;\n};\n\nvar forwardRefShim = function forwardRefShim(C) {\n return C;\n};\n\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nvar LinkAnchor = forwardRef(function (_ref, forwardedRef) {\n var innerRef = _ref.innerRef,\n navigate = _ref.navigate,\n _onClick = _ref.onClick,\n rest = _objectWithoutPropertiesLoose(_ref, [\"innerRef\", \"navigate\", \"onClick\"]);\n\n var target = rest.target;\n\n var props = _extends({}, rest, {\n onClick: function onClick(event) {\n try {\n if (_onClick) _onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && ( // ignore everything but left clicks\n !target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n }); // React 15 compat\n\n\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n\n\n return /*#__PURE__*/React.createElement(\"a\", props);\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n/**\n * The public API for rendering a history-aware .\n */\n\n\nvar Link = forwardRef(function (_ref2, forwardedRef) {\n var _ref2$component = _ref2.component,\n component = _ref2$component === void 0 ? LinkAnchor : _ref2$component,\n replace = _ref2.replace,\n to = _ref2.to,\n innerRef = _ref2.innerRef,\n rest = _objectWithoutPropertiesLoose(_ref2, [\"component\", \"replace\", \"to\", \"innerRef\"]);\n\n return /*#__PURE__*/React.createElement(__RouterContext.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var history = context.history;\n var location = normalizeToLocation(resolveToLocation(to, context.location), context.location);\n var href = location ? history.createHref(location) : \"\";\n\n var props = _extends({}, rest, {\n href: href,\n navigate: function navigate() {\n var location = resolveToLocation(to, context.location);\n var isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n var method = replace || isDuplicateNavigation ? history.replace : history.push;\n method(location);\n }\n }); // React 15 compat\n\n\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return /*#__PURE__*/React.createElement(component, props);\n });\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n var toType = PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.func]);\n var refType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.shape({\n current: PropTypes.any\n })]);\n Link.displayName = \"Link\";\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nvar forwardRefShim$1 = function forwardRefShim(C) {\n return C;\n};\n\nvar forwardRef$1 = React.forwardRef;\n\nif (typeof forwardRef$1 === \"undefined\") {\n forwardRef$1 = forwardRefShim$1;\n}\n\nfunction joinClassnames() {\n for (var _len = arguments.length, classnames = new Array(_len), _key = 0; _key < _len; _key++) {\n classnames[_key] = arguments[_key];\n }\n\n return classnames.filter(function (i) {\n return i;\n }).join(\" \");\n}\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\n\n\nvar NavLink = forwardRef$1(function (_ref, forwardedRef) {\n var _ref$ariaCurrent = _ref[\"aria-current\"],\n ariaCurrent = _ref$ariaCurrent === void 0 ? \"page\" : _ref$ariaCurrent,\n _ref$activeClassName = _ref.activeClassName,\n activeClassName = _ref$activeClassName === void 0 ? \"active\" : _ref$activeClassName,\n activeStyle = _ref.activeStyle,\n classNameProp = _ref.className,\n exact = _ref.exact,\n isActiveProp = _ref.isActive,\n locationProp = _ref.location,\n sensitive = _ref.sensitive,\n strict = _ref.strict,\n styleProp = _ref.style,\n to = _ref.to,\n innerRef = _ref.innerRef,\n rest = _objectWithoutPropertiesLoose(_ref, [\"aria-current\", \"activeClassName\", \"activeStyle\", \"className\", \"exact\", \"isActive\", \"location\", \"sensitive\", \"strict\", \"style\", \"to\", \"innerRef\"]);\n\n return /*#__PURE__*/React.createElement(__RouterContext.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var currentLocation = locationProp || context.location;\n var toLocation = normalizeToLocation(resolveToLocation(to, currentLocation), currentLocation);\n var path = toLocation.pathname; // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n\n var escapedPath = path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n var match = escapedPath ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact: exact,\n sensitive: sensitive,\n strict: strict\n }) : null;\n var isActive = !!(isActiveProp ? isActiveProp(match, currentLocation) : match);\n var className = typeof classNameProp === \"function\" ? classNameProp(isActive) : classNameProp;\n var style = typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = _extends({}, style, activeStyle);\n }\n\n var props = _extends({\n \"aria-current\": isActive && ariaCurrent || null,\n className: className,\n style: style,\n to: toLocation\n }, rest); // React 15 compat\n\n\n if (forwardRefShim$1 !== forwardRef$1) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return /*#__PURE__*/React.createElement(Link, props);\n });\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n NavLink.displayName = \"NavLink\";\n var ariaCurrentType = PropTypes.oneOf([\"page\", \"step\", \"location\", \"date\", \"time\", \"true\", \"false\"]);\n NavLink.propTypes = _extends({}, Link.propTypes, {\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n });\n}\n\nexport { BrowserRouter, HashRouter, Link, NavLink };\n//# sourceMappingURL=react-router-dom.js.map\n","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { createMemoryHistory, createLocation, locationsAreEqual, createPath } from 'history';\nimport warning from 'tiny-warning';\nimport createContext from 'mini-create-react-context';\nimport invariant from 'tiny-invariant';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport pathToRegexp from 'path-to-regexp';\nimport { isValidElementType } from 'react-is';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport hoistStatics from 'hoist-non-react-statics';\n\n// TODO: Replace with React.createContext once we can assume React 16+\n\nvar createNamedContext = function createNamedContext(name) {\n var context = createContext();\n context.displayName = name;\n return context;\n};\n\nvar historyContext = /*#__PURE__*/createNamedContext(\"Router-History\");\n\nvar context = /*#__PURE__*/createNamedContext(\"Router\");\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Router, _React$Component);\n\n Router.computeRootMatch = function computeRootMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n\n function Router(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.state = {\n location: props.history.location\n }; // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n\n _this._isMounted = false;\n _this._pendingLocation = null;\n\n if (!props.staticContext) {\n _this.unlisten = props.history.listen(function (location) {\n if (_this._isMounted) {\n _this.setState({\n location: location\n });\n } else {\n _this._pendingLocation = location;\n }\n });\n }\n\n return _this;\n }\n\n var _proto = Router.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({\n location: this._pendingLocation\n });\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(context.Provider, {\n value: {\n history: this.props.history,\n location: this.state.location,\n match: Router.computeRootMatch(this.state.location.pathname),\n staticContext: this.props.staticContext\n }\n }, /*#__PURE__*/React.createElement(historyContext.Provider, {\n children: this.props.children || null,\n value: this.props.history\n }));\n };\n\n return Router;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(prevProps.history === this.props.history, \"You cannot change \") : void 0;\n };\n}\n\n/**\n * The public API for a that stores location in memory.\n */\n\nvar MemoryRouter = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(MemoryRouter, _React$Component);\n\n function MemoryRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.history = createMemoryHistory(_this.props);\n return _this;\n }\n\n var _proto = MemoryRouter.prototype;\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return MemoryRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\") : void 0;\n };\n}\n\nvar Lifecycle = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Lifecycle, _React$Component);\n\n function Lifecycle() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Lifecycle.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n };\n\n _proto.render = function render() {\n return null;\n };\n\n return Lifecycle;\n}(React.Component);\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\n\nfunction Prompt(_ref) {\n var message = _ref.message,\n _ref$when = _ref.when,\n when = _ref$when === void 0 ? true : _ref$when;\n return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n if (!when || context.staticContext) return null;\n var method = context.history.block;\n return /*#__PURE__*/React.createElement(Lifecycle, {\n onMount: function onMount(self) {\n self.release = method(message);\n },\n onUpdate: function onUpdate(self, prevProps) {\n if (prevProps.message !== message) {\n self.release();\n self.release = method(message);\n }\n },\n onUnmount: function onUnmount(self) {\n self.release();\n },\n message: message\n });\n });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n var messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n Prompt.propTypes = {\n when: PropTypes.bool,\n message: messageType.isRequired\n };\n}\n\nvar cache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n var generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\n\n\nfunction generatePath(path, params) {\n if (path === void 0) {\n path = \"/\";\n }\n\n if (params === void 0) {\n params = {};\n }\n\n return path === \"/\" ? path : compilePath(path)(params, {\n pretty: true\n });\n}\n\n/**\n * The public API for navigating programmatically with a component.\n */\n\nfunction Redirect(_ref) {\n var computedMatch = _ref.computedMatch,\n to = _ref.to,\n _ref$push = _ref.push,\n push = _ref$push === void 0 ? false : _ref$push;\n return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var history = context.history,\n staticContext = context.staticContext;\n var method = push ? history.push : history.replace;\n var location = createLocation(computedMatch ? typeof to === \"string\" ? generatePath(to, computedMatch.params) : _extends({}, to, {\n pathname: generatePath(to.pathname, computedMatch.params)\n }) : to); // When rendering in a static context,\n // set the new location immediately.\n\n if (staticContext) {\n method(location);\n return null;\n }\n\n return /*#__PURE__*/React.createElement(Lifecycle, {\n onMount: function onMount() {\n method(location);\n },\n onUpdate: function onUpdate(self, prevProps) {\n var prevLocation = createLocation(prevProps.to);\n\n if (!locationsAreEqual(prevLocation, _extends({}, location, {\n key: prevLocation.key\n }))) {\n method(location);\n }\n },\n to: to\n });\n });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nvar cache$1 = {};\nvar cacheLimit$1 = 10000;\nvar cacheCount$1 = 0;\n\nfunction compilePath$1(path, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var pathCache = cache$1[cacheKey] || (cache$1[cacheKey] = {});\n if (pathCache[path]) return pathCache[path];\n var keys = [];\n var regexp = pathToRegexp(path, keys, options);\n var result = {\n regexp: regexp,\n keys: keys\n };\n\n if (cacheCount$1 < cacheLimit$1) {\n pathCache[path] = result;\n cacheCount$1++;\n }\n\n return result;\n}\n/**\n * Public API for matching a URL pathname to a path.\n */\n\n\nfunction matchPath(pathname, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = {\n path: options\n };\n }\n\n var _options = options,\n path = _options.path,\n _options$exact = _options.exact,\n exact = _options$exact === void 0 ? false : _options$exact,\n _options$strict = _options.strict,\n strict = _options$strict === void 0 ? false : _options$strict,\n _options$sensitive = _options.sensitive,\n sensitive = _options$sensitive === void 0 ? false : _options$sensitive;\n var paths = [].concat(path);\n return paths.reduce(function (matched, path) {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n var _compilePath = compilePath$1(path, {\n end: exact,\n strict: strict,\n sensitive: sensitive\n }),\n regexp = _compilePath.regexp,\n keys = _compilePath.keys;\n\n var match = regexp.exec(pathname);\n if (!match) return null;\n var url = match[0],\n values = match.slice(1);\n var isExact = pathname === url;\n if (exact && !isExact) return null;\n return {\n path: path,\n // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url,\n // the matched portion of the URL\n isExact: isExact,\n // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n var value = children(props);\n process.env.NODE_ENV !== \"production\" ? warning(value !== undefined, \"You returned `undefined` from the `children` function of \" + (\", but you \") + \"should have returned a React element or `null`\") : void 0;\n return value || null;\n}\n/**\n * The public API for matching a single path and rendering.\n */\n\n\nvar Route = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Route, _React$Component);\n\n function Route() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Route.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return /*#__PURE__*/React.createElement(context.Consumer, null, function (context$1) {\n !context$1 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var location = _this.props.location || context$1.location;\n var match = _this.props.computedMatch ? _this.props.computedMatch // already computed the match for us\n : _this.props.path ? matchPath(location.pathname, _this.props) : context$1.match;\n\n var props = _extends({}, context$1, {\n location: location,\n match: match\n });\n\n var _this$props = _this.props,\n children = _this$props.children,\n component = _this$props.component,\n render = _this$props.render; // Preact uses an empty array as children by\n // default, so use null if that's the case.\n\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return /*#__PURE__*/React.createElement(context.Provider, {\n value: props\n }, props.match ? children ? typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : children : component ? /*#__PURE__*/React.createElement(component, props) : render ? render(props) : null : typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : null);\n });\n };\n\n return Route;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: function component(props, propName) {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\"Invalid prop 'component' supplied to 'Route': the prop is not a valid React component\");\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.component), \"You should not use and in the same route; will be ignored\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.render), \"You should not use and in the same route; will be ignored\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.component && this.props.render), \"You should not use and in the same route; will be ignored\") : void 0;\n };\n\n Route.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n };\n}\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n return _extends({}, location, {\n pathname: addLeadingSlash(basename) + location.pathname\n });\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n var base = addLeadingSlash(basename);\n if (location.pathname.indexOf(base) !== 0) return location;\n return _extends({}, location, {\n pathname: location.pathname.substr(base.length)\n });\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return function () {\n process.env.NODE_ENV !== \"production\" ? invariant(false, \"You cannot %s with \", methodName) : invariant(false) ;\n };\n}\n\nfunction noop() {}\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\n\n\nvar StaticRouter = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(StaticRouter, _React$Component);\n\n function StaticRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.handlePush = function (location) {\n return _this.navigateTo(location, \"PUSH\");\n };\n\n _this.handleReplace = function (location) {\n return _this.navigateTo(location, \"REPLACE\");\n };\n\n _this.handleListen = function () {\n return noop;\n };\n\n _this.handleBlock = function () {\n return noop;\n };\n\n return _this;\n }\n\n var _proto = StaticRouter.prototype;\n\n _proto.navigateTo = function navigateTo(location, action) {\n var _this$props = this.props,\n _this$props$basename = _this$props.basename,\n basename = _this$props$basename === void 0 ? \"\" : _this$props$basename,\n _this$props$context = _this$props.context,\n context = _this$props$context === void 0 ? {} : _this$props$context;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n _this$props2$basename = _this$props2.basename,\n basename = _this$props2$basename === void 0 ? \"\" : _this$props2$basename,\n _this$props2$context = _this$props2.context,\n context = _this$props2$context === void 0 ? {} : _this$props2$context,\n _this$props2$location = _this$props2.location,\n location = _this$props2$location === void 0 ? \"/\" : _this$props2$location,\n rest = _objectWithoutPropertiesLoose(_this$props2, [\"basename\", \"context\", \"location\"]);\n\n var history = {\n createHref: function createHref(path) {\n return addLeadingSlash(basename + createURL(path));\n },\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n return /*#__PURE__*/React.createElement(Router, _extends({}, rest, {\n history: history,\n staticContext: context\n }));\n };\n\n return StaticRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { StaticRouter as Router }`.\") : void 0;\n };\n}\n\n/**\n * The public API for rendering the first that matches.\n */\n\nvar Switch = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Switch, _React$Component);\n\n function Switch() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Switch.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var location = _this.props.location || context.location;\n var element, match; // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n\n React.Children.forEach(_this.props.children, function (child) {\n if (match == null && /*#__PURE__*/React.isValidElement(child)) {\n element = child;\n var path = child.props.path || child.props.from;\n match = path ? matchPath(location.pathname, _extends({}, child.props, {\n path: path\n })) : context.match;\n }\n });\n return match ? /*#__PURE__*/React.cloneElement(element, {\n location: location,\n computedMatch: match\n }) : null;\n });\n };\n\n return Switch;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n };\n}\n\n/**\n * A public higher-order component to access the imperative API\n */\n\nfunction withRouter(Component) {\n var displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n\n var C = function C(props) {\n var wrappedComponentRef = props.wrappedComponentRef,\n remainingProps = _objectWithoutPropertiesLoose(props, [\"wrappedComponentRef\"]);\n\n return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <\" + displayName + \" /> outside a \") : invariant(false) : void 0;\n return /*#__PURE__*/React.createElement(Component, _extends({}, remainingProps, context, {\n ref: wrappedComponentRef\n }));\n });\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (process.env.NODE_ENV !== \"production\") {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.object])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nvar useContext = React.useContext;\nfunction useHistory() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useHistory()\") : invariant(false) : void 0;\n }\n\n return useContext(historyContext);\n}\nfunction useLocation() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useLocation()\") : invariant(false) : void 0;\n }\n\n return useContext(context).location;\n}\nfunction useParams() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useParams()\") : invariant(false) : void 0;\n }\n\n var match = useContext(context).match;\n return match ? match.params : {};\n}\nfunction useRouteMatch(path) {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useRouteMatch()\") : invariant(false) : void 0;\n }\n\n var location = useLocation();\n var match = useContext(context).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n if (typeof window !== \"undefined\") {\n var global = window;\n var key = \"__react_router_build__\";\n var buildNames = {\n cjs: \"CommonJS\",\n esm: \"ES modules\",\n umd: \"UMD\"\n };\n\n if (global[key] && global[key] !== \"esm\") {\n var initialBuildName = buildNames[global[key]];\n var secondaryBuildName = buildNames[\"esm\"]; // TODO: Add link to article that explains in detail how to avoid\n // loading 2 different builds.\n\n throw new Error(\"You are loading the \" + secondaryBuildName + \" build of React Router \" + (\"on a page that is already running the \" + initialBuildName + \" \") + \"build, so things won't work right.\");\n }\n\n global[key] = \"esm\";\n }\n}\n\nexport { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, historyContext as __HistoryContext, context as __RouterContext, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter };\n//# sourceMappingURL=react-router.js.map\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","import '@babel/runtime/helpers/objectWithoutProperties';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport '@babel/runtime/helpers/slicedToArray';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport '@babel/runtime/helpers/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport React, { Component } from 'react';\nimport 'memoize-one';\nimport '@emotion/core';\nimport 'react-dom';\nimport '@babel/runtime/helpers/typeof';\nimport { C as cleanValue } from '../../dist/index-75b02bac.browser.esm.js';\nimport { S as Select } from '../../dist/Select-e1cf49ae.browser.esm.js';\nimport '@emotion/css';\nimport '@babel/runtime/helpers/taggedTemplateLiteral';\nimport 'react-input-autosize';\nimport { m as manageState } from '../../dist/stateManager-2f2b6f5b.browser.esm.js';\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar compareOption = function compareOption() {\n var inputValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var option = arguments.length > 1 ? arguments[1] : undefined;\n var candidate = String(inputValue).toLowerCase();\n var optionValue = String(option.value).toLowerCase();\n var optionLabel = String(option.label).toLowerCase();\n return optionValue === candidate || optionLabel === candidate;\n};\n\nvar builtins = {\n formatCreateLabel: function formatCreateLabel(inputValue) {\n return \"Create \\\"\".concat(inputValue, \"\\\"\");\n },\n isValidNewOption: function isValidNewOption(inputValue, selectValue, selectOptions) {\n return !(!inputValue || selectValue.some(function (option) {\n return compareOption(inputValue, option);\n }) || selectOptions.some(function (option) {\n return compareOption(inputValue, option);\n }));\n },\n getNewOptionData: function getNewOptionData(inputValue, optionLabel) {\n return {\n label: optionLabel,\n value: inputValue,\n __isNew__: true\n };\n }\n};\nvar defaultProps = _objectSpread({\n allowCreateWhileLoading: false,\n createOptionPosition: 'last'\n}, builtins);\nvar makeCreatableSelect = function makeCreatableSelect(SelectComponent) {\n var _class, _temp;\n\n return _temp = _class = /*#__PURE__*/function (_Component) {\n _inherits(Creatable, _Component);\n\n var _super = _createSuper(Creatable);\n\n function Creatable(props) {\n var _this;\n\n _classCallCheck(this, Creatable);\n\n _this = _super.call(this, props);\n _this.select = void 0;\n\n _this.onChange = function (newValue, actionMeta) {\n var _this$props = _this.props,\n getNewOptionData = _this$props.getNewOptionData,\n inputValue = _this$props.inputValue,\n isMulti = _this$props.isMulti,\n onChange = _this$props.onChange,\n onCreateOption = _this$props.onCreateOption,\n value = _this$props.value,\n name = _this$props.name;\n\n if (actionMeta.action !== 'select-option') {\n return onChange(newValue, actionMeta);\n }\n\n var newOption = _this.state.newOption;\n var valueArray = Array.isArray(newValue) ? newValue : [newValue];\n\n if (valueArray[valueArray.length - 1] === newOption) {\n if (onCreateOption) onCreateOption(inputValue);else {\n var newOptionData = getNewOptionData(inputValue, inputValue);\n var newActionMeta = {\n action: 'create-option',\n name: name\n };\n\n if (isMulti) {\n onChange([].concat(_toConsumableArray(cleanValue(value)), [newOptionData]), newActionMeta);\n } else {\n onChange(newOptionData, newActionMeta);\n }\n }\n return;\n }\n\n onChange(newValue, actionMeta);\n };\n\n var options = props.options || [];\n _this.state = {\n newOption: undefined,\n options: options\n };\n return _this;\n }\n\n _createClass(Creatable, [{\n key: \"UNSAFE_componentWillReceiveProps\",\n value: function UNSAFE_componentWillReceiveProps(nextProps) {\n var allowCreateWhileLoading = nextProps.allowCreateWhileLoading,\n createOptionPosition = nextProps.createOptionPosition,\n formatCreateLabel = nextProps.formatCreateLabel,\n getNewOptionData = nextProps.getNewOptionData,\n inputValue = nextProps.inputValue,\n isLoading = nextProps.isLoading,\n isValidNewOption = nextProps.isValidNewOption,\n value = nextProps.value;\n var options = nextProps.options || [];\n var newOption = this.state.newOption;\n\n if (isValidNewOption(inputValue, cleanValue(value), options)) {\n newOption = getNewOptionData(inputValue, formatCreateLabel(inputValue));\n } else {\n newOption = undefined;\n }\n\n this.setState({\n newOption: newOption,\n options: (allowCreateWhileLoading || !isLoading) && newOption ? createOptionPosition === 'first' ? [newOption].concat(_toConsumableArray(options)) : [].concat(_toConsumableArray(options), [newOption]) : options\n });\n }\n }, {\n key: \"focus\",\n value: function focus() {\n this.select.focus();\n }\n }, {\n key: \"blur\",\n value: function blur() {\n this.select.blur();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var options = this.state.options;\n return /*#__PURE__*/React.createElement(SelectComponent, _extends({}, this.props, {\n ref: function ref(_ref) {\n _this2.select = _ref;\n },\n options: options,\n onChange: this.onChange\n }));\n }\n }]);\n\n return Creatable;\n }(Component), _class.defaultProps = defaultProps, _temp;\n}; // TODO: do this in package entrypoint\n\nvar SelectCreatable = makeCreatableSelect(Select);\nvar Creatable = manageState(SelectCreatable);\n\nexport default Creatable;\nexport { defaultProps, makeCreatableSelect };\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\nvar ReactDOM = _interopDefault(require('react-dom'));\nvar invariant = _interopDefault(require('invariant'));\nvar throttleDebounce = require('throttle-debounce');\nvar createResizeDetector = _interopDefault(require('element-resize-detector'));\nvar isShallowEqual = _interopDefault(require('shallowequal'));\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nvar instances = {}; // Lazily require to not cause bug\n// https://github.com/ctrlplusb/react-sizeme/issues/6\n\nfunction resizeDetector() {\n var strategy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'scroll';\n\n if (!instances[strategy]) {\n instances[strategy] = createResizeDetector({\n strategy: strategy\n });\n }\n\n return instances[strategy];\n}\n\nvar errMsg = 'react-sizeme: an error occurred whilst stopping to listen to node size changes';\nvar defaultConfig = {\n monitorWidth: true,\n monitorHeight: false,\n monitorPosition: false,\n refreshRate: 16,\n refreshMode: 'throttle',\n noPlaceholder: false,\n resizeDetectorStrategy: 'scroll'\n};\n\nfunction getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}\n/**\n * This is a utility wrapper component that will allow our higher order\n * component to get a ref handle on our wrapped components html.\n * @see https://gist.github.com/jimfb/32b587ee6177665fb4cf\n */\n\n\nvar ReferenceWrapper =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ReferenceWrapper, _Component);\n\n function ReferenceWrapper() {\n _classCallCheck(this, ReferenceWrapper);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ReferenceWrapper).apply(this, arguments));\n }\n\n _createClass(ReferenceWrapper, [{\n key: \"render\",\n value: function render() {\n return React.Children.only(this.props.children);\n }\n }]);\n\n return ReferenceWrapper;\n}(React.Component);\n\n_defineProperty(ReferenceWrapper, \"displayName\", 'SizeMeReferenceWrapper');\n\nfunction Placeholder(_ref) {\n var className = _ref.className,\n style = _ref.style;\n // Lets create the props for the temp element.\n var phProps = {}; // We will use any provided className/style or else make the temp\n // container take the full available space.\n\n if (!className && !style) {\n phProps.style = {\n width: '100%',\n height: '100%'\n };\n } else {\n if (className) {\n phProps.className = className;\n }\n\n if (style) {\n phProps.style = style;\n }\n }\n\n return React__default.createElement(\"div\", phProps);\n}\n\nPlaceholder.displayName = 'SizeMePlaceholder';\n/**\n * As we need to maintain a ref on the root node that is rendered within our\n * SizeMe component we need to wrap our entire render in a sub component.\n * Without this, we lose the DOM ref after the placeholder is removed from\n * the render and the actual component is rendered.\n * It took me forever to figure this out, so tread extra careful on this one!\n */\n\nvar renderWrapper = function renderWrapper(WrappedComponent) {\n function SizeMeRenderer(props) {\n var explicitRef = props.explicitRef,\n className = props.className,\n style = props.style,\n size = props.size,\n disablePlaceholder = props.disablePlaceholder,\n onSize = props.onSize,\n restProps = _objectWithoutProperties(props, [\"explicitRef\", \"className\", \"style\", \"size\", \"disablePlaceholder\", \"onSize\"]);\n\n var noSizeData = size == null || size.width == null && size.height == null && size.position == null;\n var renderPlaceholder = noSizeData && !disablePlaceholder;\n var renderProps = {\n className: className,\n style: style\n };\n\n if (size != null) {\n renderProps.size = size;\n }\n\n var toRender = renderPlaceholder ? React__default.createElement(Placeholder, {\n className: className,\n style: style\n }) : React__default.createElement(WrappedComponent, _extends({}, renderProps, restProps));\n return React__default.createElement(ReferenceWrapper, {\n ref: explicitRef\n }, toRender);\n }\n\n SizeMeRenderer.displayName = \"SizeMeRenderer(\".concat(getDisplayName(WrappedComponent), \")\");\n return SizeMeRenderer;\n};\n/**\n * :: config -> Component -> WrappedComponent\n *\n * Higher order component that allows the wrapped component to become aware\n * of it's size, by receiving it as an object within it's props.\n *\n * @param monitorWidth\n * Default true, whether changes in the element's width should be monitored,\n * causing a size property to be broadcast.\n * @param monitorHeight\n * Default false, whether changes in the element's height should be monitored,\n * causing a size property to be broadcast.\n *\n * @return The wrapped component.\n */\n\n\nfunction withSize() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultConfig;\n var _config$monitorWidth = config.monitorWidth,\n monitorWidth = _config$monitorWidth === void 0 ? defaultConfig.monitorWidth : _config$monitorWidth,\n _config$monitorHeight = config.monitorHeight,\n monitorHeight = _config$monitorHeight === void 0 ? defaultConfig.monitorHeight : _config$monitorHeight,\n _config$monitorPositi = config.monitorPosition,\n monitorPosition = _config$monitorPositi === void 0 ? defaultConfig.monitorPosition : _config$monitorPositi,\n _config$refreshRate = config.refreshRate,\n refreshRate = _config$refreshRate === void 0 ? defaultConfig.refreshRate : _config$refreshRate,\n _config$refreshMode = config.refreshMode,\n refreshMode = _config$refreshMode === void 0 ? defaultConfig.refreshMode : _config$refreshMode,\n _config$noPlaceholder = config.noPlaceholder,\n noPlaceholder = _config$noPlaceholder === void 0 ? defaultConfig.noPlaceholder : _config$noPlaceholder,\n _config$resizeDetecto = config.resizeDetectorStrategy,\n resizeDetectorStrategy = _config$resizeDetecto === void 0 ? defaultConfig.resizeDetectorStrategy : _config$resizeDetecto;\n invariant(monitorWidth || monitorHeight || monitorPosition, 'You have to monitor at least one of the width, height, or position when using \"sizeMe\"');\n invariant(refreshRate >= 16, \"It is highly recommended that you don't put your refreshRate lower than \" + '16 as this may cause layout thrashing.');\n invariant(refreshMode === 'throttle' || refreshMode === 'debounce', 'The refreshMode should have a value of \"throttle\" or \"debounce\"');\n var refreshDelayStrategy = refreshMode === 'throttle' ? throttleDebounce.throttle : throttleDebounce.debounce;\n return function WrapComponent(WrappedComponent) {\n var SizeMeRenderWrapper = renderWrapper(WrappedComponent);\n\n var SizeAwareComponent =\n /*#__PURE__*/\n function (_React$Component) {\n _inherits(SizeAwareComponent, _React$Component);\n\n function SizeAwareComponent() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, SizeAwareComponent);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(SizeAwareComponent)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"domEl\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n width: undefined,\n height: undefined,\n position: undefined\n });\n\n _defineProperty(_assertThisInitialized(_this), \"uninstall\", function () {\n if (_this.domEl) {\n try {\n _this.detector.uninstall(_this.domEl);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.warn(errMsg);\n }\n\n _this.domEl = null;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"determineStrategy\", function (props) {\n if (props.onSize) {\n if (!_this.callbackState) {\n _this.callbackState = _objectSpread2({}, _this.state);\n }\n\n _this.strategy = 'callback';\n } else {\n _this.strategy = 'render';\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"strategisedSetState\", function (state) {\n if (_this.strategy === 'callback') {\n _this.callbackState = state;\n\n _this.props.onSize(state);\n }\n\n _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"strategisedGetState\", function () {\n return _this.strategy === 'callback' ? _this.callbackState : _this.state;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"refCallback\", function (element) {\n _this.element = element;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"hasSizeChanged\", function (current, next) {\n var c = current;\n var n = next;\n var cp = c.position || {};\n var np = n.position || {};\n return monitorWidth && c.width !== n.width || monitorHeight && c.height !== n.height || monitorPosition && (cp.top !== np.top || cp.left !== np.left || cp.bottom !== np.bottom || cp.right !== np.right);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"checkIfSizeChanged\", refreshDelayStrategy(refreshRate, function (el) {\n var _el$getBoundingClient = el.getBoundingClientRect(),\n width = _el$getBoundingClient.width,\n height = _el$getBoundingClient.height,\n right = _el$getBoundingClient.right,\n left = _el$getBoundingClient.left,\n top = _el$getBoundingClient.top,\n bottom = _el$getBoundingClient.bottom;\n\n var next = {\n width: monitorWidth ? width : null,\n height: monitorHeight ? height : null,\n position: monitorPosition ? {\n right: right,\n left: left,\n top: top,\n bottom: bottom\n } : null\n };\n\n if (_this.hasSizeChanged(_this.strategisedGetState(), next)) {\n _this.strategisedSetState(next);\n }\n }));\n\n return _this;\n }\n\n _createClass(SizeAwareComponent, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.detector = resizeDetector(resizeDetectorStrategy);\n this.determineStrategy(this.props);\n this.handleDOMNode();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.determineStrategy(this.props);\n this.handleDOMNode();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n // Change our size checker to a noop just in case we have some\n // late running events.\n this.hasSizeChanged = function () {\n return undefined;\n };\n\n this.checkIfSizeChanged = function () {\n return undefined;\n };\n\n this.uninstall();\n }\n }, {\n key: \"handleDOMNode\",\n value: function handleDOMNode() {\n var found = this.element && ReactDOM.findDOMNode(this.element);\n\n if (!found) {\n // If we previously had a dom node then we need to ensure that\n // we remove any existing listeners to avoid memory leaks.\n this.uninstall();\n return;\n }\n\n if (!this.domEl) {\n this.domEl = found;\n this.detector.listenTo(this.domEl, this.checkIfSizeChanged);\n } else if (this.domEl.isSameNode && !this.domEl.isSameNode(found) || this.domEl !== found) {\n this.uninstall();\n this.domEl = found;\n this.detector.listenTo(this.domEl, this.checkIfSizeChanged);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var disablePlaceholder = withSize.enableSSRBehaviour || withSize.noPlaceholders || noPlaceholder || this.strategy === 'callback';\n\n var size = _objectSpread2({}, this.state);\n\n return React__default.createElement(SizeMeRenderWrapper, _extends({\n explicitRef: this.refCallback,\n size: this.strategy === 'callback' ? null : size,\n disablePlaceholder: disablePlaceholder\n }, this.props));\n }\n }]);\n\n return SizeAwareComponent;\n }(React__default.Component);\n\n _defineProperty(SizeAwareComponent, \"displayName\", \"SizeMe(\".concat(getDisplayName(WrappedComponent), \")\"));\n\n SizeAwareComponent.WrappedComponent = WrappedComponent;\n return SizeAwareComponent;\n };\n}\n/**\n * Allow SizeMe to run within SSR environments. This is a \"global\" behaviour\n * flag that should be set within the initialisation phase of your application.\n *\n * Warning: don't set this flag unless you need to as using it may cause\n * extra render cycles to happen within your components depending on the logic\n * contained within them around the usage of the `size` data.\n *\n * DEPRECATED: Please use the global noPlaceholders\n */\n\n\nwithSize.enableSSRBehaviour = false;\n/**\n * Global configuration allowing to disable placeholder rendering for all\n * sizeMe components.\n */\n\nwithSize.noPlaceholders = false;\n\nvar SizeMe =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(SizeMe, _Component);\n\n function SizeMe(props) {\n var _this;\n\n _classCallCheck(this, SizeMe);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SizeMe).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"createComponent\", function (config) {\n _this.SizeAware = withSize(config)(function (_ref) {\n var children = _ref.children;\n return children;\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSize\", function (size) {\n return _this.setState({\n size: size\n });\n });\n\n var _children = props.children,\n render = props.render,\n sizeMeConfig = _objectWithoutProperties(props, [\"children\", \"render\"]);\n\n _this.createComponent(sizeMeConfig);\n\n _this.state = {\n size: {\n width: undefined,\n height: undefined\n }\n };\n return _this;\n }\n\n _createClass(SizeMe, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props = this.props,\n prevChildren = _this$props.children,\n prevRender = _this$props.render,\n currentSizeMeConfig = _objectWithoutProperties(_this$props, [\"children\", \"render\"]);\n\n var nextChildren = prevProps.children,\n nextRender = prevProps.render,\n prevSizeMeConfig = _objectWithoutProperties(prevProps, [\"children\", \"render\"]);\n\n if (!isShallowEqual(currentSizeMeConfig, prevSizeMeConfig)) {\n this.createComponent(currentSizeMeConfig);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var SizeAware = this.SizeAware;\n var render = this.props.children || this.props.render;\n return React__default.createElement(SizeAware, {\n onSize: this.onSize\n }, render({\n size: this.state.size\n }));\n }\n }]);\n\n return SizeMe;\n}(React.Component);\n\n_defineProperty(SizeMe, \"defaultProps\", {\n children: undefined,\n render: undefined\n});\n\nwithSize.SizeMe = SizeMe;\nwithSize.withSize = withSize;\n\nmodule.exports = withSize;\n//# sourceMappingURL=react-sizeme.js.map\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseIntersection;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n}\n\nmodule.exports = castArrayLikeObject;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var arrayMap = require('./_arrayMap'),\n baseIntersection = require('./_baseIntersection'),\n baseRest = require('./_baseRest'),\n castArrayLikeObject = require('./_castArrayLikeObject');\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n});\n\nmodule.exports = intersection;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _addClass = _interopRequireDefault(require(\"dom-helpers/class/addClass\"));\n\nvar _removeClass = _interopRequireDefault(require(\"dom-helpers/class/removeClass\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _addClass.default)(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _removeClass.default)(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](http://www.nganimate.org/) library, you should use it if you're\n * using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n *
\n * {\"I'll receive my-node-* classes\"}\n *
\n *
\n * \n *
\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity: 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.onEnter = function (node, appearing) {\n var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n className = _this$getClassNames.className;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, className);\n\n if (_this.props.onEnter) {\n _this.props.onEnter(node, appearing);\n }\n };\n\n _this.onEntering = function (node, appearing) {\n var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n activeClassName = _this$getClassNames2.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onEntering) {\n _this.props.onEntering(node, appearing);\n }\n };\n\n _this.onEntered = function (node, appearing) {\n var appearClassName = _this.getClassNames('appear').doneClassName;\n\n var enterClassName = _this.getClassNames('enter').doneClassName;\n\n var doneClassName = appearing ? appearClassName + \" \" + enterClassName : enterClassName;\n\n _this.removeClasses(node, appearing ? 'appear' : 'enter');\n\n addClass(node, doneClassName);\n\n if (_this.props.onEntered) {\n _this.props.onEntered(node, appearing);\n }\n };\n\n _this.onExit = function (node) {\n var _this$getClassNames3 = _this.getClassNames('exit'),\n className = _this$getClassNames3.className;\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n addClass(node, className);\n\n if (_this.props.onExit) {\n _this.props.onExit(node);\n }\n };\n\n _this.onExiting = function (node) {\n var _this$getClassNames4 = _this.getClassNames('exit'),\n activeClassName = _this$getClassNames4.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onExiting) {\n _this.props.onExiting(node);\n }\n };\n\n _this.onExited = function (node) {\n var _this$getClassNames5 = _this.getClassNames('exit'),\n doneClassName = _this$getClassNames5.doneClassName;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, doneClassName);\n\n if (_this.props.onExited) {\n _this.props.onExited(node);\n }\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + '-' : '';\n var className = isStringClassNames ? prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? className + '-active' : classNames[type + 'Active'];\n var doneClassName = isStringClassNames ? className + '-done' : classNames[type + 'Done'];\n return {\n className: className,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$getClassNames6 = this.getClassNames(type),\n className = _this$getClassNames6.className,\n activeClassName = _this$getClassNames6.activeClassName,\n doneClassName = _this$getClassNames6.doneClassName;\n\n className && removeClass(node, className);\n activeClassName && removeClass(node, activeClassName);\n doneClassName && removeClass(node, doneClassName);\n };\n\n _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n if (className) {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n /* eslint-enable no-unused-expressions */\n\n addClass(node, className);\n }\n };\n\n _proto.render = function render() {\n var props = _extends({}, this.props);\n\n delete props.classNames;\n return _react.default.createElement(_Transition.default, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(_react.default.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, _Transition.default.propTypes, {\n /**\n * The animation classNames applied to the component as it enters, exits or\n * has finished the transition. A single name can be provided and it will be\n * suffixed for each stage: e.g.\n *\n * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n *\n * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n * This allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n * epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: _PropTypes.classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * \n *
I appear first
\n *
I replace the above
\n *
\n * ```\n */\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReplaceTransition, _React$Component);\n\n function ReplaceTransition() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n _this.handleEnter = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _this.handleLifecycle('onEnter', 0, args);\n };\n\n _this.handleEntering = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return _this.handleLifecycle('onEntering', 0, args);\n };\n\n _this.handleEntered = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return _this.handleLifecycle('onEntered', 0, args);\n };\n\n _this.handleExit = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n return _this.handleLifecycle('onExit', 1, args);\n };\n\n _this.handleExiting = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n return _this.handleLifecycle('onExiting', 1, args);\n };\n\n _this.handleExited = function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n return _this.handleLifecycle('onExited', 1, args);\n };\n\n return _this;\n }\n\n var _proto = ReplaceTransition.prototype;\n\n _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n var _child$props;\n\n var children = this.props.children;\n\n var child = _react.default.Children.toArray(children)[idx];\n\n if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n inProp = _this$props.in,\n props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n var _React$Children$toArr = _react.default.Children.toArray(children),\n first = _React$Children$toArr[0],\n second = _React$Children$toArr[1];\n\n delete props.onEnter;\n delete props.onEntering;\n delete props.onEntered;\n delete props.onExit;\n delete props.onExiting;\n delete props.onExited;\n return _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n key: 'first',\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onEntered: this.handleEntered\n }) : _react.default.cloneElement(second, {\n key: 'second',\n onEnter: this.handleExit,\n onEntering: this.handleExiting,\n onEntered: this.handleExited\n }));\n };\n\n return ReplaceTransition;\n}(_react.default.Component);\n\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n in: _propTypes.default.bool.isRequired,\n children: function children(props, propName) {\n if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n return null;\n }\n} : {};\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = _PropTypes.timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n /**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: {\n isMounting: !this.appeared\n }\n };\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.appeared = true;\n this.mounted = true;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return children;\n }\n\n return _react.default.createElement(Component, props, children);\n };\n\n return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.childContextTypes = {\n transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: _propTypes.default.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: _propTypes.default.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: _propTypes.default.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n Transition: _Transition.default,\n TransitionGroup: _TransitionGroup.default,\n ReplaceTransition: _ReplaceTransition.default,\n CSSTransition: _CSSTransition.default\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\n\nvar _react = require(\"react\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) _react.Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\n\nfunction mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nfunction getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\n\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!(0, _react.isValidElement)(child)) return;\n var hasPrev = key in prevChildMapping;\n var hasNext = key in nextChildMapping;\n var prevChild = prevChildMapping[key];\n var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = (0, _react.cloneElement)(child, {\n in: false\n });\n } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number,\n appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","function makeTypeChecker(tabsRole) {\n return function (element) {\n return !!element.type && element.type.tabsRole === tabsRole;\n };\n}\n\nexport var isTab = makeTypeChecker('Tab');\nexport var isTabList = makeTypeChecker('TabList');\nexport var isTabPanel = makeTypeChecker('TabPanel');","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport { Children, cloneElement } from 'react';\nimport { isTabPanel, isTab, isTabList } from './elementTypes';\n\nfunction isTabChild(child) {\n return isTab(child) || isTabList(child) || isTabPanel(child);\n}\n\nexport function deepMap(children, callback) {\n return Children.map(children, function (child) {\n // null happens when conditionally rendering TabPanel/Tab\n // see https://github.com/reactjs/react-tabs/issues/37\n if (child === null) return null;\n\n if (isTabChild(child)) {\n return callback(child);\n }\n\n if (child.props && child.props.children && typeof child.props.children === 'object') {\n // Clone the child that has children and map them too\n return /*#__PURE__*/cloneElement(child, _extends({}, child.props, {\n children: deepMap(child.props.children, callback)\n }));\n }\n\n return child;\n });\n}\nexport function deepForEach(children, callback) {\n return Children.forEach(children, function (child) {\n // null happens when conditionally rendering TabPanel/Tab\n // see https://github.com/reactjs/react-tabs/issues/37\n if (child === null) return;\n\n if (isTab(child) || isTabPanel(child)) {\n callback(child);\n } else if (child.props && child.props.children && typeof child.props.children === 'object') {\n if (isTabList(child)) callback(child);\n deepForEach(child.props.children, callback);\n }\n });\n}","// Get a universally unique identifier\nvar count = 0;\nexport default function uuid() {\n return \"react-tabs-\" + count++;\n}\nexport function reset() {\n count = 0;\n}","import { deepForEach } from './childrenDeepMap';\nimport { isTab, isTabPanel } from './elementTypes';\nexport function getTabsCount(children) {\n var tabCount = 0;\n deepForEach(children, function (child) {\n if (isTab(child)) tabCount++;\n });\n return tabCount;\n}\nexport function getPanelsCount(children) {\n var panelCount = 0;\n deepForEach(children, function (child) {\n if (isTabPanel(child)) panelCount++;\n });\n return panelCount;\n}","var _excluded = [\"children\", \"className\", \"disabledTabClassName\", \"domRef\", \"focus\", \"forceRenderTabPanel\", \"onSelect\", \"selectedIndex\", \"selectedTabClassName\", \"selectedTabPanelClassName\", \"environment\", \"disableUpDownKeys\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport PropTypes from 'prop-types';\nimport React, { cloneElement, Component } from 'react';\nimport cx from 'clsx';\nimport uuid from '../helpers/uuid';\nimport { childrenPropType } from '../helpers/propTypes';\nimport { getPanelsCount as _getPanelsCount, getTabsCount as _getTabsCount } from '../helpers/count';\nimport { deepMap } from '../helpers/childrenDeepMap';\nimport { isTabList, isTabPanel, isTab } from '../helpers/elementTypes';\n\nfunction isNode(node) {\n return node && 'getAttribute' in node;\n} // Determine if a node from event.target is a Tab element\n\n\nfunction isTabNode(node) {\n return isNode(node) && node.getAttribute('data-rttab');\n} // Determine if a tab node is disabled\n\n\nfunction isTabDisabled(node) {\n return isNode(node) && node.getAttribute('aria-disabled') === 'true';\n}\n\nvar canUseActiveElement;\n\nfunction determineCanUseActiveElement(environment) {\n var env = environment || (typeof window !== 'undefined' ? window : undefined);\n\n try {\n canUseActiveElement = !!(typeof env !== 'undefined' && env.document && env.document.activeElement);\n } catch (e) {\n // Work around for IE bug when accessing document.activeElement in an iframe\n // Refer to the following resources:\n // http://stackoverflow.com/a/10982960/369687\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12733599\n canUseActiveElement = false;\n }\n}\n\nvar UncontrolledTabs = /*#__PURE__*/function (_Component) {\n _inheritsLoose(UncontrolledTabs, _Component);\n\n function UncontrolledTabs() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.tabNodes = [];\n\n _this.handleKeyDown = function (e) {\n var _this$props = _this.props,\n direction = _this$props.direction,\n disableUpDownKeys = _this$props.disableUpDownKeys;\n\n if (_this.isTabFromContainer(e.target)) {\n var index = _this.props.selectedIndex;\n var preventDefault = false;\n var useSelectedIndex = false;\n\n if (e.keyCode === 32 || e.keyCode === 13) {\n preventDefault = true;\n useSelectedIndex = false;\n\n _this.handleClick(e);\n }\n\n if (e.keyCode === 37 || !disableUpDownKeys && e.keyCode === 38) {\n // Select next tab to the left, validate if up arrow is not disabled\n if (direction === 'rtl') {\n index = _this.getNextTab(index);\n } else {\n index = _this.getPrevTab(index);\n }\n\n preventDefault = true;\n useSelectedIndex = true;\n } else if (e.keyCode === 39 || !disableUpDownKeys && e.keyCode === 40) {\n // Select next tab to the right, validate if down arrow is not disabled\n if (direction === 'rtl') {\n index = _this.getPrevTab(index);\n } else {\n index = _this.getNextTab(index);\n }\n\n preventDefault = true;\n useSelectedIndex = true;\n } else if (e.keyCode === 35) {\n // Select last tab (End key)\n index = _this.getLastTab();\n preventDefault = true;\n useSelectedIndex = true;\n } else if (e.keyCode === 36) {\n // Select first tab (Home key)\n index = _this.getFirstTab();\n preventDefault = true;\n useSelectedIndex = true;\n } // This prevents scrollbars from moving around\n\n\n if (preventDefault) {\n e.preventDefault();\n } // Only use the selected index in the state if we're not using the tabbed index\n\n\n if (useSelectedIndex) {\n _this.setSelected(index, e);\n }\n }\n };\n\n _this.handleClick = function (e) {\n var node = e.target;\n\n do {\n if (_this.isTabFromContainer(node)) {\n if (isTabDisabled(node)) {\n return;\n }\n\n var index = [].slice.call(node.parentNode.children).filter(isTabNode).indexOf(node);\n\n _this.setSelected(index, e);\n\n return;\n }\n } while ((node = node.parentNode) != null);\n };\n\n return _this;\n }\n\n var _proto = UncontrolledTabs.prototype;\n\n _proto.setSelected = function setSelected(index, event) {\n // Check index boundary\n if (index < 0 || index >= this.getTabsCount()) return;\n var _this$props2 = this.props,\n onSelect = _this$props2.onSelect,\n selectedIndex = _this$props2.selectedIndex; // Call change event handler\n\n onSelect(index, selectedIndex, event);\n };\n\n _proto.getNextTab = function getNextTab(index) {\n var count = this.getTabsCount(); // Look for non-disabled tab from index to the last tab on the right\n\n for (var i = index + 1; i < count; i++) {\n if (!isTabDisabled(this.getTab(i))) {\n return i;\n }\n } // If no tab found, continue searching from first on left to index\n\n\n for (var _i = 0; _i < index; _i++) {\n if (!isTabDisabled(this.getTab(_i))) {\n return _i;\n }\n } // No tabs are disabled, return index\n\n\n return index;\n };\n\n _proto.getPrevTab = function getPrevTab(index) {\n var i = index; // Look for non-disabled tab from index to first tab on the left\n\n while (i--) {\n if (!isTabDisabled(this.getTab(i))) {\n return i;\n }\n } // If no tab found, continue searching from last tab on right to index\n\n\n i = this.getTabsCount();\n\n while (i-- > index) {\n if (!isTabDisabled(this.getTab(i))) {\n return i;\n }\n } // No tabs are disabled, return index\n\n\n return index;\n };\n\n _proto.getFirstTab = function getFirstTab() {\n var count = this.getTabsCount(); // Look for non disabled tab from the first tab\n\n for (var i = 0; i < count; i++) {\n if (!isTabDisabled(this.getTab(i))) {\n return i;\n }\n }\n\n return null;\n };\n\n _proto.getLastTab = function getLastTab() {\n var i = this.getTabsCount(); // Look for non disabled tab from the last tab\n\n while (i--) {\n if (!isTabDisabled(this.getTab(i))) {\n return i;\n }\n }\n\n return null;\n };\n\n _proto.getTabsCount = function getTabsCount() {\n var children = this.props.children;\n return _getTabsCount(children);\n };\n\n _proto.getPanelsCount = function getPanelsCount() {\n var children = this.props.children;\n return _getPanelsCount(children);\n };\n\n _proto.getTab = function getTab(index) {\n return this.tabNodes[\"tabs-\" + index];\n };\n\n _proto.getChildren = function getChildren() {\n var _this2 = this;\n\n var index = 0;\n var _this$props3 = this.props,\n children = _this$props3.children,\n disabledTabClassName = _this$props3.disabledTabClassName,\n focus = _this$props3.focus,\n forceRenderTabPanel = _this$props3.forceRenderTabPanel,\n selectedIndex = _this$props3.selectedIndex,\n selectedTabClassName = _this$props3.selectedTabClassName,\n selectedTabPanelClassName = _this$props3.selectedTabPanelClassName,\n environment = _this$props3.environment;\n this.tabIds = this.tabIds || [];\n this.panelIds = this.panelIds || [];\n var diff = this.tabIds.length - this.getTabsCount(); // Add ids if new tabs have been added\n // Don't bother removing ids, just keep them in case they are added again\n // This is more efficient, and keeps the uuid counter under control\n\n while (diff++ < 0) {\n this.tabIds.push(uuid());\n this.panelIds.push(uuid());\n } // Map children to dynamically setup refs\n\n\n return deepMap(children, function (child) {\n var result = child; // Clone TabList and Tab components to have refs\n\n if (isTabList(child)) {\n var listIndex = 0; // Figure out if the current focus in the DOM is set on a Tab\n // If it is we should keep the focus on the next selected tab\n\n var wasTabFocused = false;\n\n if (canUseActiveElement == null) {\n determineCanUseActiveElement(environment);\n }\n\n if (canUseActiveElement) {\n wasTabFocused = React.Children.toArray(child.props.children).filter(isTab).some(function (tab, i) {\n var env = environment || (typeof window !== 'undefined' ? window : undefined);\n return env && env.document.activeElement === _this2.getTab(i);\n });\n }\n\n result = /*#__PURE__*/cloneElement(child, {\n children: deepMap(child.props.children, function (tab) {\n var key = \"tabs-\" + listIndex;\n var selected = selectedIndex === listIndex;\n var props = {\n tabRef: function tabRef(node) {\n _this2.tabNodes[key] = node;\n },\n id: _this2.tabIds[listIndex],\n panelId: _this2.panelIds[listIndex],\n selected: selected,\n focus: selected && (focus || wasTabFocused)\n };\n if (selectedTabClassName) props.selectedClassName = selectedTabClassName;\n if (disabledTabClassName) props.disabledClassName = disabledTabClassName;\n listIndex++;\n return /*#__PURE__*/cloneElement(tab, props);\n })\n });\n } else if (isTabPanel(child)) {\n var props = {\n id: _this2.panelIds[index],\n tabId: _this2.tabIds[index],\n selected: selectedIndex === index\n };\n if (forceRenderTabPanel) props.forceRender = forceRenderTabPanel;\n if (selectedTabPanelClassName) props.selectedClassName = selectedTabPanelClassName;\n index++;\n result = /*#__PURE__*/cloneElement(child, props);\n }\n\n return result;\n });\n };\n\n /**\n * Determine if a node from event.target is a Tab element for the current Tabs container.\n * If the clicked element is not a Tab, it returns false.\n * If it finds another Tabs container between the Tab and `this`, it returns false.\n */\n _proto.isTabFromContainer = function isTabFromContainer(node) {\n // return immediately if the clicked element is not a Tab.\n if (!isTabNode(node)) {\n return false;\n } // Check if the first occurrence of a Tabs container is `this` one.\n\n\n var nodeAncestor = node.parentElement;\n\n do {\n if (nodeAncestor === this.node) return true;\n if (nodeAncestor.getAttribute('data-rttabs')) break;\n nodeAncestor = nodeAncestor.parentElement;\n } while (nodeAncestor);\n\n return false;\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n // Delete all known props, so they don't get added to DOM\n var _this$props4 = this.props,\n children = _this$props4.children,\n className = _this$props4.className,\n disabledTabClassName = _this$props4.disabledTabClassName,\n domRef = _this$props4.domRef,\n focus = _this$props4.focus,\n forceRenderTabPanel = _this$props4.forceRenderTabPanel,\n onSelect = _this$props4.onSelect,\n selectedIndex = _this$props4.selectedIndex,\n selectedTabClassName = _this$props4.selectedTabClassName,\n selectedTabPanelClassName = _this$props4.selectedTabPanelClassName,\n environment = _this$props4.environment,\n disableUpDownKeys = _this$props4.disableUpDownKeys,\n attributes = _objectWithoutPropertiesLoose(_this$props4, _excluded);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, attributes, {\n className: cx(className),\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown,\n ref: function ref(node) {\n _this3.node = node;\n if (domRef) domRef(node);\n },\n \"data-rttabs\": true\n }), this.getChildren());\n };\n\n return UncontrolledTabs;\n}(Component);\n\nUncontrolledTabs.defaultProps = {\n className: 'react-tabs',\n focus: false\n};\nexport { UncontrolledTabs as default };\nUncontrolledTabs.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: childrenPropType,\n direction: PropTypes.oneOf(['rtl', 'ltr']),\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.object]),\n disabledTabClassName: PropTypes.string,\n disableUpDownKeys: PropTypes.bool,\n domRef: PropTypes.func,\n focus: PropTypes.bool,\n forceRenderTabPanel: PropTypes.bool,\n onSelect: PropTypes.func.isRequired,\n selectedIndex: PropTypes.number.isRequired,\n selectedTabClassName: PropTypes.string,\n selectedTabPanelClassName: PropTypes.string,\n environment: PropTypes.object\n} : {};","var _excluded = [\"children\", \"defaultIndex\", \"defaultFocus\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { childrenPropType, onSelectPropType, selectedIndexPropType } from '../helpers/propTypes';\nimport UncontrolledTabs from './UncontrolledTabs';\nimport { getTabsCount } from '../helpers/count';\nvar MODE_CONTROLLED = 0;\nvar MODE_UNCONTROLLED = 1;\n\nvar Tabs = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Tabs, _Component);\n\n function Tabs(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n\n _this.handleSelected = function (index, last, event) {\n var onSelect = _this.props.onSelect;\n var mode = _this.state.mode; // Call change event handler\n\n if (typeof onSelect === 'function') {\n // Check if the change event handler cancels the tab change\n if (onSelect(index, last, event) === false) return;\n }\n\n var state = {\n // Set focus if the change was triggered from the keyboard\n focus: event.type === 'keydown'\n };\n\n if (mode === MODE_UNCONTROLLED) {\n // Update selected index\n state.selectedIndex = index;\n }\n\n _this.setState(state);\n };\n\n _this.state = Tabs.copyPropsToState(_this.props, {}, props.defaultFocus);\n return _this;\n }\n\n Tabs.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n return Tabs.copyPropsToState(props, state);\n };\n\n Tabs.getModeFromProps = function getModeFromProps(props) {\n return props.selectedIndex === null ? MODE_UNCONTROLLED : MODE_CONTROLLED;\n };\n\n // preserve the existing selectedIndex from state.\n // If the state has not selectedIndex, default to the defaultIndex or 0\n Tabs.copyPropsToState = function copyPropsToState(props, state, focus) {\n if (focus === void 0) {\n focus = false;\n }\n\n if (process.env.NODE_ENV !== 'production' && state.mode !== undefined && state.mode !== Tabs.getModeFromProps(props)) {\n throw new Error(\"Switching between controlled mode (by using `selectedIndex`) and uncontrolled mode is not supported in `Tabs`.\\nFor more information about controlled and uncontrolled mode of react-tabs see https://github.com/reactjs/react-tabs#controlled-vs-uncontrolled-mode.\");\n }\n\n var newState = {\n focus: focus,\n mode: Tabs.getModeFromProps(props)\n };\n\n if (newState.mode === MODE_UNCONTROLLED) {\n var maxTabIndex = Math.max(0, getTabsCount(props.children) - 1);\n var selectedIndex = null;\n\n if (state.selectedIndex != null) {\n selectedIndex = Math.min(state.selectedIndex, maxTabIndex);\n } else {\n selectedIndex = props.defaultIndex || 0;\n }\n\n newState.selectedIndex = selectedIndex;\n }\n\n return newState;\n };\n\n var _proto = Tabs.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n defaultIndex = _this$props.defaultIndex,\n defaultFocus = _this$props.defaultFocus,\n props = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n var _this$state = this.state,\n focus = _this$state.focus,\n selectedIndex = _this$state.selectedIndex;\n props.focus = focus;\n props.onSelect = this.handleSelected;\n\n if (selectedIndex != null) {\n props.selectedIndex = selectedIndex;\n }\n\n return /*#__PURE__*/React.createElement(UncontrolledTabs, props, children);\n };\n\n return Tabs;\n}(Component);\n\nTabs.defaultProps = {\n defaultFocus: false,\n forceRenderTabPanel: false,\n selectedIndex: null,\n defaultIndex: null,\n environment: null,\n disableUpDownKeys: false\n};\nexport { Tabs as default };\nTabs.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: childrenPropType,\n direction: PropTypes.oneOf(['rtl', 'ltr']),\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.object]),\n defaultFocus: PropTypes.bool,\n defaultIndex: PropTypes.number,\n disabledTabClassName: PropTypes.string,\n disableUpDownKeys: PropTypes.bool,\n domRef: PropTypes.func,\n forceRenderTabPanel: PropTypes.bool,\n onSelect: onSelectPropType,\n selectedIndex: selectedIndexPropType,\n selectedTabClassName: PropTypes.string,\n selectedTabPanelClassName: PropTypes.string,\n environment: PropTypes.object\n} : {};\nTabs.tabsRole = 'Tabs';","var _excluded = [\"children\", \"className\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport cx from 'clsx';\n\nvar TabList = /*#__PURE__*/function (_Component) {\n _inheritsLoose(TabList, _Component);\n\n function TabList() {\n return _Component.apply(this, arguments) || this;\n }\n\n var _proto = TabList.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n className = _this$props.className,\n attributes = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n return /*#__PURE__*/React.createElement(\"ul\", _extends({}, attributes, {\n className: cx(className),\n role: \"tablist\"\n }), children);\n };\n\n return TabList;\n}(Component);\n\nTabList.defaultProps = {\n className: 'react-tabs__tab-list'\n};\nexport { TabList as default };\nTabList.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.object])\n} : {};\nTabList.tabsRole = 'TabList';","var _excluded = [\"children\", \"className\", \"disabled\", \"disabledClassName\", \"focus\", \"id\", \"panelId\", \"selected\", \"selectedClassName\", \"tabIndex\", \"tabRef\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport cx from 'clsx';\nvar DEFAULT_CLASS = 'react-tabs__tab';\n\nvar Tab = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Tab, _Component);\n\n function Tab() {\n return _Component.apply(this, arguments) || this;\n }\n\n var _proto = Tab.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.checkFocus();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.checkFocus();\n };\n\n _proto.checkFocus = function checkFocus() {\n var _this$props = this.props,\n selected = _this$props.selected,\n focus = _this$props.focus;\n\n if (selected && focus) {\n this.node.focus();\n }\n };\n\n _proto.render = function render() {\n var _cx,\n _this = this;\n\n var _this$props2 = this.props,\n children = _this$props2.children,\n className = _this$props2.className,\n disabled = _this$props2.disabled,\n disabledClassName = _this$props2.disabledClassName,\n focus = _this$props2.focus,\n id = _this$props2.id,\n panelId = _this$props2.panelId,\n selected = _this$props2.selected,\n selectedClassName = _this$props2.selectedClassName,\n tabIndex = _this$props2.tabIndex,\n tabRef = _this$props2.tabRef,\n attributes = _objectWithoutPropertiesLoose(_this$props2, _excluded);\n\n return /*#__PURE__*/React.createElement(\"li\", _extends({}, attributes, {\n className: cx(className, (_cx = {}, _cx[selectedClassName] = selected, _cx[disabledClassName] = disabled, _cx)),\n ref: function ref(node) {\n _this.node = node;\n if (tabRef) tabRef(node);\n },\n role: \"tab\",\n id: id,\n \"aria-selected\": selected ? 'true' : 'false',\n \"aria-disabled\": disabled ? 'true' : 'false',\n \"aria-controls\": panelId,\n tabIndex: tabIndex || (selected ? '0' : null),\n \"data-rttab\": true\n }), children);\n };\n\n return Tab;\n}(Component);\n\nTab.defaultProps = {\n className: DEFAULT_CLASS,\n disabledClassName: DEFAULT_CLASS + \"--disabled\",\n focus: false,\n id: null,\n panelId: null,\n selected: false,\n selectedClassName: DEFAULT_CLASS + \"--selected\"\n};\nexport { Tab as default };\nTab.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: PropTypes.oneOfType([PropTypes.array, PropTypes.object, PropTypes.string]),\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.object]),\n disabled: PropTypes.bool,\n tabIndex: PropTypes.string,\n disabledClassName: PropTypes.string,\n focus: PropTypes.bool,\n // private\n id: PropTypes.string,\n // private\n panelId: PropTypes.string,\n // private\n selected: PropTypes.bool,\n // private\n selectedClassName: PropTypes.string,\n tabRef: PropTypes.func // private\n\n} : {};\nTab.tabsRole = 'Tab';","var _excluded = [\"children\", \"className\", \"forceRender\", \"id\", \"selected\", \"selectedClassName\", \"tabId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport cx from 'clsx';\nvar DEFAULT_CLASS = 'react-tabs__tab-panel';\n\nvar TabPanel = /*#__PURE__*/function (_Component) {\n _inheritsLoose(TabPanel, _Component);\n\n function TabPanel() {\n return _Component.apply(this, arguments) || this;\n }\n\n var _proto = TabPanel.prototype;\n\n _proto.render = function render() {\n var _cx;\n\n var _this$props = this.props,\n children = _this$props.children,\n className = _this$props.className,\n forceRender = _this$props.forceRender,\n id = _this$props.id,\n selected = _this$props.selected,\n selectedClassName = _this$props.selectedClassName,\n tabId = _this$props.tabId,\n attributes = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, attributes, {\n className: cx(className, (_cx = {}, _cx[selectedClassName] = selected, _cx)),\n role: \"tabpanel\",\n id: id,\n \"aria-labelledby\": tabId\n }), forceRender || selected ? children : null);\n };\n\n return TabPanel;\n}(Component);\n\nTabPanel.defaultProps = {\n className: DEFAULT_CLASS,\n forceRender: false,\n selectedClassName: DEFAULT_CLASS + \"--selected\"\n};\nexport { TabPanel as default };\nTabPanel.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: PropTypes.node,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.object]),\n forceRender: PropTypes.bool,\n id: PropTypes.string,\n // private\n selected: PropTypes.bool,\n // private\n selectedClassName: PropTypes.string,\n tabId: PropTypes.string // private\n\n} : {};\nTabPanel.tabsRole = 'TabPanel';","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { createElement, Component } from 'react';\nimport { oneOfType, func, shape, any, number, object, bool, string } from 'prop-types';\n\nvar isIE = !!document.documentElement.currentStyle ;\nvar HIDDEN_TEXTAREA_STYLE = {\n 'min-height': '0',\n 'max-height': 'none',\n height: '0',\n visibility: 'hidden',\n overflow: 'hidden',\n position: 'absolute',\n 'z-index': '-1000',\n top: '0',\n right: '0'\n};\nvar SIZING_STYLE = ['letter-spacing', 'line-height', 'font-family', 'font-weight', 'font-size', 'font-style', 'tab-size', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-top', 'padding-right', 'padding-bottom', 'padding-left', 'border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width', 'box-sizing'];\nvar computedStyleCache = {};\nvar hiddenTextarea = document.createElement('textarea');\n\nvar forceHiddenStyles = function forceHiddenStyles(node) {\n Object.keys(HIDDEN_TEXTAREA_STYLE).forEach(function (key) {\n node.style.setProperty(key, HIDDEN_TEXTAREA_STYLE[key], 'important');\n });\n};\n\n{\n hiddenTextarea.setAttribute('tab-index', '-1');\n hiddenTextarea.setAttribute('aria-hidden', 'true');\n forceHiddenStyles(hiddenTextarea);\n}\n\nfunction calculateNodeHeight(uiTextNode, uid, useCache, minRows, maxRows) {\n if (useCache === void 0) {\n useCache = false;\n }\n\n if (minRows === void 0) {\n minRows = null;\n }\n\n if (maxRows === void 0) {\n maxRows = null;\n }\n\n if (hiddenTextarea.parentNode === null) {\n document.body.appendChild(hiddenTextarea);\n } // Copy all CSS properties that have an impact on the height of the content in\n // the textbox\n\n\n var nodeStyling = calculateNodeStyling(uiTextNode, uid, useCache);\n\n if (nodeStyling === null) {\n return null;\n }\n\n var paddingSize = nodeStyling.paddingSize,\n borderSize = nodeStyling.borderSize,\n boxSizing = nodeStyling.boxSizing,\n sizingStyle = nodeStyling.sizingStyle; // Need to have the overflow attribute to hide the scrollbar otherwise\n // text-lines will not calculated properly as the shadow will technically be\n // narrower for content\n\n Object.keys(sizingStyle).forEach(function (key) {\n hiddenTextarea.style[key] = sizingStyle[key];\n });\n forceHiddenStyles(hiddenTextarea);\n hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || 'x';\n var minHeight = -Infinity;\n var maxHeight = Infinity;\n var height = hiddenTextarea.scrollHeight;\n\n if (boxSizing === 'border-box') {\n // border-box: add border, since height = content + padding + border\n height = height + borderSize;\n } else if (boxSizing === 'content-box') {\n // remove padding, since height = content\n height = height - paddingSize;\n } // measure height of a textarea with a single row\n\n\n hiddenTextarea.value = 'x';\n var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize; // Stores the value's rows count rendered in `hiddenTextarea`,\n // regardless if `maxRows` or `minRows` props are passed\n\n var valueRowCount = Math.floor(height / singleRowHeight);\n\n if (minRows !== null) {\n minHeight = singleRowHeight * minRows;\n\n if (boxSizing === 'border-box') {\n minHeight = minHeight + paddingSize + borderSize;\n }\n\n height = Math.max(minHeight, height);\n }\n\n if (maxRows !== null) {\n maxHeight = singleRowHeight * maxRows;\n\n if (boxSizing === 'border-box') {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n\n height = Math.min(maxHeight, height);\n }\n\n var rowCount = Math.floor(height / singleRowHeight);\n return {\n height: height,\n minHeight: minHeight,\n maxHeight: maxHeight,\n rowCount: rowCount,\n valueRowCount: valueRowCount\n };\n}\n\nfunction calculateNodeStyling(node, uid, useCache) {\n if (useCache === void 0) {\n useCache = false;\n }\n\n if (useCache && computedStyleCache[uid]) {\n return computedStyleCache[uid];\n }\n\n var style = window.getComputedStyle(node);\n\n if (style === null) {\n return null;\n }\n\n var sizingStyle = SIZING_STYLE.reduce(function (obj, name) {\n obj[name] = style.getPropertyValue(name);\n return obj;\n }, {});\n var boxSizing = sizingStyle['box-sizing']; // probably node is detached from DOM, can't read computed dimensions\n\n if (boxSizing === '') {\n return null;\n } // IE (Edge has already correct behaviour) returns content width as computed width\n // so we need to add manually padding and border widths\n\n\n if (isIE && boxSizing === 'border-box') {\n sizingStyle.width = parseFloat(sizingStyle.width) + parseFloat(style['border-right-width']) + parseFloat(style['border-left-width']) + parseFloat(style['padding-right']) + parseFloat(style['padding-left']) + 'px';\n }\n\n var paddingSize = parseFloat(sizingStyle['padding-bottom']) + parseFloat(sizingStyle['padding-top']);\n var borderSize = parseFloat(sizingStyle['border-bottom-width']) + parseFloat(sizingStyle['border-top-width']);\n var nodeInfo = {\n sizingStyle: sizingStyle,\n paddingSize: paddingSize,\n borderSize: borderSize,\n boxSizing: boxSizing\n };\n\n if (useCache) {\n computedStyleCache[uid] = nodeInfo;\n }\n\n return nodeInfo;\n}\n\nvar purgeCache = function purgeCache(uid) {\n delete computedStyleCache[uid];\n};\n\nvar noop = function noop() {};\n\nvar uid = 0;\n\nvar TextareaAutosize =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TextareaAutosize, _React$Component);\n\n function TextareaAutosize(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n\n _this._onRef = function (node) {\n _this._ref = node;\n var inputRef = _this.props.inputRef;\n\n if (typeof inputRef === 'function') {\n inputRef(node);\n return;\n }\n\n inputRef.current = node;\n };\n\n _this._onChange = function (event) {\n if (!_this._controlled) {\n _this._resizeComponent();\n }\n\n _this.props.onChange(event, _assertThisInitialized(_this));\n };\n\n _this._resizeComponent = function (callback) {\n if (callback === void 0) {\n callback = noop;\n }\n\n var nodeHeight = calculateNodeHeight(_this._ref, _this._uid, _this.props.useCacheForDOMMeasurements, _this.props.minRows, _this.props.maxRows);\n\n if (nodeHeight === null) {\n callback();\n return;\n }\n\n var height = nodeHeight.height,\n minHeight = nodeHeight.minHeight,\n maxHeight = nodeHeight.maxHeight,\n rowCount = nodeHeight.rowCount,\n valueRowCount = nodeHeight.valueRowCount;\n _this.rowCount = rowCount;\n _this.valueRowCount = valueRowCount;\n\n if (_this.state.height !== height || _this.state.minHeight !== minHeight || _this.state.maxHeight !== maxHeight) {\n _this.setState({\n height: height,\n minHeight: minHeight,\n maxHeight: maxHeight\n }, callback);\n\n return;\n }\n\n callback();\n };\n\n _this.state = {\n height: props.style && props.style.height || 0,\n minHeight: -Infinity,\n maxHeight: Infinity\n };\n _this._uid = uid++;\n _this._controlled = props.value !== undefined;\n _this._resizeLock = false;\n return _this;\n }\n\n var _proto = TextareaAutosize.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n _inputRef = _this$props.inputRef,\n _maxRows = _this$props.maxRows,\n _minRows = _this$props.minRows,\n _onHeightChange = _this$props.onHeightChange,\n _useCacheForDOMMeasurements = _this$props.useCacheForDOMMeasurements,\n props = _objectWithoutPropertiesLoose(_this$props, [\"inputRef\", \"maxRows\", \"minRows\", \"onHeightChange\", \"useCacheForDOMMeasurements\"]);\n\n props.style = _extends({}, props.style, {\n height: this.state.height\n });\n var maxHeight = Math.max(props.style.maxHeight || Infinity, this.state.maxHeight);\n\n if (maxHeight < this.state.height) {\n props.style.overflow = 'hidden';\n }\n\n return createElement(\"textarea\", _extends({}, props, {\n onChange: this._onChange,\n ref: this._onRef\n }));\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n this._resizeComponent(); // Working around Firefox bug which runs resize listeners even when other JS is running at the same moment\n // causing competing rerenders (due to setState in the listener) in React.\n // More can be found here - facebook/react#6324\n\n\n this._resizeListener = function () {\n if (_this2._resizeLock) {\n return;\n }\n\n _this2._resizeLock = true;\n\n _this2._resizeComponent(function () {\n _this2._resizeLock = false;\n });\n };\n\n window.addEventListener('resize', this._resizeListener);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevProps !== this.props) {\n this._resizeComponent();\n }\n\n if (this.state.height !== prevState.height) {\n this.props.onHeightChange(this.state.height, this);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener('resize', this._resizeListener);\n purgeCache(this._uid);\n };\n\n return TextareaAutosize;\n}(Component);\n\nTextareaAutosize.defaultProps = {\n inputRef: noop,\n onChange: noop,\n onHeightChange: noop,\n useCacheForDOMMeasurements: false\n};\nprocess.env.NODE_ENV !== \"production\" ? TextareaAutosize.propTypes = {\n inputRef: oneOfType([func, shape({\n current: any\n })]),\n maxRows: number,\n minRows: number,\n onChange: func,\n onHeightChange: func,\n style: object,\n useCacheForDOMMeasurements: bool,\n value: string\n} : void 0;\n\nexport default TextareaAutosize;\n","\n\nexport default function calculateSizeAndPositionDataAndUpdateScrollOffset(_ref) {\n var cellCount = _ref.cellCount,\n cellSize = _ref.cellSize,\n computeMetadataCallback = _ref.computeMetadataCallback,\n computeMetadataCallbackProps = _ref.computeMetadataCallbackProps,\n nextCellsCount = _ref.nextCellsCount,\n nextCellSize = _ref.nextCellSize,\n nextScrollToIndex = _ref.nextScrollToIndex,\n scrollToIndex = _ref.scrollToIndex,\n updateScrollOffsetForScrollToIndex = _ref.updateScrollOffsetForScrollToIndex;\n\n // Don't compare cell sizes if they are functions because inline functions would cause infinite loops.\n // In that event users should use the manual recompute methods to inform of changes.\n if (cellCount !== nextCellsCount || (typeof cellSize === 'number' || typeof nextCellSize === 'number') && cellSize !== nextCellSize) {\n computeMetadataCallback(computeMetadataCallbackProps);\n\n // Updated cell metadata may have hidden the previous scrolled-to item.\n // In this case we should also update the scrollTop to ensure it stays visible.\n if (scrollToIndex >= 0 && scrollToIndex === nextScrollToIndex) {\n updateScrollOffsetForScrollToIndex();\n }\n }\n}\n\n/**\n * Helper method that determines when to recalculate row or column metadata.\n */","import _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport LinearLayoutVector from 'linear-layout-vector';\n\n/**\n * Just-in-time calculates and caches size and position information for a collection of cells.\n */\n\nvar CellSizeAndPositionManager = function () {\n\n // Measurements for cells up to this index can be trusted; cells afterward should be estimated.\n function CellSizeAndPositionManager(_ref) {\n var cellCount = _ref.cellCount,\n cellSizeGetter = _ref.cellSizeGetter,\n estimatedCellSize = _ref.estimatedCellSize;\n\n _classCallCheck(this, CellSizeAndPositionManager);\n\n this._lastMeasuredIndex = -1;\n\n this._cellSizeGetter = cellSizeGetter;\n this._cellCount = cellCount;\n this._estimatedCellSize = estimatedCellSize;\n this._layoutVector = new LinearLayoutVector();\n this._layoutVector.setLength(cellCount);\n this._layoutVector.setDefaultSize(estimatedCellSize);\n }\n // Cache of size and position data for cells, mapped by cell index.\n // Note that invalid values may exist in this map so only rely on cells up to this._lastMeasuredIndex\n\n\n _createClass(CellSizeAndPositionManager, [{\n key: 'areOffsetsAdjusted',\n value: function areOffsetsAdjusted() {\n return false;\n }\n }, {\n key: 'configure',\n value: function configure(_ref2) {\n var cellCount = _ref2.cellCount,\n estimatedCellSize = _ref2.estimatedCellSize,\n cellSizeGetter = _ref2.cellSizeGetter;\n\n this._cellCount = cellCount;\n this._estimatedCellSize = estimatedCellSize;\n this._cellSizeGetter = cellSizeGetter;\n this._layoutVector.setLength(cellCount);\n this._layoutVector.setDefaultSize(estimatedCellSize);\n }\n }, {\n key: 'getCellCount',\n value: function getCellCount() {\n return this._cellCount;\n }\n }, {\n key: 'getEstimatedCellSize',\n value: function getEstimatedCellSize() {\n return this._estimatedCellSize;\n }\n }, {\n key: 'getLastMeasuredIndex',\n value: function getLastMeasuredIndex() {\n return this._lastMeasuredIndex;\n }\n }, {\n key: 'getOffsetAdjustment',\n value: function getOffsetAdjustment() {\n return 0;\n }\n\n /**\n * This method returns the size and position for the cell at the specified index.\n * It just-in-time calculates (or used cached values) for cells leading up to the index.\n */\n\n }, {\n key: 'getSizeAndPositionOfCell',\n value: function getSizeAndPositionOfCell(index) {\n if (index < 0 || index >= this._cellCount) {\n throw Error('Requested index ' + index + ' is outside of range 0..' + this._cellCount);\n }\n var vector = this._layoutVector;\n if (index > this._lastMeasuredIndex) {\n var token = { index: this._lastMeasuredIndex + 1 };\n\n for (var i = token.index; i <= index; token.index = ++i) {\n var _size = this._cellSizeGetter(token);\n // undefined or NaN probably means a logic error in the size getter.\n // null means we're using CellMeasurer and haven't yet measured a given index.\n if (_size === undefined || _size !== _size) {\n throw Error('Invalid size returned for cell ' + i + ' of value ' + _size);\n } else if (_size !== null) {\n vector.setItemSize(i, _size);\n }\n }\n this._lastMeasuredIndex = Math.min(index, this._cellCount - 1);\n }\n\n return {\n offset: vector.start(index),\n size: vector.getItemSize(index)\n };\n }\n }, {\n key: 'getSizeAndPositionOfLastMeasuredCell',\n value: function getSizeAndPositionOfLastMeasuredCell() {\n var index = this._lastMeasuredIndex;\n if (index <= 0) {\n return {\n offset: 0,\n size: 0\n };\n }\n var vector = this._layoutVector;\n return {\n offset: vector.start(index),\n size: vector.getItemSize(index)\n };\n }\n\n /**\n * Total size of all cells being measured.\n * This value will be completely estimated initially.\n * As cells are measured, the estimate will be updated.\n */\n\n }, {\n key: 'getTotalSize',\n value: function getTotalSize() {\n var lastIndex = this._cellCount - 1;\n return lastIndex >= 0 ? this._layoutVector.end(lastIndex) : 0;\n }\n\n /**\n * Determines a new offset that ensures a certain cell is visible, given the current offset.\n * If the cell is already visible then the current offset will be returned.\n * If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible.\n *\n * @param align Desired alignment within container; one of \"auto\" (default), \"start\", or \"end\"\n * @param containerSize Size (width or height) of the container viewport\n * @param currentOffset Container's current (x or y) offset\n * @param totalSize Total size (width or height) of all cells\n * @return Offset to use to ensure the specified cell is visible\n */\n\n }, {\n key: 'getUpdatedOffsetForIndex',\n value: function getUpdatedOffsetForIndex(_ref3) {\n var _ref3$align = _ref3.align,\n align = _ref3$align === undefined ? 'auto' : _ref3$align,\n containerSize = _ref3.containerSize,\n currentOffset = _ref3.currentOffset,\n targetIndex = _ref3.targetIndex;\n\n if (containerSize <= 0) {\n return 0;\n }\n\n var datum = this.getSizeAndPositionOfCell(targetIndex);\n var maxOffset = datum.offset;\n var minOffset = maxOffset - containerSize + datum.size;\n\n var idealOffset = void 0;\n\n switch (align) {\n case 'start':\n idealOffset = maxOffset;\n break;\n case 'end':\n idealOffset = minOffset;\n break;\n case 'center':\n idealOffset = maxOffset - (containerSize - datum.size) / 2;\n break;\n default:\n idealOffset = Math.max(minOffset, Math.min(maxOffset, currentOffset));\n break;\n }\n\n var totalSize = this.getTotalSize();\n\n return Math.max(0, Math.min(totalSize - containerSize, idealOffset));\n }\n }, {\n key: 'getVisibleCellRange',\n value: function getVisibleCellRange(params) {\n if (this.getTotalSize() === 0) {\n return {};\n }\n\n var containerSize = params.containerSize,\n offset = params.offset;\n\n var maxOffset = offset + containerSize - 1;\n return {\n start: this._findNearestCell(offset),\n stop: this._findNearestCell(maxOffset)\n };\n }\n\n /**\n * Clear all cached values for cells after the specified index.\n * This method should be called for any cell that has changed its size.\n * It will not immediately perform any calculations; they'll be performed the next time getSizeAndPositionOfCell() is called.\n */\n\n }, {\n key: 'resetCell',\n value: function resetCell(index) {\n this._lastMeasuredIndex = Math.min(this._lastMeasuredIndex, index - 1);\n }\n\n /**\n * Searches for the cell (index) nearest the specified offset.\n *\n * If no exact match is found the next lowest cell index will be returned.\n * This allows partially visible cells (with offsets just before/above the fold) to be visible.\n */\n\n }, {\n key: '_findNearestCell',\n value: function _findNearestCell(offset) {\n if (isNaN(offset)) {\n throw Error('Invalid offset ' + offset + ' specified');\n }\n\n var vector = this._layoutVector;\n var lastIndex = this._cellCount - 1;\n // Our search algorithms find the nearest match at or below the specified offset.\n // So make sure the offset is at least 0 or no match will be found.\n var targetOffset = Math.max(0, Math.min(offset, vector.start(lastIndex)));\n // First interrogate the constant-time lookup table\n var nearestCellIndex = vector.indexOf(targetOffset);\n\n // If we haven't yet measured this high, compute sizes for each cell up to the desired offset.\n while (nearestCellIndex > this._lastMeasuredIndex) {\n // Measure all the cells up to the one we want to find presently.\n // Do this before the last-index check to ensure the sparse array\n // is fully populated.\n this.getSizeAndPositionOfCell(nearestCellIndex);\n // No need to search and compare again if we're at the end.\n if (nearestCellIndex === lastIndex) {\n return nearestCellIndex;\n }\n nearestCellIndex = vector.indexOf(targetOffset);\n // Guard in case `getSizeAndPositionOfCell` didn't fully measure to\n // the nearestCellIndex. This might happen scrolling quickly down\n // and back up on large lists -- possible race with React or DOM?\n if (nearestCellIndex === -1) {\n nearestCellIndex = this._lastMeasuredIndex;\n this._lastMeasuredIndex = nearestCellIndex - 1;\n targetOffset = Math.max(0, Math.min(offset, vector.start(lastIndex)));\n }\n }\n\n return nearestCellIndex;\n }\n }]);\n\n return CellSizeAndPositionManager;\n}();\n\nexport default CellSizeAndPositionManager;\nimport { bpfrpt_proptype_Alignment } from '../types';\nimport { bpfrpt_proptype_CellSizeGetter } from '../types';\nimport { bpfrpt_proptype_VisibleCellRange } from '../types';","var DEFAULT_MAX_ELEMENT_SIZE = 1500000;\nvar CHROME_MAX_ELEMENT_SIZE = 1.67771e7;\n\nvar isBrowser = function isBrowser() {\n return typeof window !== 'undefined';\n};\n\nvar isChrome = function isChrome() {\n return !!window.chrome && !!window.chrome.webstore;\n};\n\nexport var getMaxElementSize = function getMaxElementSize() {\n if (isBrowser()) {\n if (isChrome()) {\n return CHROME_MAX_ELEMENT_SIZE;\n }\n }\n return DEFAULT_MAX_ELEMENT_SIZE;\n};","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\n\n\nimport CellSizeAndPositionManager from './CellSizeAndPositionManager';\n\nimport { getMaxElementSize } from './maxElementSize.js';\n\n/**\n * Browsers have scroll offset limitations (eg Chrome stops scrolling at ~33.5M pixels where as Edge tops out at ~1.5M pixels).\n * After a certain position, the browser won't allow the user to scroll further (even via JavaScript scroll offset adjustments).\n * This util picks a lower ceiling for max size and artificially adjusts positions within to make it transparent for users.\n */\n\n/**\n * Extends CellSizeAndPositionManager and adds scaling behavior for lists that are too large to fit within a browser's native limits.\n */\nvar ScalingCellSizeAndPositionManager = function () {\n function ScalingCellSizeAndPositionManager(_ref) {\n var _ref$maxScrollSize = _ref.maxScrollSize,\n maxScrollSize = _ref$maxScrollSize === undefined ? getMaxElementSize() : _ref$maxScrollSize,\n params = _objectWithoutProperties(_ref, ['maxScrollSize']);\n\n _classCallCheck(this, ScalingCellSizeAndPositionManager);\n\n // Favor composition over inheritance to simplify IE10 support\n this._cellSizeAndPositionManager = new CellSizeAndPositionManager(params);\n this._maxScrollSize = maxScrollSize;\n }\n\n _createClass(ScalingCellSizeAndPositionManager, [{\n key: 'areOffsetsAdjusted',\n value: function areOffsetsAdjusted() {\n return this._cellSizeAndPositionManager.getTotalSize() > this._maxScrollSize;\n }\n }, {\n key: 'configure',\n value: function configure(params) {\n this._cellSizeAndPositionManager.configure(params);\n }\n }, {\n key: 'getCellCount',\n value: function getCellCount() {\n return this._cellSizeAndPositionManager.getCellCount();\n }\n }, {\n key: 'getEstimatedCellSize',\n value: function getEstimatedCellSize() {\n return this._cellSizeAndPositionManager.getEstimatedCellSize();\n }\n }, {\n key: 'getLastMeasuredIndex',\n value: function getLastMeasuredIndex() {\n return this._cellSizeAndPositionManager.getLastMeasuredIndex();\n }\n\n /**\n * Number of pixels a cell at the given position (offset) should be shifted in order to fit within the scaled container.\n * The offset passed to this function is scaled (safe) as well.\n */\n\n }, {\n key: 'getOffsetAdjustment',\n value: function getOffsetAdjustment(_ref2) {\n var containerSize = _ref2.containerSize,\n offset = _ref2.offset;\n\n var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n var safeTotalSize = this.getTotalSize();\n var offsetPercentage = this._getOffsetPercentage({\n containerSize: containerSize,\n offset: offset,\n totalSize: safeTotalSize\n });\n\n return Math.round(offsetPercentage * (safeTotalSize - totalSize));\n }\n }, {\n key: 'getSizeAndPositionOfCell',\n value: function getSizeAndPositionOfCell(index) {\n return this._cellSizeAndPositionManager.getSizeAndPositionOfCell(index);\n }\n }, {\n key: 'getSizeAndPositionOfLastMeasuredCell',\n value: function getSizeAndPositionOfLastMeasuredCell() {\n return this._cellSizeAndPositionManager.getSizeAndPositionOfLastMeasuredCell();\n }\n\n /** See CellSizeAndPositionManager#getTotalSize */\n\n }, {\n key: 'getTotalSize',\n value: function getTotalSize() {\n return Math.min(this._maxScrollSize, this._cellSizeAndPositionManager.getTotalSize());\n }\n\n /** See CellSizeAndPositionManager#getUpdatedOffsetForIndex */\n\n }, {\n key: 'getUpdatedOffsetForIndex',\n value: function getUpdatedOffsetForIndex(_ref3) {\n var _ref3$align = _ref3.align,\n align = _ref3$align === undefined ? 'auto' : _ref3$align,\n containerSize = _ref3.containerSize,\n currentOffset = _ref3.currentOffset,\n targetIndex = _ref3.targetIndex;\n\n currentOffset = this._safeOffsetToOffset({\n containerSize: containerSize,\n offset: currentOffset\n });\n\n var offset = this._cellSizeAndPositionManager.getUpdatedOffsetForIndex({\n align: align,\n containerSize: containerSize,\n currentOffset: currentOffset,\n targetIndex: targetIndex\n });\n\n return this._offsetToSafeOffset({\n containerSize: containerSize,\n offset: offset\n });\n }\n\n /** See CellSizeAndPositionManager#getVisibleCellRange */\n\n }, {\n key: 'getVisibleCellRange',\n value: function getVisibleCellRange(_ref4) {\n var containerSize = _ref4.containerSize,\n offset = _ref4.offset;\n\n offset = this._safeOffsetToOffset({\n containerSize: containerSize,\n offset: offset\n });\n\n return this._cellSizeAndPositionManager.getVisibleCellRange({\n containerSize: containerSize,\n offset: offset\n });\n }\n }, {\n key: 'resetCell',\n value: function resetCell(index) {\n this._cellSizeAndPositionManager.resetCell(index);\n }\n }, {\n key: '_getOffsetPercentage',\n value: function _getOffsetPercentage(_ref5) {\n var containerSize = _ref5.containerSize,\n offset = _ref5.offset,\n totalSize = _ref5.totalSize;\n\n return totalSize <= containerSize ? 0 : offset / (totalSize - containerSize);\n }\n }, {\n key: '_offsetToSafeOffset',\n value: function _offsetToSafeOffset(_ref6) {\n var containerSize = _ref6.containerSize,\n offset = _ref6.offset;\n\n var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n var safeTotalSize = this.getTotalSize();\n\n if (totalSize === safeTotalSize) {\n return offset;\n } else {\n var offsetPercentage = this._getOffsetPercentage({\n containerSize: containerSize,\n offset: offset,\n totalSize: totalSize\n });\n\n return Math.round(offsetPercentage * (safeTotalSize - containerSize));\n }\n }\n }, {\n key: '_safeOffsetToOffset',\n value: function _safeOffsetToOffset(_ref7) {\n var containerSize = _ref7.containerSize,\n offset = _ref7.offset;\n\n var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n var safeTotalSize = this.getTotalSize();\n\n if (totalSize === safeTotalSize) {\n return offset;\n } else {\n var offsetPercentage = this._getOffsetPercentage({\n containerSize: containerSize,\n offset: offset,\n totalSize: safeTotalSize\n });\n\n return Math.round(offsetPercentage * (totalSize - containerSize));\n }\n }\n }]);\n\n return ScalingCellSizeAndPositionManager;\n}();\n\nexport default ScalingCellSizeAndPositionManager;\nimport { bpfrpt_proptype_Alignment } from '../types';\nimport { bpfrpt_proptype_CellSizeGetter } from '../types';\nimport { bpfrpt_proptype_VisibleCellRange } from '../types';","import _Object$keys from 'babel-runtime/core-js/object/keys';\n/**\n * Helper utility that updates the specified callback whenever any of the specified indices have changed.\n */\nexport default function createCallbackMemoizer() {\n var requireAllKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n var cachedIndices = {};\n\n return function (_ref) {\n var callback = _ref.callback,\n indices = _ref.indices;\n\n var keys = _Object$keys(indices);\n var allInitialized = !requireAllKeys || keys.every(function (key) {\n var value = indices[key];\n return Array.isArray(value) ? value.length > 0 : value >= 0;\n });\n var indexChanged = keys.length !== _Object$keys(cachedIndices).length || keys.some(function (key) {\n var cachedValue = cachedIndices[key];\n var value = indices[key];\n\n return Array.isArray(value) ? cachedValue.join(',') !== value.join(',') : cachedValue !== value;\n });\n\n cachedIndices = indices;\n\n if (allInitialized && indexChanged) {\n callback(indices);\n }\n };\n}","\n\nimport ScalingCellSizeAndPositionManager from './ScalingCellSizeAndPositionManager.js';\n\n/**\n * Helper function that determines when to update scroll offsets to ensure that a scroll-to-index remains visible.\n * This function also ensures that the scroll ofset isn't past the last column/row of cells.\n */\n\nexport default function updateScrollIndexHelper(_ref) {\n var cellSize = _ref.cellSize,\n cellSizeAndPositionManager = _ref.cellSizeAndPositionManager,\n previousCellsCount = _ref.previousCellsCount,\n previousCellSize = _ref.previousCellSize,\n previousScrollToAlignment = _ref.previousScrollToAlignment,\n previousScrollToIndex = _ref.previousScrollToIndex,\n previousSize = _ref.previousSize,\n scrollOffset = _ref.scrollOffset,\n scrollToAlignment = _ref.scrollToAlignment,\n scrollToIndex = _ref.scrollToIndex,\n size = _ref.size,\n sizeJustIncreasedFromZero = _ref.sizeJustIncreasedFromZero,\n updateScrollIndexCallback = _ref.updateScrollIndexCallback;\n\n var cellCount = cellSizeAndPositionManager.getCellCount();\n var hasScrollToIndex = scrollToIndex >= 0 && scrollToIndex < cellCount;\n var sizeHasChanged = size !== previousSize || sizeJustIncreasedFromZero || !previousCellSize || typeof cellSize === 'number' && cellSize !== previousCellSize;\n\n // If we have a new scroll target OR if height/row-height has changed,\n // We should ensure that the scroll target is visible.\n if (hasScrollToIndex && (sizeHasChanged || scrollToAlignment !== previousScrollToAlignment || scrollToIndex !== previousScrollToIndex)) {\n updateScrollIndexCallback(scrollToIndex);\n\n // If we don't have a selected item but list size or number of children have decreased,\n // Make sure we aren't scrolled too far past the current content.\n } else if (!hasScrollToIndex && cellCount > 0 && (size < previousSize || cellCount < previousCellsCount)) {\n // We need to ensure that the current scroll offset is still within the collection's range.\n // To do this, we don't need to measure everything; CellMeasurer would perform poorly.\n // Just check to make sure we're still okay.\n // Only adjust the scroll position if we've scrolled below the last set of rows.\n if (scrollOffset > cellSizeAndPositionManager.getTotalSize() - size) {\n updateScrollIndexCallback(cellCount - 1);\n }\n }\n}\nimport { bpfrpt_proptype_Alignment } from '../types';\nimport { bpfrpt_proptype_CellSize } from '../types';","\n\n// Properly handle server-side rendering.\nvar win = void 0;\n\nif (typeof window !== 'undefined') {\n win = window;\n} else if (typeof self !== 'undefined') {\n win = self;\n} else {\n win = {};\n}\n\n// requestAnimationFrame() shim by Paul Irish\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\nvar request = win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || win.oRequestAnimationFrame || win.msRequestAnimationFrame || function (callback) {\n return win.setTimeout(callback, 1000 / 60);\n};\n\nvar cancel = win.cancelAnimationFrame || win.webkitCancelAnimationFrame || win.mozCancelAnimationFrame || win.oCancelAnimationFrame || win.msCancelAnimationFrame || function (id) {\n win.clearTimeout(id);\n};\n\nexport var raf = request;\nexport var caf = cancel;","import _Promise from 'babel-runtime/core-js/promise';\nimport { caf, raf } from './animationFrame';\n\nvar bpfrpt_proptype_AnimationTimeoutId = process.env.NODE_ENV === 'production' ? null : {\n id: PropTypes.number.isRequired\n};\n\n\nexport var cancelAnimationTimeout = function cancelAnimationTimeout(frame) {\n return caf(frame.id);\n};\n\n/**\n * Recursively calls requestAnimationFrame until a specified delay has been met or exceeded.\n * When the delay time has been reached the function you're timing out will be called.\n *\n * Credit: Joe Lambert (https://gist.github.com/joelambert/1002116#file-requesttimeout-js)\n */\nexport var requestAnimationTimeout = function requestAnimationTimeout(callback, delay) {\n var start = void 0;\n // wait for end of processing current event handler, because event handler may be long\n _Promise.resolve().then(function () {\n start = Date.now();\n });\n\n var timeout = function timeout() {\n if (Date.now() - start >= delay) {\n callback.call();\n } else {\n frame.id = raf(timeout);\n }\n };\n\n var frame = {\n id: raf(timeout)\n };\n\n return frame;\n};\nimport PropTypes from 'prop-types';\nexport { bpfrpt_proptype_AnimationTimeoutId };","import _Object$assign from 'babel-runtime/core-js/object/assign';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport calculateSizeAndPositionDataAndUpdateScrollOffset from './utils/calculateSizeAndPositionDataAndUpdateScrollOffset';\nimport ScalingCellSizeAndPositionManager from './utils/ScalingCellSizeAndPositionManager';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\nimport defaultOverscanIndicesGetter, { SCROLL_DIRECTION_BACKWARD, SCROLL_DIRECTION_FORWARD } from './defaultOverscanIndicesGetter';\nimport updateScrollIndexHelper from './utils/updateScrollIndexHelper';\nimport defaultCellRangeRenderer from './defaultCellRangeRenderer';\nimport scrollbarSize from 'dom-helpers/util/scrollbarSize';\nimport { polyfill } from 'react-lifecycles-compat';\nimport { requestAnimationTimeout, cancelAnimationTimeout } from '../utils/requestAnimationTimeout';\n\n/**\n * Specifies the number of milliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\nexport var DEFAULT_SCROLLING_RESET_TIME_INTERVAL = 150;\n\n/**\n * Controls whether the Grid updates the DOM element's scrollLeft/scrollTop based on the current state or just observes it.\n * This prevents Grid from interrupting mouse-wheel animations (see issue #2).\n */\nvar SCROLL_POSITION_CHANGE_REASONS = {\n OBSERVED: 'observed',\n REQUESTED: 'requested'\n};\n\nvar renderNull = function renderNull() {\n return null;\n};\n\n/**\n * Renders tabular data with virtualization along the vertical and horizontal axes.\n * Row heights and column widths must be known ahead of time and specified as properties.\n */\nvar Grid = function (_React$PureComponent) {\n _inherits(Grid, _React$PureComponent);\n\n // Invokes onSectionRendered callback only when start/stop row or column indices change\n function Grid(props) {\n _classCallCheck(this, Grid);\n\n var _this = _possibleConstructorReturn(this, (Grid.__proto__ || _Object$getPrototypeOf(Grid)).call(this, props));\n\n _this._onGridRenderedMemoizer = createCallbackMemoizer();\n _this._onScrollMemoizer = createCallbackMemoizer(false);\n _this._deferredInvalidateColumnIndex = null;\n _this._deferredInvalidateRowIndex = null;\n _this._recomputeScrollLeftFlag = false;\n _this._recomputeScrollTopFlag = false;\n _this._horizontalScrollBarSize = 0;\n _this._verticalScrollBarSize = 0;\n _this._scrollbarPresenceChanged = false;\n _this._renderedColumnStartIndex = 0;\n _this._renderedColumnStopIndex = 0;\n _this._renderedRowStartIndex = 0;\n _this._renderedRowStopIndex = 0;\n _this._styleCache = {};\n _this._cellCache = {};\n\n _this._debounceScrollEndedCallback = function () {\n _this._disablePointerEventsTimeoutId = null;\n // isScrolling is used to determine if we reset styleCache\n _this.setState({\n isScrolling: false,\n needToResetStyleCache: false\n });\n };\n\n _this._invokeOnGridRenderedHelper = function () {\n var onSectionRendered = _this.props.onSectionRendered;\n\n\n _this._onGridRenderedMemoizer({\n callback: onSectionRendered,\n indices: {\n columnOverscanStartIndex: _this._columnStartIndex,\n columnOverscanStopIndex: _this._columnStopIndex,\n columnStartIndex: _this._renderedColumnStartIndex,\n columnStopIndex: _this._renderedColumnStopIndex,\n rowOverscanStartIndex: _this._rowStartIndex,\n rowOverscanStopIndex: _this._rowStopIndex,\n rowStartIndex: _this._renderedRowStartIndex,\n rowStopIndex: _this._renderedRowStopIndex\n }\n });\n };\n\n _this._setScrollingContainerRef = function (ref) {\n _this._scrollingContainer = ref;\n };\n\n _this._onScroll = function (event) {\n // In certain edge-cases React dispatches an onScroll event with an invalid target.scrollLeft / target.scrollTop.\n // This invalid event can be detected by comparing event.target to this component's scrollable DOM element.\n // See issue #404 for more information.\n if (event.target === _this._scrollingContainer) {\n _this.handleScrollEvent(event.target);\n }\n };\n\n var columnSizeAndPositionManager = new ScalingCellSizeAndPositionManager({\n cellCount: props.columnCount,\n cellSizeGetter: function cellSizeGetter(params) {\n return Grid._wrapSizeGetter(props.columnWidth)(params);\n },\n estimatedCellSize: Grid._getEstimatedColumnSize(props)\n });\n var rowSizeAndPositionManager = new ScalingCellSizeAndPositionManager({\n cellCount: props.rowCount,\n cellSizeGetter: function cellSizeGetter(params) {\n return Grid._wrapSizeGetter(props.rowHeight)(params);\n },\n estimatedCellSize: Grid._getEstimatedRowSize(props)\n });\n\n _this.state = {\n instanceProps: {\n columnSizeAndPositionManager: columnSizeAndPositionManager,\n rowSizeAndPositionManager: rowSizeAndPositionManager,\n\n prevColumnWidth: props.columnWidth,\n prevRowHeight: props.rowHeight,\n prevColumnCount: props.columnCount,\n prevRowCount: props.rowCount,\n prevIsScrolling: props.isScrolling === true,\n prevScrollToColumn: props.scrollToColumn,\n prevScrollToRow: props.scrollToRow,\n prevScrollLeft: props.scrollLeft,\n prevScrollTop: props.scrollTop,\n\n scrollbarSize: 0,\n scrollbarSizeMeasured: false\n },\n isScrolling: false,\n scrollDirectionHorizontal: SCROLL_DIRECTION_FORWARD,\n scrollDirectionVertical: SCROLL_DIRECTION_FORWARD,\n scrollLeft: props.scrollLeft || 0,\n scrollTop: props.scrollTop || 0,\n scrollPositionChangeReason: null,\n\n needToResetStyleCache: false\n };\n\n if (props.scrollToRow > 0) {\n _this._initialScrollTop = _this._getCalculatedScrollTop(props, _this.state);\n }\n if (props.scrollToColumn > 0) {\n _this._initialScrollLeft = _this._getCalculatedScrollLeft(props, _this.state);\n }\n return _this;\n }\n\n /**\n * Gets offsets for a given cell and alignment.\n */\n\n\n _createClass(Grid, [{\n key: 'getOffsetForCell',\n value: function getOffsetForCell() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$alignment = _ref.alignment,\n alignment = _ref$alignment === undefined ? this.props.scrollToAlignment : _ref$alignment,\n _ref$columnIndex = _ref.columnIndex,\n columnIndex = _ref$columnIndex === undefined ? this.props.scrollToColumn : _ref$columnIndex,\n _ref$rowIndex = _ref.rowIndex,\n rowIndex = _ref$rowIndex === undefined ? this.props.scrollToRow : _ref$rowIndex;\n\n var offsetProps = _extends({}, this.props, {\n scrollToAlignment: alignment,\n scrollToColumn: columnIndex,\n scrollToRow: rowIndex\n });\n\n return {\n scrollLeft: this._getCalculatedScrollLeft(offsetProps),\n scrollTop: this._getCalculatedScrollTop(offsetProps)\n };\n }\n\n /**\n * Gets estimated total rows' height.\n */\n\n }, {\n key: 'getTotalRowsHeight',\n value: function getTotalRowsHeight() {\n return this.state.instanceProps.rowSizeAndPositionManager.getTotalSize();\n }\n\n /**\n * Gets estimated total columns' width.\n */\n\n }, {\n key: 'getTotalColumnsWidth',\n value: function getTotalColumnsWidth() {\n return this.state.instanceProps.columnSizeAndPositionManager.getTotalSize();\n }\n\n /**\n * This method handles a scroll event originating from an external scroll control.\n * It's an advanced method and should probably not be used unless you're implementing a custom scroll-bar solution.\n */\n\n }, {\n key: 'handleScrollEvent',\n value: function handleScrollEvent(_ref2) {\n var _ref2$scrollLeft = _ref2.scrollLeft,\n scrollLeftParam = _ref2$scrollLeft === undefined ? 0 : _ref2$scrollLeft,\n _ref2$scrollTop = _ref2.scrollTop,\n scrollTopParam = _ref2$scrollTop === undefined ? 0 : _ref2$scrollTop;\n\n // On iOS, we can arrive at negative offsets by swiping past the start.\n // To prevent flicker here, we make playing in the negative offset zone cause nothing to happen.\n if (scrollTopParam < 0) {\n return;\n }\n\n // Prevent pointer events from interrupting a smooth scroll\n this._debounceScrollEnded();\n\n var _props = this.props,\n autoHeight = _props.autoHeight,\n autoWidth = _props.autoWidth,\n height = _props.height,\n width = _props.width;\n var instanceProps = this.state.instanceProps;\n\n // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n // This causes a series of rapid renders that is slow for long lists.\n // We can avoid that by doing some simple bounds checking to ensure that scroll offsets never exceed their bounds.\n\n var scrollbarSize = instanceProps.scrollbarSize;\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n var scrollLeft = Math.min(Math.max(0, totalColumnsWidth - width + scrollbarSize), scrollLeftParam);\n var scrollTop = Math.min(Math.max(0, totalRowsHeight - height + scrollbarSize), scrollTopParam);\n\n // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n // Don't force a re-render if this is the case.\n // The mouse may move faster then the animation frame does.\n // Use requestAnimationFrame to avoid over-updating.\n if (this.state.scrollLeft !== scrollLeft || this.state.scrollTop !== scrollTop) {\n // Track scrolling direction so we can more efficiently overscan rows to reduce empty space around the edges while scrolling.\n // Don't change direction for an axis unless scroll offset has changed.\n var _scrollDirectionHorizontal = scrollLeft !== this.state.scrollLeft ? scrollLeft > this.state.scrollLeft ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD : this.state.scrollDirectionHorizontal;\n var _scrollDirectionVertical = scrollTop !== this.state.scrollTop ? scrollTop > this.state.scrollTop ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD : this.state.scrollDirectionVertical;\n\n var newState = {\n isScrolling: true,\n scrollDirectionHorizontal: _scrollDirectionHorizontal,\n scrollDirectionVertical: _scrollDirectionVertical,\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.OBSERVED\n };\n\n if (!autoHeight) {\n newState.scrollTop = scrollTop;\n }\n\n if (!autoWidth) {\n newState.scrollLeft = scrollLeft;\n }\n\n newState.needToResetStyleCache = false;\n this.setState(newState);\n }\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n totalColumnsWidth: totalColumnsWidth,\n totalRowsHeight: totalRowsHeight\n });\n }\n\n /**\n * Invalidate Grid size and recompute visible cells.\n * This is a deferred wrapper for recomputeGridSize().\n * It sets a flag to be evaluated on cDM/cDU to avoid unnecessary renders.\n * This method is intended for advanced use-cases like CellMeasurer.\n */\n // @TODO (bvaughn) Add automated test coverage for this.\n\n }, {\n key: 'invalidateCellSizeAfterRender',\n value: function invalidateCellSizeAfterRender(_ref3) {\n var columnIndex = _ref3.columnIndex,\n rowIndex = _ref3.rowIndex;\n\n this._deferredInvalidateColumnIndex = typeof this._deferredInvalidateColumnIndex === 'number' ? Math.min(this._deferredInvalidateColumnIndex, columnIndex) : columnIndex;\n this._deferredInvalidateRowIndex = typeof this._deferredInvalidateRowIndex === 'number' ? Math.min(this._deferredInvalidateRowIndex, rowIndex) : rowIndex;\n }\n\n /**\n * Pre-measure all columns and rows in a Grid.\n * Typically cells are only measured as needed and estimated sizes are used for cells that have not yet been measured.\n * This method ensures that the next call to getTotalSize() returns an exact size (as opposed to just an estimated one).\n */\n\n }, {\n key: 'measureAllCells',\n value: function measureAllCells() {\n var _props2 = this.props,\n columnCount = _props2.columnCount,\n rowCount = _props2.rowCount;\n var instanceProps = this.state.instanceProps;\n\n instanceProps.columnSizeAndPositionManager.getSizeAndPositionOfCell(columnCount - 1);\n instanceProps.rowSizeAndPositionManager.getSizeAndPositionOfCell(rowCount - 1);\n }\n\n /**\n * Forced recompute of row heights and column widths.\n * This function should be called if dynamic column or row sizes have changed but nothing else has.\n * Since Grid only receives :columnCount and :rowCount it has no way of detecting when the underlying data changes.\n */\n\n }, {\n key: 'recomputeGridSize',\n value: function recomputeGridSize() {\n var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref4$columnIndex = _ref4.columnIndex,\n columnIndex = _ref4$columnIndex === undefined ? 0 : _ref4$columnIndex,\n _ref4$rowIndex = _ref4.rowIndex,\n rowIndex = _ref4$rowIndex === undefined ? 0 : _ref4$rowIndex;\n\n var _props3 = this.props,\n scrollToColumn = _props3.scrollToColumn,\n scrollToRow = _props3.scrollToRow;\n var instanceProps = this.state.instanceProps;\n\n\n instanceProps.columnSizeAndPositionManager.resetCell(columnIndex);\n instanceProps.rowSizeAndPositionManager.resetCell(rowIndex);\n\n // Cell sizes may be determined by a function property.\n // In this case the cDU handler can't know if they changed.\n // Store this flag to let the next cDU pass know it needs to recompute the scroll offset.\n this._recomputeScrollLeftFlag = scrollToColumn >= 0 && (this.state.scrollDirectionHorizontal === SCROLL_DIRECTION_FORWARD ? columnIndex <= scrollToColumn : columnIndex >= scrollToColumn);\n this._recomputeScrollTopFlag = scrollToRow >= 0 && (this.state.scrollDirectionVertical === SCROLL_DIRECTION_FORWARD ? rowIndex <= scrollToRow : rowIndex >= scrollToRow);\n\n // Clear cell cache in case we are scrolling;\n // Invalid row heights likely mean invalid cached content as well.\n this._styleCache = {};\n this._cellCache = {};\n\n this.forceUpdate();\n }\n\n /**\n * Ensure column and row are visible.\n */\n\n }, {\n key: 'scrollToCell',\n value: function scrollToCell(_ref5) {\n var columnIndex = _ref5.columnIndex,\n rowIndex = _ref5.rowIndex;\n var columnCount = this.props.columnCount;\n\n\n var props = this.props;\n\n // Don't adjust scroll offset for single-column grids (eg List, Table).\n // This can cause a funky scroll offset because of the vertical scrollbar width.\n if (columnCount > 1 && columnIndex !== undefined) {\n this._updateScrollLeftForScrollToColumn(_extends({}, props, {\n scrollToColumn: columnIndex\n }));\n }\n\n if (rowIndex !== undefined) {\n this._updateScrollTopForScrollToRow(_extends({}, props, {\n scrollToRow: rowIndex\n }));\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _props4 = this.props,\n getScrollbarSize = _props4.getScrollbarSize,\n height = _props4.height,\n scrollLeft = _props4.scrollLeft,\n scrollToColumn = _props4.scrollToColumn,\n scrollTop = _props4.scrollTop,\n scrollToRow = _props4.scrollToRow,\n width = _props4.width;\n var instanceProps = this.state.instanceProps;\n\n // Reset initial offsets to be ignored in browser\n\n this._initialScrollTop = 0;\n this._initialScrollLeft = 0;\n\n // If cell sizes have been invalidated (eg we are using CellMeasurer) then reset cached positions.\n // We must do this at the start of the method as we may calculate and update scroll position below.\n this._handleInvalidatedGridSize();\n\n // If this component was first rendered server-side, scrollbar size will be undefined.\n // In that event we need to remeasure.\n if (!instanceProps.scrollbarSizeMeasured) {\n this.setState(function (prevState) {\n var stateUpdate = _extends({}, prevState, { needToResetStyleCache: false });\n stateUpdate.instanceProps.scrollbarSize = getScrollbarSize();\n stateUpdate.instanceProps.scrollbarSizeMeasured = true;\n return stateUpdate;\n });\n }\n\n if (typeof scrollLeft === 'number' && scrollLeft >= 0 || typeof scrollTop === 'number' && scrollTop >= 0) {\n var stateUpdate = Grid._getScrollToPositionStateUpdate({\n prevState: this.state,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n }\n\n // refs don't work in `react-test-renderer`\n if (this._scrollingContainer) {\n // setting the ref's scrollLeft and scrollTop.\n // Somehow in MultiGrid the main grid doesn't trigger a update on mount.\n if (this._scrollingContainer.scrollLeft !== this.state.scrollLeft) {\n this._scrollingContainer.scrollLeft = this.state.scrollLeft;\n }\n if (this._scrollingContainer.scrollTop !== this.state.scrollTop) {\n this._scrollingContainer.scrollTop = this.state.scrollTop;\n }\n }\n\n // Don't update scroll offset if the size is 0; we don't render any cells in this case.\n // Setting a state may cause us to later thing we've updated the offce when we haven't.\n var sizeIsBiggerThanZero = height > 0 && width > 0;\n if (scrollToColumn >= 0 && sizeIsBiggerThanZero) {\n this._updateScrollLeftForScrollToColumn();\n }\n if (scrollToRow >= 0 && sizeIsBiggerThanZero) {\n this._updateScrollTopForScrollToRow();\n }\n\n // Update onRowsRendered callback\n this._invokeOnGridRenderedHelper();\n\n // Initialize onScroll callback\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft || 0,\n scrollTop: scrollTop || 0,\n totalColumnsWidth: instanceProps.columnSizeAndPositionManager.getTotalSize(),\n totalRowsHeight: instanceProps.rowSizeAndPositionManager.getTotalSize()\n });\n\n this._maybeCallOnScrollbarPresenceChange();\n }\n\n /**\n * @private\n * This method updates scrollLeft/scrollTop in state for the following conditions:\n * 1) New scroll-to-cell props have been set\n */\n\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n var _this2 = this;\n\n var _props5 = this.props,\n autoHeight = _props5.autoHeight,\n autoWidth = _props5.autoWidth,\n columnCount = _props5.columnCount,\n height = _props5.height,\n rowCount = _props5.rowCount,\n scrollToAlignment = _props5.scrollToAlignment,\n scrollToColumn = _props5.scrollToColumn,\n scrollToRow = _props5.scrollToRow,\n width = _props5.width;\n var _state = this.state,\n scrollLeft = _state.scrollLeft,\n scrollPositionChangeReason = _state.scrollPositionChangeReason,\n scrollTop = _state.scrollTop,\n instanceProps = _state.instanceProps;\n // If cell sizes have been invalidated (eg we are using CellMeasurer) then reset cached positions.\n // We must do this at the start of the method as we may calculate and update scroll position below.\n\n this._handleInvalidatedGridSize();\n\n // Handle edge case where column or row count has only just increased over 0.\n // In this case we may have to restore a previously-specified scroll offset.\n // For more info see bvaughn/react-virtualized/issues/218\n var columnOrRowCountJustIncreasedFromZero = columnCount > 0 && prevProps.columnCount === 0 || rowCount > 0 && prevProps.rowCount === 0;\n\n // Make sure requested changes to :scrollLeft or :scrollTop get applied.\n // Assigning to scrollLeft/scrollTop tells the browser to interrupt any running scroll animations,\n // And to discard any pending async changes to the scroll position that may have happened in the meantime (e.g. on a separate scrolling thread).\n // So we only set these when we require an adjustment of the scroll position.\n // See issue #2 for more information.\n if (scrollPositionChangeReason === SCROLL_POSITION_CHANGE_REASONS.REQUESTED) {\n // @TRICKY :autoHeight and :autoWidth properties instructs Grid to leave :scrollTop and :scrollLeft management to an external HOC (eg WindowScroller).\n // In this case we should avoid checking scrollingContainer.scrollTop and scrollingContainer.scrollLeft since it forces layout/flow.\n if (!autoWidth && scrollLeft >= 0 && (scrollLeft !== this._scrollingContainer.scrollLeft || columnOrRowCountJustIncreasedFromZero)) {\n this._scrollingContainer.scrollLeft = scrollLeft;\n }\n if (!autoHeight && scrollTop >= 0 && (scrollTop !== this._scrollingContainer.scrollTop || columnOrRowCountJustIncreasedFromZero)) {\n this._scrollingContainer.scrollTop = scrollTop;\n }\n }\n\n // Special case where the previous size was 0:\n // In this case we don't show any windowed cells at all.\n // So we should always recalculate offset afterwards.\n var sizeJustIncreasedFromZero = (prevProps.width === 0 || prevProps.height === 0) && height > 0 && width > 0;\n\n // Update scroll offsets if the current :scrollToColumn or :scrollToRow values requires it\n // @TODO Do we also need this check or can the one in componentWillUpdate() suffice?\n if (this._recomputeScrollLeftFlag) {\n this._recomputeScrollLeftFlag = false;\n this._updateScrollLeftForScrollToColumn(this.props);\n } else {\n updateScrollIndexHelper({\n cellSizeAndPositionManager: instanceProps.columnSizeAndPositionManager,\n previousCellsCount: prevProps.columnCount,\n previousCellSize: prevProps.columnWidth,\n previousScrollToAlignment: prevProps.scrollToAlignment,\n previousScrollToIndex: prevProps.scrollToColumn,\n previousSize: prevProps.width,\n scrollOffset: scrollLeft,\n scrollToAlignment: scrollToAlignment,\n scrollToIndex: scrollToColumn,\n size: width,\n sizeJustIncreasedFromZero: sizeJustIncreasedFromZero,\n updateScrollIndexCallback: function updateScrollIndexCallback() {\n return _this2._updateScrollLeftForScrollToColumn(_this2.props);\n }\n });\n }\n\n if (this._recomputeScrollTopFlag) {\n this._recomputeScrollTopFlag = false;\n this._updateScrollTopForScrollToRow(this.props);\n } else {\n updateScrollIndexHelper({\n cellSizeAndPositionManager: instanceProps.rowSizeAndPositionManager,\n previousCellsCount: prevProps.rowCount,\n previousCellSize: prevProps.rowHeight,\n previousScrollToAlignment: prevProps.scrollToAlignment,\n previousScrollToIndex: prevProps.scrollToRow,\n previousSize: prevProps.height,\n scrollOffset: scrollTop,\n scrollToAlignment: scrollToAlignment,\n scrollToIndex: scrollToRow,\n size: height,\n sizeJustIncreasedFromZero: sizeJustIncreasedFromZero,\n updateScrollIndexCallback: function updateScrollIndexCallback() {\n return _this2._updateScrollTopForScrollToRow(_this2.props);\n }\n });\n }\n\n // Update onRowsRendered callback if start/stop indices have changed\n this._invokeOnGridRenderedHelper();\n\n // Changes to :scrollLeft or :scrollTop should also notify :onScroll listeners\n if (scrollLeft !== prevState.scrollLeft || scrollTop !== prevState.scrollTop) {\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n totalColumnsWidth: totalColumnsWidth,\n totalRowsHeight: totalRowsHeight\n });\n }\n\n this._maybeCallOnScrollbarPresenceChange();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this._disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(this._disablePointerEventsTimeoutId);\n }\n }\n\n /**\n * This method updates scrollLeft/scrollTop in state for the following conditions:\n * 1) Empty content (0 rows or columns)\n * 2) New scroll props overriding the current state\n * 3) Cells-count or cells-size has changed, making previous scroll offsets invalid\n */\n\n }, {\n key: 'render',\n value: function render() {\n var _props6 = this.props,\n autoContainerWidth = _props6.autoContainerWidth,\n autoHeight = _props6.autoHeight,\n autoWidth = _props6.autoWidth,\n className = _props6.className,\n containerProps = _props6.containerProps,\n containerRole = _props6.containerRole,\n containerStyle = _props6.containerStyle,\n height = _props6.height,\n id = _props6.id,\n noContentRenderer = _props6.noContentRenderer,\n role = _props6.role,\n style = _props6.style,\n tabIndex = _props6.tabIndex,\n width = _props6.width;\n var _state2 = this.state,\n instanceProps = _state2.instanceProps,\n needToResetStyleCache = _state2.needToResetStyleCache;\n\n\n var isScrolling = this._isScrolling();\n\n var gridStyle = {\n boxSizing: 'border-box',\n direction: 'ltr',\n height: autoHeight ? 'auto' : height,\n position: 'relative',\n width: autoWidth ? 'auto' : width,\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform'\n };\n\n if (needToResetStyleCache) {\n this._styleCache = {};\n }\n\n // calculate _styleCache here\n // if state.isScrolling (not from _isScrolling) then reset\n if (!this.state.isScrolling) {\n this._resetStyleCache();\n }\n\n // calculate children to render here\n this._calculateChildrenToRender(this.props, this.state);\n\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n\n // Force browser to hide scrollbars when we know they aren't necessary.\n // Otherwise once scrollbars appear they may not disappear again.\n // For more info see issue #116\n var verticalScrollBarSize = totalRowsHeight > height ? instanceProps.scrollbarSize : 0;\n var horizontalScrollBarSize = totalColumnsWidth > width ? instanceProps.scrollbarSize : 0;\n\n if (horizontalScrollBarSize !== this._horizontalScrollBarSize || verticalScrollBarSize !== this._verticalScrollBarSize) {\n this._horizontalScrollBarSize = horizontalScrollBarSize;\n this._verticalScrollBarSize = verticalScrollBarSize;\n this._scrollbarPresenceChanged = true;\n }\n\n // Also explicitly init styles to 'auto' if scrollbars are required.\n // This works around an obscure edge case where external CSS styles have not yet been loaded,\n // But an initial scroll index of offset is set as an external prop.\n // Without this style, Grid would render the correct range of cells but would NOT update its internal offset.\n // This was originally reported via clauderic/react-infinite-calendar/issues/23\n gridStyle.overflowX = totalColumnsWidth + verticalScrollBarSize <= width ? 'hidden' : 'auto';\n gridStyle.overflowY = totalRowsHeight + horizontalScrollBarSize <= height ? 'hidden' : 'auto';\n\n var childrenToDisplay = this._childrenToDisplay;\n\n var showNoContentRenderer = childrenToDisplay.length === 0 && height > 0 && width > 0;\n\n return React.createElement(\n 'div',\n _extends({\n ref: this._setScrollingContainerRef\n }, containerProps, {\n 'aria-label': this.props['aria-label'],\n 'aria-readonly': this.props['aria-readonly'],\n className: clsx('ReactVirtualized__Grid', className),\n id: id,\n onScroll: this._onScroll,\n role: role,\n style: _extends({}, gridStyle, style),\n tabIndex: tabIndex }),\n childrenToDisplay.length > 0 && React.createElement(\n 'div',\n {\n className: 'ReactVirtualized__Grid__innerScrollContainer',\n role: containerRole,\n style: _extends({\n width: autoContainerWidth ? 'auto' : totalColumnsWidth,\n height: totalRowsHeight,\n maxWidth: totalColumnsWidth,\n maxHeight: totalRowsHeight,\n overflow: 'hidden',\n pointerEvents: isScrolling ? 'none' : '',\n position: 'relative'\n }, containerStyle) },\n childrenToDisplay\n ),\n showNoContentRenderer && noContentRenderer()\n );\n }\n\n /* ---------------------------- Helper methods ---------------------------- */\n\n }, {\n key: '_calculateChildrenToRender',\n value: function _calculateChildrenToRender() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n var cellRenderer = props.cellRenderer,\n cellRangeRenderer = props.cellRangeRenderer,\n columnCount = props.columnCount,\n deferredMeasurementCache = props.deferredMeasurementCache,\n height = props.height,\n overscanColumnCount = props.overscanColumnCount,\n overscanIndicesGetter = props.overscanIndicesGetter,\n overscanRowCount = props.overscanRowCount,\n rowCount = props.rowCount,\n width = props.width,\n isScrollingOptOut = props.isScrollingOptOut;\n var scrollDirectionHorizontal = state.scrollDirectionHorizontal,\n scrollDirectionVertical = state.scrollDirectionVertical,\n instanceProps = state.instanceProps;\n\n\n var scrollTop = this._initialScrollTop > 0 ? this._initialScrollTop : state.scrollTop;\n var scrollLeft = this._initialScrollLeft > 0 ? this._initialScrollLeft : state.scrollLeft;\n\n var isScrolling = this._isScrolling(props, state);\n\n this._childrenToDisplay = [];\n\n // Render only enough columns and rows to cover the visible area of the grid.\n if (height > 0 && width > 0) {\n var visibleColumnIndices = instanceProps.columnSizeAndPositionManager.getVisibleCellRange({\n containerSize: width,\n offset: scrollLeft\n });\n var visibleRowIndices = instanceProps.rowSizeAndPositionManager.getVisibleCellRange({\n containerSize: height,\n offset: scrollTop\n });\n\n var horizontalOffsetAdjustment = instanceProps.columnSizeAndPositionManager.getOffsetAdjustment({\n containerSize: width,\n offset: scrollLeft\n });\n var verticalOffsetAdjustment = instanceProps.rowSizeAndPositionManager.getOffsetAdjustment({\n containerSize: height,\n offset: scrollTop\n });\n\n // Store for _invokeOnGridRenderedHelper()\n this._renderedColumnStartIndex = visibleColumnIndices.start;\n this._renderedColumnStopIndex = visibleColumnIndices.stop;\n this._renderedRowStartIndex = visibleRowIndices.start;\n this._renderedRowStopIndex = visibleRowIndices.stop;\n\n var overscanColumnIndices = overscanIndicesGetter({\n direction: 'horizontal',\n cellCount: columnCount,\n overscanCellsCount: overscanColumnCount,\n scrollDirection: scrollDirectionHorizontal,\n startIndex: typeof visibleColumnIndices.start === 'number' ? visibleColumnIndices.start : 0,\n stopIndex: typeof visibleColumnIndices.stop === 'number' ? visibleColumnIndices.stop : -1\n });\n\n var overscanRowIndices = overscanIndicesGetter({\n direction: 'vertical',\n cellCount: rowCount,\n overscanCellsCount: overscanRowCount,\n scrollDirection: scrollDirectionVertical,\n startIndex: typeof visibleRowIndices.start === 'number' ? visibleRowIndices.start : 0,\n stopIndex: typeof visibleRowIndices.stop === 'number' ? visibleRowIndices.stop : -1\n });\n\n // Store for _invokeOnGridRenderedHelper()\n var columnStartIndex = overscanColumnIndices.overscanStartIndex;\n var columnStopIndex = overscanColumnIndices.overscanStopIndex;\n var rowStartIndex = overscanRowIndices.overscanStartIndex;\n var rowStopIndex = overscanRowIndices.overscanStopIndex;\n\n // Advanced use-cases (eg CellMeasurer) require batched measurements to determine accurate sizes.\n if (deferredMeasurementCache) {\n // If rows have a dynamic height, scan the rows we are about to render.\n // If any have not yet been measured, then we need to render all columns initially,\n // Because the height of the row is equal to the tallest cell within that row,\n // (And so we can't know the height without measuring all column-cells first).\n if (!deferredMeasurementCache.hasFixedHeight()) {\n for (var rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {\n if (!deferredMeasurementCache.has(rowIndex, 0)) {\n columnStartIndex = 0;\n columnStopIndex = columnCount - 1;\n break;\n }\n }\n }\n\n // If columns have a dynamic width, scan the columns we are about to render.\n // If any have not yet been measured, then we need to render all rows initially,\n // Because the width of the column is equal to the widest cell within that column,\n // (And so we can't know the width without measuring all row-cells first).\n if (!deferredMeasurementCache.hasFixedWidth()) {\n for (var columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {\n if (!deferredMeasurementCache.has(0, columnIndex)) {\n rowStartIndex = 0;\n rowStopIndex = rowCount - 1;\n break;\n }\n }\n }\n }\n\n this._childrenToDisplay = cellRangeRenderer({\n cellCache: this._cellCache,\n cellRenderer: cellRenderer,\n columnSizeAndPositionManager: instanceProps.columnSizeAndPositionManager,\n columnStartIndex: columnStartIndex,\n columnStopIndex: columnStopIndex,\n deferredMeasurementCache: deferredMeasurementCache,\n horizontalOffsetAdjustment: horizontalOffsetAdjustment,\n isScrolling: isScrolling,\n isScrollingOptOut: isScrollingOptOut,\n parent: this,\n rowSizeAndPositionManager: instanceProps.rowSizeAndPositionManager,\n rowStartIndex: rowStartIndex,\n rowStopIndex: rowStopIndex,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n styleCache: this._styleCache,\n verticalOffsetAdjustment: verticalOffsetAdjustment,\n visibleColumnIndices: visibleColumnIndices,\n visibleRowIndices: visibleRowIndices\n });\n\n // update the indices\n this._columnStartIndex = columnStartIndex;\n this._columnStopIndex = columnStopIndex;\n this._rowStartIndex = rowStartIndex;\n this._rowStopIndex = rowStopIndex;\n }\n }\n\n /**\n * Sets an :isScrolling flag for a small window of time.\n * This flag is used to disable pointer events on the scrollable portion of the Grid.\n * This prevents jerky/stuttery mouse-wheel scrolling.\n */\n\n }, {\n key: '_debounceScrollEnded',\n value: function _debounceScrollEnded() {\n var scrollingResetTimeInterval = this.props.scrollingResetTimeInterval;\n\n\n if (this._disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(this._disablePointerEventsTimeoutId);\n }\n\n this._disablePointerEventsTimeoutId = requestAnimationTimeout(this._debounceScrollEndedCallback, scrollingResetTimeInterval);\n }\n }, {\n key: '_handleInvalidatedGridSize',\n\n\n /**\n * Check for batched CellMeasurer size invalidations.\n * This will occur the first time one or more previously unmeasured cells are rendered.\n */\n value: function _handleInvalidatedGridSize() {\n if (typeof this._deferredInvalidateColumnIndex === 'number' && typeof this._deferredInvalidateRowIndex === 'number') {\n var columnIndex = this._deferredInvalidateColumnIndex;\n var rowIndex = this._deferredInvalidateRowIndex;\n\n this._deferredInvalidateColumnIndex = null;\n this._deferredInvalidateRowIndex = null;\n\n this.recomputeGridSize({ columnIndex: columnIndex, rowIndex: rowIndex });\n }\n }\n }, {\n key: '_invokeOnScrollMemoizer',\n value: function _invokeOnScrollMemoizer(_ref6) {\n var _this3 = this;\n\n var scrollLeft = _ref6.scrollLeft,\n scrollTop = _ref6.scrollTop,\n totalColumnsWidth = _ref6.totalColumnsWidth,\n totalRowsHeight = _ref6.totalRowsHeight;\n\n this._onScrollMemoizer({\n callback: function callback(_ref7) {\n var scrollLeft = _ref7.scrollLeft,\n scrollTop = _ref7.scrollTop;\n var _props7 = _this3.props,\n height = _props7.height,\n onScroll = _props7.onScroll,\n width = _props7.width;\n\n\n onScroll({\n clientHeight: height,\n clientWidth: width,\n scrollHeight: totalRowsHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: totalColumnsWidth\n });\n },\n indices: {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n }\n });\n }\n }, {\n key: '_isScrolling',\n value: function _isScrolling() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n // If isScrolling is defined in props, use it to override the value in state\n // This is a performance optimization for WindowScroller + Grid\n return Object.hasOwnProperty.call(props, 'isScrolling') ? Boolean(props.isScrolling) : Boolean(state.isScrolling);\n }\n }, {\n key: '_maybeCallOnScrollbarPresenceChange',\n value: function _maybeCallOnScrollbarPresenceChange() {\n if (this._scrollbarPresenceChanged) {\n var _onScrollbarPresenceChange = this.props.onScrollbarPresenceChange;\n\n\n this._scrollbarPresenceChanged = false;\n\n _onScrollbarPresenceChange({\n horizontal: this._horizontalScrollBarSize > 0,\n size: this.state.instanceProps.scrollbarSize,\n vertical: this._verticalScrollBarSize > 0\n });\n }\n }\n }, {\n key: 'scrollToPosition',\n\n\n /**\n * Scroll to the specified offset(s).\n * Useful for animating position changes.\n */\n value: function scrollToPosition(_ref8) {\n var scrollLeft = _ref8.scrollLeft,\n scrollTop = _ref8.scrollTop;\n\n var stateUpdate = Grid._getScrollToPositionStateUpdate({\n prevState: this.state,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n }\n }, {\n key: '_getCalculatedScrollLeft',\n value: function _getCalculatedScrollLeft() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n return Grid._getCalculatedScrollLeft(props, state);\n }\n }, {\n key: '_updateScrollLeftForScrollToColumn',\n value: function _updateScrollLeftForScrollToColumn() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n var stateUpdate = Grid._getScrollLeftForScrollToColumnStateUpdate(props, state);\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n }\n }, {\n key: '_getCalculatedScrollTop',\n value: function _getCalculatedScrollTop() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n return Grid._getCalculatedScrollTop(props, state);\n }\n }, {\n key: '_resetStyleCache',\n value: function _resetStyleCache() {\n var styleCache = this._styleCache;\n var cellCache = this._cellCache;\n var isScrollingOptOut = this.props.isScrollingOptOut;\n\n // Reset cell and style caches once scrolling stops.\n // This makes Grid simpler to use (since cells commonly change).\n // And it keeps the caches from growing too large.\n // Performance is most sensitive when a user is scrolling.\n // Don't clear visible cells from cellCache if isScrollingOptOut is specified.\n // This keeps the cellCache to a resonable size.\n\n this._cellCache = {};\n this._styleCache = {};\n\n // Copy over the visible cell styles so avoid unnecessary re-render.\n for (var rowIndex = this._rowStartIndex; rowIndex <= this._rowStopIndex; rowIndex++) {\n for (var columnIndex = this._columnStartIndex; columnIndex <= this._columnStopIndex; columnIndex++) {\n var key = rowIndex + '-' + columnIndex;\n this._styleCache[key] = styleCache[key];\n\n if (isScrollingOptOut) {\n this._cellCache[key] = cellCache[key];\n }\n }\n }\n }\n }, {\n key: '_updateScrollTopForScrollToRow',\n value: function _updateScrollTopForScrollToRow() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n var stateUpdate = Grid._getScrollTopForScrollToRowStateUpdate(props, state);\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n }\n }], [{\n key: 'getDerivedStateFromProps',\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var newState = {};\n var instanceProps = prevState.instanceProps;\n\n\n if (nextProps.columnCount === 0 && prevState.scrollLeft !== 0 || nextProps.rowCount === 0 && prevState.scrollTop !== 0) {\n newState.scrollLeft = 0;\n newState.scrollTop = 0;\n\n // only use scroll{Left,Top} from props if scrollTo{Column,Row} isn't specified\n // scrollTo{Column,Row} should override scroll{Left,Top}\n } else if (nextProps.scrollLeft !== instanceProps.prevScrollLeft && nextProps.scrollToColumn < 0 || nextProps.scrollTop !== instanceProps.prevScrollTop && nextProps.scrollToRow < 0) {\n _Object$assign(newState, Grid._getScrollToPositionStateUpdate({\n prevState: prevState,\n scrollLeft: nextProps.scrollLeft,\n scrollTop: nextProps.scrollTop\n }));\n }\n\n // Initially we should not clearStyleCache\n newState.needToResetStyleCache = false;\n if (nextProps.columnWidth !== instanceProps.prevColumnWidth || nextProps.rowHeight !== instanceProps.prevRowHeight) {\n // Reset cache. set it to {} in render\n newState.needToResetStyleCache = true;\n }\n\n instanceProps.columnSizeAndPositionManager.configure({\n cellCount: nextProps.columnCount,\n estimatedCellSize: Grid._getEstimatedColumnSize(nextProps),\n cellSizeGetter: Grid._wrapSizeGetter(nextProps.columnWidth)\n });\n\n instanceProps.rowSizeAndPositionManager.configure({\n cellCount: nextProps.rowCount,\n estimatedCellSize: Grid._getEstimatedRowSize(nextProps),\n cellSizeGetter: Grid._wrapSizeGetter(nextProps.rowHeight)\n });\n\n if (instanceProps.prevColumnCount === 0 || instanceProps.prevRowCount === 0) {\n instanceProps.prevColumnCount = 0;\n instanceProps.prevRowCount = 0;\n }\n\n // If scrolling is controlled outside this component, clear cache when scrolling stops\n if (nextProps.autoHeight && nextProps.isScrolling === false && instanceProps.prevIsScrolling === true) {\n _Object$assign(newState, {\n isScrolling: false\n });\n }\n\n var maybeStateA = void 0;\n var maybeStateB = void 0;\n\n calculateSizeAndPositionDataAndUpdateScrollOffset({\n cellCount: instanceProps.prevColumnCount,\n cellSize: typeof instanceProps.prevColumnWidth === 'number' ? instanceProps.prevColumnWidth : null,\n computeMetadataCallback: function computeMetadataCallback() {\n return instanceProps.columnSizeAndPositionManager.resetCell(0);\n },\n computeMetadataCallbackProps: nextProps,\n nextCellsCount: nextProps.columnCount,\n nextCellSize: typeof nextProps.columnWidth === 'number' ? nextProps.columnWidth : null,\n nextScrollToIndex: nextProps.scrollToColumn,\n scrollToIndex: instanceProps.prevScrollToColumn,\n updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex() {\n maybeStateA = Grid._getScrollLeftForScrollToColumnStateUpdate(nextProps, prevState);\n }\n });\n calculateSizeAndPositionDataAndUpdateScrollOffset({\n cellCount: instanceProps.prevRowCount,\n cellSize: typeof instanceProps.prevRowHeight === 'number' ? instanceProps.prevRowHeight : null,\n computeMetadataCallback: function computeMetadataCallback() {\n return instanceProps.rowSizeAndPositionManager.resetCell(0);\n },\n computeMetadataCallbackProps: nextProps,\n nextCellsCount: nextProps.rowCount,\n nextCellSize: typeof nextProps.rowHeight === 'number' ? nextProps.rowHeight : null,\n nextScrollToIndex: nextProps.scrollToRow,\n scrollToIndex: instanceProps.prevScrollToRow,\n updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex() {\n maybeStateB = Grid._getScrollTopForScrollToRowStateUpdate(nextProps, prevState);\n }\n });\n\n instanceProps.prevColumnCount = nextProps.columnCount;\n instanceProps.prevColumnWidth = nextProps.columnWidth;\n instanceProps.prevIsScrolling = nextProps.isScrolling === true;\n instanceProps.prevRowCount = nextProps.rowCount;\n instanceProps.prevRowHeight = nextProps.rowHeight;\n instanceProps.prevScrollToColumn = nextProps.scrollToColumn;\n instanceProps.prevScrollToRow = nextProps.scrollToRow;\n instanceProps.prevScrollLeft = nextProps.scrollLeft;\n instanceProps.prevScrollTop = nextProps.scrollTop;\n\n // getting scrollBarSize (moved from componentWillMount)\n instanceProps.scrollbarSize = nextProps.getScrollbarSize();\n if (instanceProps.scrollbarSize === undefined) {\n instanceProps.scrollbarSizeMeasured = false;\n instanceProps.scrollbarSize = 0;\n } else {\n instanceProps.scrollbarSizeMeasured = true;\n }\n\n newState.instanceProps = instanceProps;\n\n return _extends({}, newState, maybeStateA, maybeStateB);\n }\n }, {\n key: '_getEstimatedColumnSize',\n value: function _getEstimatedColumnSize(props) {\n return typeof props.columnWidth === 'number' ? props.columnWidth : props.estimatedColumnSize;\n }\n }, {\n key: '_getEstimatedRowSize',\n value: function _getEstimatedRowSize(props) {\n return typeof props.rowHeight === 'number' ? props.rowHeight : props.estimatedRowSize;\n }\n }, {\n key: '_getScrollToPositionStateUpdate',\n\n\n /**\n * Get the updated state after scrolling to\n * scrollLeft and scrollTop\n */\n value: function _getScrollToPositionStateUpdate(_ref9) {\n var prevState = _ref9.prevState,\n scrollLeft = _ref9.scrollLeft,\n scrollTop = _ref9.scrollTop;\n\n var newState = {\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n\n if (typeof scrollLeft === 'number' && scrollLeft >= 0) {\n newState.scrollDirectionHorizontal = scrollLeft > prevState.scrollLeft ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD;\n newState.scrollLeft = scrollLeft;\n }\n\n if (typeof scrollTop === 'number' && scrollTop >= 0) {\n newState.scrollDirectionVertical = scrollTop > prevState.scrollTop ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD;\n newState.scrollTop = scrollTop;\n }\n\n if (typeof scrollLeft === 'number' && scrollLeft >= 0 && scrollLeft !== prevState.scrollLeft || typeof scrollTop === 'number' && scrollTop >= 0 && scrollTop !== prevState.scrollTop) {\n return newState;\n }\n return null;\n }\n }, {\n key: '_wrapSizeGetter',\n value: function _wrapSizeGetter(value) {\n return typeof value === 'function' ? value : function () {\n return value;\n };\n }\n }, {\n key: '_getCalculatedScrollLeft',\n value: function _getCalculatedScrollLeft(nextProps, prevState) {\n var columnCount = nextProps.columnCount,\n height = nextProps.height,\n scrollToAlignment = nextProps.scrollToAlignment,\n scrollToColumn = nextProps.scrollToColumn,\n width = nextProps.width;\n var scrollLeft = prevState.scrollLeft,\n instanceProps = prevState.instanceProps;\n\n\n if (columnCount > 0) {\n var finalColumn = columnCount - 1;\n var targetIndex = scrollToColumn < 0 ? finalColumn : Math.min(finalColumn, scrollToColumn);\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n var scrollBarSize = instanceProps.scrollbarSizeMeasured && totalRowsHeight > height ? instanceProps.scrollbarSize : 0;\n\n return instanceProps.columnSizeAndPositionManager.getUpdatedOffsetForIndex({\n align: scrollToAlignment,\n containerSize: width - scrollBarSize,\n currentOffset: scrollLeft,\n targetIndex: targetIndex\n });\n }\n return 0;\n }\n }, {\n key: '_getScrollLeftForScrollToColumnStateUpdate',\n value: function _getScrollLeftForScrollToColumnStateUpdate(nextProps, prevState) {\n var scrollLeft = prevState.scrollLeft;\n\n var calculatedScrollLeft = Grid._getCalculatedScrollLeft(nextProps, prevState);\n\n if (typeof calculatedScrollLeft === 'number' && calculatedScrollLeft >= 0 && scrollLeft !== calculatedScrollLeft) {\n return Grid._getScrollToPositionStateUpdate({\n prevState: prevState,\n scrollLeft: calculatedScrollLeft,\n scrollTop: -1\n });\n }\n return null;\n }\n }, {\n key: '_getCalculatedScrollTop',\n value: function _getCalculatedScrollTop(nextProps, prevState) {\n var height = nextProps.height,\n rowCount = nextProps.rowCount,\n scrollToAlignment = nextProps.scrollToAlignment,\n scrollToRow = nextProps.scrollToRow,\n width = nextProps.width;\n var scrollTop = prevState.scrollTop,\n instanceProps = prevState.instanceProps;\n\n\n if (rowCount > 0) {\n var finalRow = rowCount - 1;\n var targetIndex = scrollToRow < 0 ? finalRow : Math.min(finalRow, scrollToRow);\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n var scrollBarSize = instanceProps.scrollbarSizeMeasured && totalColumnsWidth > width ? instanceProps.scrollbarSize : 0;\n\n return instanceProps.rowSizeAndPositionManager.getUpdatedOffsetForIndex({\n align: scrollToAlignment,\n containerSize: height - scrollBarSize,\n currentOffset: scrollTop,\n targetIndex: targetIndex\n });\n }\n return 0;\n }\n }, {\n key: '_getScrollTopForScrollToRowStateUpdate',\n value: function _getScrollTopForScrollToRowStateUpdate(nextProps, prevState) {\n var scrollTop = prevState.scrollTop;\n\n var calculatedScrollTop = Grid._getCalculatedScrollTop(nextProps, prevState);\n\n if (typeof calculatedScrollTop === 'number' && calculatedScrollTop >= 0 && scrollTop !== calculatedScrollTop) {\n return Grid._getScrollToPositionStateUpdate({\n prevState: prevState,\n scrollLeft: -1,\n scrollTop: calculatedScrollTop\n });\n }\n return null;\n }\n }]);\n\n return Grid;\n}(React.PureComponent);\n\nGrid.defaultProps = {\n 'aria-label': 'grid',\n 'aria-readonly': true,\n autoContainerWidth: false,\n autoHeight: false,\n autoWidth: false,\n cellRangeRenderer: defaultCellRangeRenderer,\n containerRole: 'rowgroup',\n containerStyle: {},\n estimatedColumnSize: 100,\n estimatedRowSize: 30,\n getScrollbarSize: scrollbarSize,\n noContentRenderer: renderNull,\n onScroll: function onScroll() {},\n onScrollbarPresenceChange: function onScrollbarPresenceChange() {},\n onSectionRendered: function onSectionRendered() {},\n overscanColumnCount: 0,\n overscanIndicesGetter: defaultOverscanIndicesGetter,\n overscanRowCount: 10,\n role: 'grid',\n scrollingResetTimeInterval: DEFAULT_SCROLLING_RESET_TIME_INTERVAL,\n scrollToAlignment: 'auto',\n scrollToColumn: -1,\n scrollToRow: -1,\n style: {},\n tabIndex: 0,\n isScrollingOptOut: false\n};\nGrid.propTypes = process.env.NODE_ENV === 'production' ? null : {\n \"aria-label\": PropTypes.string.isRequired,\n \"aria-readonly\": PropTypes.bool,\n\n\n /**\n * Set the width of the inner scrollable container to 'auto'.\n * This is useful for single-column Grids to ensure that the column doesn't extend below a vertical scrollbar.\n */\n autoContainerWidth: PropTypes.bool.isRequired,\n\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height of rows can stretch the window.\n * Intended for use with WindowScroller\n */\n autoHeight: PropTypes.bool.isRequired,\n\n\n /**\n * Removes fixed width from the scrollingContainer so that the total width of rows can stretch the window.\n * Intended for use with WindowScroller\n */\n autoWidth: PropTypes.bool.isRequired,\n\n\n /** Responsible for rendering a cell given an row and column index. */\n cellRenderer: function cellRenderer() {\n return (typeof bpfrpt_proptype_CellRenderer === 'function' ? bpfrpt_proptype_CellRenderer.isRequired ? bpfrpt_proptype_CellRenderer.isRequired : bpfrpt_proptype_CellRenderer : PropTypes.shape(bpfrpt_proptype_CellRenderer).isRequired).apply(this, arguments);\n },\n\n\n /** Responsible for rendering a group of cells given their index ranges. */\n cellRangeRenderer: function cellRangeRenderer() {\n return (typeof bpfrpt_proptype_CellRangeRenderer === 'function' ? bpfrpt_proptype_CellRangeRenderer.isRequired ? bpfrpt_proptype_CellRangeRenderer.isRequired : bpfrpt_proptype_CellRangeRenderer : PropTypes.shape(bpfrpt_proptype_CellRangeRenderer).isRequired).apply(this, arguments);\n },\n\n\n /** Optional custom CSS class name to attach to root Grid element. */\n className: PropTypes.string,\n\n\n /** Number of columns in grid. */\n columnCount: PropTypes.number.isRequired,\n\n\n /** Either a fixed column width (number) or a function that returns the width of a column given its index. */\n columnWidth: function columnWidth() {\n return (typeof bpfrpt_proptype_CellSize === 'function' ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n },\n\n\n /** Unfiltered props for the Grid container. */\n containerProps: PropTypes.object,\n\n\n /** ARIA role for the cell-container. */\n containerRole: PropTypes.string.isRequired,\n\n\n /** Optional inline style applied to inner cell-container */\n containerStyle: PropTypes.object.isRequired,\n\n\n /**\n * If CellMeasurer is used to measure this Grid's children, this should be a pointer to its CellMeasurerCache.\n * A shared CellMeasurerCache reference enables Grid and CellMeasurer to share measurement data.\n */\n deferredMeasurementCache: PropTypes.object,\n\n\n /**\n * Used to estimate the total width of a Grid before all of its columns have actually been measured.\n * The estimated total width is adjusted as columns are rendered.\n */\n estimatedColumnSize: PropTypes.number.isRequired,\n\n\n /**\n * Used to estimate the total height of a Grid before all of its rows have actually been measured.\n * The estimated total height is adjusted as rows are rendered.\n */\n estimatedRowSize: PropTypes.number.isRequired,\n\n\n /** Exposed for testing purposes only. */\n getScrollbarSize: PropTypes.func.isRequired,\n\n\n /** Height of Grid; this property determines the number of visible (vs virtualized) rows. */\n height: PropTypes.number.isRequired,\n\n\n /** Optional custom id to attach to root Grid element. */\n id: PropTypes.string,\n\n\n /**\n * Override internal is-scrolling state tracking.\n * This property is primarily intended for use with the WindowScroller component.\n */\n isScrolling: PropTypes.bool,\n\n\n /**\n * Opt-out of isScrolling param passed to cellRangeRenderer.\n * To avoid the extra render when scroll stops.\n */\n isScrollingOptOut: PropTypes.bool.isRequired,\n\n\n /** Optional renderer to be used in place of rows when either :rowCount or :columnCount is 0. */\n noContentRenderer: function noContentRenderer() {\n return (typeof bpfrpt_proptype_NoContentRenderer === 'function' ? bpfrpt_proptype_NoContentRenderer.isRequired ? bpfrpt_proptype_NoContentRenderer.isRequired : bpfrpt_proptype_NoContentRenderer : PropTypes.shape(bpfrpt_proptype_NoContentRenderer).isRequired).apply(this, arguments);\n },\n\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n */\n onScroll: PropTypes.func.isRequired,\n\n\n /**\n * Called whenever a horizontal or vertical scrollbar is added or removed.\n * This prop is not intended for end-user use;\n * It is used by MultiGrid to support fixed-row/fixed-column scroll syncing.\n */\n onScrollbarPresenceChange: PropTypes.func.isRequired,\n\n\n /** Callback invoked with information about the section of the Grid that was just rendered. */\n onSectionRendered: PropTypes.func.isRequired,\n\n\n /**\n * Number of columns to render before/after the visible section of the grid.\n * These columns can help for smoother scrolling on touch devices or browsers that send scroll events infrequently.\n */\n overscanColumnCount: PropTypes.number.isRequired,\n\n\n /**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n overscanIndicesGetter: function overscanIndicesGetter() {\n return (typeof bpfrpt_proptype_OverscanIndicesGetter === 'function' ? bpfrpt_proptype_OverscanIndicesGetter.isRequired ? bpfrpt_proptype_OverscanIndicesGetter.isRequired : bpfrpt_proptype_OverscanIndicesGetter : PropTypes.shape(bpfrpt_proptype_OverscanIndicesGetter).isRequired).apply(this, arguments);\n },\n\n\n /**\n * Number of rows to render above/below the visible section of the grid.\n * These rows can help for smoother scrolling on touch devices or browsers that send scroll events infrequently.\n */\n overscanRowCount: PropTypes.number.isRequired,\n\n\n /** ARIA role for the grid element. */\n role: PropTypes.string.isRequired,\n\n\n /**\n * Either a fixed row height (number) or a function that returns the height of a row given its index.\n * Should implement the following interface: ({ index: number }): number\n */\n rowHeight: function rowHeight() {\n return (typeof bpfrpt_proptype_CellSize === 'function' ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n },\n\n\n /** Number of rows in grid. */\n rowCount: PropTypes.number.isRequired,\n\n\n /** Wait this amount of time after the last scroll event before resetting Grid `pointer-events`. */\n scrollingResetTimeInterval: PropTypes.number.isRequired,\n\n\n /** Horizontal offset. */\n scrollLeft: PropTypes.number,\n\n\n /**\n * Controls scroll-to-cell behavior of the Grid.\n * The default (\"auto\") scrolls the least amount possible to ensure that the specified cell is fully visible.\n * Use \"start\" to align cells to the top/left of the Grid and \"end\" to align bottom/right.\n */\n scrollToAlignment: function scrollToAlignment() {\n return (typeof bpfrpt_proptype_Alignment === 'function' ? bpfrpt_proptype_Alignment.isRequired ? bpfrpt_proptype_Alignment.isRequired : bpfrpt_proptype_Alignment : PropTypes.shape(bpfrpt_proptype_Alignment).isRequired).apply(this, arguments);\n },\n\n\n /** Column index to ensure visible (by forcefully scrolling if necessary) */\n scrollToColumn: PropTypes.number.isRequired,\n\n\n /** Vertical offset. */\n scrollTop: PropTypes.number,\n\n\n /** Row index to ensure visible (by forcefully scrolling if necessary) */\n scrollToRow: PropTypes.number.isRequired,\n\n\n /** Optional inline style */\n style: PropTypes.object.isRequired,\n\n\n /** Tab index for focus */\n tabIndex: PropTypes.number,\n\n\n /** Width of Grid; this property determines the number of visible (vs virtualized) columns. */\n width: PropTypes.number.isRequired\n};\n\n\npolyfill(Grid);\nexport default Grid;\nimport { bpfrpt_proptype_CellRenderer } from './types';\nimport { bpfrpt_proptype_CellRangeRenderer } from './types';\nimport { bpfrpt_proptype_CellPosition } from './types';\nimport { bpfrpt_proptype_CellSize } from './types';\nimport { bpfrpt_proptype_CellSizeGetter } from './types';\nimport { bpfrpt_proptype_NoContentRenderer } from './types';\nimport { bpfrpt_proptype_Scroll } from './types';\nimport { bpfrpt_proptype_ScrollbarPresenceChange } from './types';\nimport { bpfrpt_proptype_RenderedSection } from './types';\nimport { bpfrpt_proptype_OverscanIndicesGetter } from './types';\nimport { bpfrpt_proptype_Alignment } from './types';\nimport { bpfrpt_proptype_CellCache } from './types';\nimport { bpfrpt_proptype_StyleCache } from './types';\nimport { bpfrpt_proptype_AnimationTimeoutId } from '../utils/requestAnimationTimeout';\nimport PropTypes from 'prop-types';","\n\nexport var SCROLL_DIRECTION_BACKWARD = -1;\n\nexport var SCROLL_DIRECTION_FORWARD = 1;\n\nexport var SCROLL_DIRECTION_HORIZONTAL = 'horizontal';\nexport var SCROLL_DIRECTION_VERTICAL = 'vertical';\n\n/**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n\nexport default function defaultOverscanIndicesGetter(_ref) {\n var cellCount = _ref.cellCount,\n overscanCellsCount = _ref.overscanCellsCount,\n scrollDirection = _ref.scrollDirection,\n startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n\n if (scrollDirection === SCROLL_DIRECTION_FORWARD) {\n return {\n overscanStartIndex: Math.max(0, startIndex),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex + overscanCellsCount)\n };\n } else {\n return {\n overscanStartIndex: Math.max(0, startIndex - overscanCellsCount),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex)\n };\n }\n}\nimport { bpfrpt_proptype_OverscanIndicesGetterParams } from './types';\nimport { bpfrpt_proptype_OverscanIndices } from './types';","\n\n/**\n * Default implementation of cellRangeRenderer used by Grid.\n * This renderer supports cell-caching while the user is scrolling.\n */\n\nexport default function defaultCellRangeRenderer(_ref) {\n var cellCache = _ref.cellCache,\n cellRenderer = _ref.cellRenderer,\n columnSizeAndPositionManager = _ref.columnSizeAndPositionManager,\n columnStartIndex = _ref.columnStartIndex,\n columnStopIndex = _ref.columnStopIndex,\n deferredMeasurementCache = _ref.deferredMeasurementCache,\n horizontalOffsetAdjustment = _ref.horizontalOffsetAdjustment,\n isScrolling = _ref.isScrolling,\n isScrollingOptOut = _ref.isScrollingOptOut,\n parent = _ref.parent,\n rowSizeAndPositionManager = _ref.rowSizeAndPositionManager,\n rowStartIndex = _ref.rowStartIndex,\n rowStopIndex = _ref.rowStopIndex,\n styleCache = _ref.styleCache,\n verticalOffsetAdjustment = _ref.verticalOffsetAdjustment,\n visibleColumnIndices = _ref.visibleColumnIndices,\n visibleRowIndices = _ref.visibleRowIndices;\n\n var renderedCells = [];\n\n // Browsers have native size limits for elements (eg Chrome 33M pixels, IE 1.5M pixes).\n // User cannot scroll beyond these size limitations.\n // In order to work around this, ScalingCellSizeAndPositionManager compresses offsets.\n // We should never cache styles for compressed offsets though as this can lead to bugs.\n // See issue #576 for more.\n var areOffsetsAdjusted = columnSizeAndPositionManager.areOffsetsAdjusted() || rowSizeAndPositionManager.areOffsetsAdjusted();\n\n var canCacheStyle = !isScrolling && !areOffsetsAdjusted;\n\n for (var rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {\n var rowDatum = rowSizeAndPositionManager.getSizeAndPositionOfCell(rowIndex);\n\n for (var columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {\n var columnDatum = columnSizeAndPositionManager.getSizeAndPositionOfCell(columnIndex);\n var isVisible = columnIndex >= visibleColumnIndices.start && columnIndex <= visibleColumnIndices.stop && rowIndex >= visibleRowIndices.start && rowIndex <= visibleRowIndices.stop;\n var key = rowIndex + '-' + columnIndex;\n var style = void 0;\n\n // Cache style objects so shallow-compare doesn't re-render unnecessarily.\n if (canCacheStyle && styleCache[key]) {\n style = styleCache[key];\n } else {\n // In deferred mode, cells will be initially rendered before we know their size.\n // Don't interfere with CellMeasurer's measurements by setting an invalid size.\n if (deferredMeasurementCache && !deferredMeasurementCache.has(rowIndex, columnIndex)) {\n // Position not-yet-measured cells at top/left 0,0,\n // And give them width/height of 'auto' so they can grow larger than the parent Grid if necessary.\n // Positioning them further to the right/bottom influences their measured size.\n style = {\n height: 'auto',\n left: 0,\n position: 'absolute',\n top: 0,\n width: 'auto'\n };\n } else {\n style = {\n height: rowDatum.size,\n left: columnDatum.offset + horizontalOffsetAdjustment,\n position: 'absolute',\n top: rowDatum.offset + verticalOffsetAdjustment,\n width: columnDatum.size\n };\n\n styleCache[key] = style;\n }\n }\n\n var cellRendererParams = {\n columnIndex: columnIndex,\n isScrolling: isScrolling,\n isVisible: isVisible,\n key: key,\n parent: parent,\n rowIndex: rowIndex,\n style: style\n };\n\n var renderedCell = void 0;\n\n // Avoid re-creating cells while scrolling.\n // This can lead to the same cell being created many times and can cause performance issues for \"heavy\" cells.\n // If a scroll is in progress- cache and reuse cells.\n // This cache will be thrown away once scrolling completes.\n // However if we are scaling scroll positions and sizes, we should also avoid caching.\n // This is because the offset changes slightly as scroll position changes and caching leads to stale values.\n // For more info refer to issue #395\n //\n // If isScrollingOptOut is specified, we always cache cells.\n // For more info refer to issue #1028\n if ((isScrollingOptOut || isScrolling) && !horizontalOffsetAdjustment && !verticalOffsetAdjustment) {\n if (!cellCache[key]) {\n cellCache[key] = cellRenderer(cellRendererParams);\n }\n\n renderedCell = cellCache[key];\n\n // If the user is no longer scrolling, don't cache cells.\n // This makes dynamic cell content difficult for users and would also lead to a heavier memory footprint.\n } else {\n renderedCell = cellRenderer(cellRendererParams);\n }\n\n if (renderedCell == null || renderedCell === false) {\n continue;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n warnAboutMissingStyle(parent, renderedCell);\n }\n\n renderedCells.push(renderedCell);\n }\n }\n\n return renderedCells;\n}\n\nfunction warnAboutMissingStyle(parent, renderedCell) {\n if (process.env.NODE_ENV !== 'production') {\n if (renderedCell) {\n // If the direct child is a CellMeasurer, then we should check its child\n // See issue #611\n if (renderedCell.type && renderedCell.type.__internalCellMeasurerFlag) {\n renderedCell = renderedCell.props.children;\n }\n\n if (renderedCell && renderedCell.props && renderedCell.props.style === undefined && parent.__warnedAboutMissingStyle !== true) {\n parent.__warnedAboutMissingStyle = true;\n\n console.warn('Rendered cell should include style property for positioning.');\n }\n }\n }\n}\nimport { bpfrpt_proptype_CellRangeRendererParams } from './types';","\n\nexport var SCROLL_DIRECTION_BACKWARD = -1;\n\nexport var SCROLL_DIRECTION_FORWARD = 1;\n\nexport var SCROLL_DIRECTION_HORIZONTAL = 'horizontal';\nexport var SCROLL_DIRECTION_VERTICAL = 'vertical';\n\n/**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n\nexport default function defaultOverscanIndicesGetter(_ref) {\n var cellCount = _ref.cellCount,\n overscanCellsCount = _ref.overscanCellsCount,\n scrollDirection = _ref.scrollDirection,\n startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n\n // Make sure we render at least 1 cell extra before and after (except near boundaries)\n // This is necessary in order to support keyboard navigation (TAB/SHIFT+TAB) in some cases\n // For more info see issues #625\n overscanCellsCount = Math.max(1, overscanCellsCount);\n\n if (scrollDirection === SCROLL_DIRECTION_FORWARD) {\n return {\n overscanStartIndex: Math.max(0, startIndex - 1),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex + overscanCellsCount)\n };\n } else {\n return {\n overscanStartIndex: Math.max(0, startIndex - overscanCellsCount),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex + 1)\n };\n }\n}\nimport { bpfrpt_proptype_OverscanIndicesGetterParams } from './types';\nimport { bpfrpt_proptype_OverscanIndices } from './types';","var bpfrpt_proptype_ScrollIndices = process.env.NODE_ENV === 'production' ? null : {\n scrollToColumn: PropTypes.number.isRequired,\n scrollToRow: PropTypes.number.isRequired\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_ScrollIndices };","import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\n\n/**\n * This HOC decorates a virtualized component and responds to arrow-key events by scrolling one row or column at a time.\n */\n\nvar ArrowKeyStepper = function (_React$PureComponent) {\n _inherits(ArrowKeyStepper, _React$PureComponent);\n\n function ArrowKeyStepper() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, ArrowKeyStepper);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = ArrowKeyStepper.__proto__ || _Object$getPrototypeOf(ArrowKeyStepper)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n scrollToColumn: 0,\n scrollToRow: 0\n }, _this._columnStartIndex = 0, _this._columnStopIndex = 0, _this._rowStartIndex = 0, _this._rowStopIndex = 0, _this._onKeyDown = function (event) {\n var _this$props = _this.props,\n columnCount = _this$props.columnCount,\n disabled = _this$props.disabled,\n mode = _this$props.mode,\n rowCount = _this$props.rowCount;\n\n\n if (disabled) {\n return;\n }\n\n var _this$_getScrollState = _this._getScrollState(),\n scrollToColumnPrevious = _this$_getScrollState.scrollToColumn,\n scrollToRowPrevious = _this$_getScrollState.scrollToRow;\n\n var _this$_getScrollState2 = _this._getScrollState(),\n scrollToColumn = _this$_getScrollState2.scrollToColumn,\n scrollToRow = _this$_getScrollState2.scrollToRow;\n\n // The above cases all prevent default event event behavior.\n // This is to keep the grid from scrolling after the snap-to update.\n\n\n switch (event.key) {\n case 'ArrowDown':\n scrollToRow = mode === 'cells' ? Math.min(scrollToRow + 1, rowCount - 1) : Math.min(_this._rowStopIndex + 1, rowCount - 1);\n break;\n case 'ArrowLeft':\n scrollToColumn = mode === 'cells' ? Math.max(scrollToColumn - 1, 0) : Math.max(_this._columnStartIndex - 1, 0);\n break;\n case 'ArrowRight':\n scrollToColumn = mode === 'cells' ? Math.min(scrollToColumn + 1, columnCount - 1) : Math.min(_this._columnStopIndex + 1, columnCount - 1);\n break;\n case 'ArrowUp':\n scrollToRow = mode === 'cells' ? Math.max(scrollToRow - 1, 0) : Math.max(_this._rowStartIndex - 1, 0);\n break;\n }\n\n if (scrollToColumn !== scrollToColumnPrevious || scrollToRow !== scrollToRowPrevious) {\n event.preventDefault();\n\n _this._updateScrollState({ scrollToColumn: scrollToColumn, scrollToRow: scrollToRow });\n }\n }, _this._onSectionRendered = function (_ref2) {\n var columnStartIndex = _ref2.columnStartIndex,\n columnStopIndex = _ref2.columnStopIndex,\n rowStartIndex = _ref2.rowStartIndex,\n rowStopIndex = _ref2.rowStopIndex;\n\n _this._columnStartIndex = columnStartIndex;\n _this._columnStopIndex = columnStopIndex;\n _this._rowStartIndex = rowStartIndex;\n _this._rowStopIndex = rowStopIndex;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(ArrowKeyStepper, [{\n key: 'setScrollIndexes',\n value: function setScrollIndexes(_ref3) {\n var scrollToColumn = _ref3.scrollToColumn,\n scrollToRow = _ref3.scrollToRow;\n\n this.setState({\n scrollToRow: scrollToRow,\n scrollToColumn: scrollToColumn\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n children = _props.children;\n\n var _getScrollState2 = this._getScrollState(),\n scrollToColumn = _getScrollState2.scrollToColumn,\n scrollToRow = _getScrollState2.scrollToRow;\n\n return React.createElement(\n 'div',\n { className: className, onKeyDown: this._onKeyDown },\n children({\n onSectionRendered: this._onSectionRendered,\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n })\n );\n }\n }, {\n key: '_getScrollState',\n value: function _getScrollState() {\n return this.props.isControlled ? this.props : this.state;\n }\n }, {\n key: '_updateScrollState',\n value: function _updateScrollState(_ref4) {\n var scrollToColumn = _ref4.scrollToColumn,\n scrollToRow = _ref4.scrollToRow;\n var _props2 = this.props,\n isControlled = _props2.isControlled,\n onScrollToChange = _props2.onScrollToChange;\n\n\n if (typeof onScrollToChange === 'function') {\n onScrollToChange({ scrollToColumn: scrollToColumn, scrollToRow: scrollToRow });\n }\n\n if (!isControlled) {\n this.setState({ scrollToColumn: scrollToColumn, scrollToRow: scrollToRow });\n }\n }\n }], [{\n key: 'getDerivedStateFromProps',\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.isControlled) {\n return null;\n }\n\n if (nextProps.scrollToColumn !== prevState.scrollToColumn || nextProps.scrollToRow !== prevState.scrollToRow) {\n return {\n scrollToColumn: nextProps.scrollToColumn,\n scrollToRow: nextProps.scrollToRow\n };\n }\n\n return null;\n }\n }]);\n\n return ArrowKeyStepper;\n}(React.PureComponent);\n\nArrowKeyStepper.defaultProps = {\n disabled: false,\n isControlled: false,\n mode: 'edges',\n scrollToColumn: 0,\n scrollToRow: 0\n};\nArrowKeyStepper.propTypes = process.env.NODE_ENV === 'production' ? null : {\n children: PropTypes.func.isRequired,\n className: PropTypes.string,\n columnCount: PropTypes.number.isRequired,\n disabled: PropTypes.bool.isRequired,\n isControlled: PropTypes.bool.isRequired,\n mode: PropTypes.oneOf(['cells', 'edges']).isRequired,\n onScrollToChange: PropTypes.func,\n rowCount: PropTypes.number.isRequired,\n scrollToColumn: PropTypes.number.isRequired,\n scrollToRow: PropTypes.number.isRequired\n};\n\n\npolyfill(ArrowKeyStepper);\n\nexport default ArrowKeyStepper;\nimport { bpfrpt_proptype_RenderedSection } from '../Grid';\nimport { bpfrpt_proptype_ScrollIndices } from './types';\nimport PropTypes from 'prop-types';","/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n **/\n\nexport default function createDetectElementResize(nonce) {\n // Check `document` and `window` in case of server-side rendering\n var _window;\n if (typeof window !== 'undefined') {\n _window = window;\n } else if (typeof self !== 'undefined') {\n _window = self;\n } else {\n _window = global;\n }\n\n var attachEvent = typeof document !== 'undefined' && document.attachEvent;\n\n if (!attachEvent) {\n var requestFrame = function () {\n var raf = _window.requestAnimationFrame || _window.mozRequestAnimationFrame || _window.webkitRequestAnimationFrame || function (fn) {\n return _window.setTimeout(fn, 20);\n };\n return function (fn) {\n return raf(fn);\n };\n }();\n\n var cancelFrame = function () {\n var cancel = _window.cancelAnimationFrame || _window.mozCancelAnimationFrame || _window.webkitCancelAnimationFrame || _window.clearTimeout;\n return function (id) {\n return cancel(id);\n };\n }();\n\n var resetTriggers = function resetTriggers(element) {\n var triggers = element.__resizeTriggers__,\n expand = triggers.firstElementChild,\n contract = triggers.lastElementChild,\n expandChild = expand.firstElementChild;\n contract.scrollLeft = contract.scrollWidth;\n contract.scrollTop = contract.scrollHeight;\n expandChild.style.width = expand.offsetWidth + 1 + 'px';\n expandChild.style.height = expand.offsetHeight + 1 + 'px';\n expand.scrollLeft = expand.scrollWidth;\n expand.scrollTop = expand.scrollHeight;\n };\n\n var checkTriggers = function checkTriggers(element) {\n return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;\n };\n\n var scrollListener = function scrollListener(e) {\n // Don't measure (which forces) reflow for scrolls that happen inside of children!\n if (e.target.className && typeof e.target.className.indexOf === 'function' && e.target.className.indexOf('contract-trigger') < 0 && e.target.className.indexOf('expand-trigger') < 0) {\n return;\n }\n\n var element = this;\n resetTriggers(this);\n if (this.__resizeRAF__) {\n cancelFrame(this.__resizeRAF__);\n }\n this.__resizeRAF__ = requestFrame(function () {\n if (checkTriggers(element)) {\n element.__resizeLast__.width = element.offsetWidth;\n element.__resizeLast__.height = element.offsetHeight;\n element.__resizeListeners__.forEach(function (fn) {\n fn.call(element, e);\n });\n }\n });\n };\n\n /* Detect CSS Animations support to detect element display/re-attach */\n var animation = false,\n keyframeprefix = '',\n animationstartevent = 'animationstart',\n domPrefixes = 'Webkit Moz O ms'.split(' '),\n startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),\n pfx = '';\n {\n var elm = document.createElement('fakeelement');\n if (elm.style.animationName !== undefined) {\n animation = true;\n }\n\n if (animation === false) {\n for (var i = 0; i < domPrefixes.length; i++) {\n if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {\n pfx = domPrefixes[i];\n keyframeprefix = '-' + pfx.toLowerCase() + '-';\n animationstartevent = startEvents[i];\n animation = true;\n break;\n }\n }\n }\n }\n\n var animationName = 'resizeanim';\n var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';\n var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';\n }\n\n var createStyles = function createStyles(doc) {\n if (!doc.getElementById('detectElementResize')) {\n //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n var css = (animationKeyframes ? animationKeyframes : '') + '.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n head = doc.head || doc.getElementsByTagName('head')[0],\n style = doc.createElement('style');\n\n style.id = 'detectElementResize';\n style.type = 'text/css';\n\n if (nonce != null) {\n style.setAttribute('nonce', nonce);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(doc.createTextNode(css));\n }\n\n head.appendChild(style);\n }\n };\n\n var addResizeListener = function addResizeListener(element, fn) {\n if (attachEvent) {\n element.attachEvent('onresize', fn);\n } else {\n if (!element.__resizeTriggers__) {\n var doc = element.ownerDocument;\n var elementStyle = _window.getComputedStyle(element);\n if (elementStyle && elementStyle.position == 'static') {\n element.style.position = 'relative';\n }\n createStyles(doc);\n element.__resizeLast__ = {};\n element.__resizeListeners__ = [];\n (element.__resizeTriggers__ = doc.createElement('div')).className = 'resize-triggers';\n element.__resizeTriggers__.innerHTML = '
' + '
';\n element.appendChild(element.__resizeTriggers__);\n resetTriggers(element);\n element.addEventListener('scroll', scrollListener, true);\n\n /* Listen for a css animation to detect element display/re-attach */\n if (animationstartevent) {\n element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n if (e.animationName == animationName) {\n resetTriggers(element);\n }\n };\n element.__resizeTriggers__.addEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n }\n }\n element.__resizeListeners__.push(fn);\n }\n };\n\n var removeResizeListener = function removeResizeListener(element, fn) {\n if (attachEvent) {\n element.detachEvent('onresize', fn);\n } else {\n element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n if (!element.__resizeListeners__.length) {\n element.removeEventListener('scroll', scrollListener, true);\n if (element.__resizeTriggers__.__animationListener__) {\n element.__resizeTriggers__.removeEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n element.__resizeTriggers__.__animationListener__ = null;\n }\n try {\n element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n } catch (e) {\n // Preact compat; see developit/preact-compat/issues/228\n }\n }\n }\n };\n\n return {\n addResizeListener: addResizeListener,\n removeResizeListener: removeResizeListener\n };\n}","import _extends from 'babel-runtime/helpers/extends';\nimport _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport * as React from 'react';\nimport createDetectElementResize from '../vendor/detectElementResize';\n\nvar AutoSizer = function (_React$PureComponent) {\n _inherits(AutoSizer, _React$PureComponent);\n\n function AutoSizer() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, AutoSizer);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = AutoSizer.__proto__ || _Object$getPrototypeOf(AutoSizer)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n height: _this.props.defaultHeight || 0,\n width: _this.props.defaultWidth || 0\n }, _this._onResize = function () {\n var _this$props = _this.props,\n disableHeight = _this$props.disableHeight,\n disableWidth = _this$props.disableWidth,\n onResize = _this$props.onResize;\n\n\n if (_this._parentNode) {\n // Guard against AutoSizer component being removed from the DOM immediately after being added.\n // This can result in invalid style values which can result in NaN values if we don't handle them.\n // See issue #150 for more context.\n\n var _height = _this._parentNode.offsetHeight || 0;\n var _width = _this._parentNode.offsetWidth || 0;\n\n var _style = window.getComputedStyle(_this._parentNode) || {};\n var paddingLeft = parseInt(_style.paddingLeft, 10) || 0;\n var paddingRight = parseInt(_style.paddingRight, 10) || 0;\n var paddingTop = parseInt(_style.paddingTop, 10) || 0;\n var paddingBottom = parseInt(_style.paddingBottom, 10) || 0;\n\n var newHeight = _height - paddingTop - paddingBottom;\n var newWidth = _width - paddingLeft - paddingRight;\n\n if (!disableHeight && _this.state.height !== newHeight || !disableWidth && _this.state.width !== newWidth) {\n _this.setState({\n height: _height - paddingTop - paddingBottom,\n width: _width - paddingLeft - paddingRight\n });\n\n onResize({ height: _height, width: _width });\n }\n }\n }, _this._setRef = function (autoSizer) {\n _this._autoSizer = autoSizer;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(AutoSizer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var nonce = this.props.nonce;\n\n if (this._autoSizer && this._autoSizer.parentNode && this._autoSizer.parentNode.ownerDocument && this._autoSizer.parentNode.ownerDocument.defaultView && this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement) {\n // Delay access of parentNode until mount.\n // This handles edge-cases where the component has already been unmounted before its ref has been set,\n // As well as libraries like react-lite which have a slightly different lifecycle.\n this._parentNode = this._autoSizer.parentNode;\n\n // Defer requiring resize handler in order to support server-side rendering.\n // See issue #41\n this._detectElementResize = createDetectElementResize(nonce);\n this._detectElementResize.addResizeListener(this._parentNode, this._onResize);\n\n this._onResize();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this._detectElementResize && this._parentNode) {\n this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n className = _props.className,\n disableHeight = _props.disableHeight,\n disableWidth = _props.disableWidth,\n style = _props.style;\n var _state = this.state,\n height = _state.height,\n width = _state.width;\n\n // Outer div should not force width/height since that may prevent containers from shrinking.\n // Inner component should overflow and use calculated width/height.\n // See issue #68 for more information.\n\n var outerStyle = { overflow: 'visible' };\n var childParams = {};\n\n if (!disableHeight) {\n outerStyle.height = 0;\n childParams.height = height;\n }\n\n if (!disableWidth) {\n outerStyle.width = 0;\n childParams.width = width;\n }\n\n /**\n * TODO: Avoid rendering children before the initial measurements have been collected.\n * At best this would just be wasting cycles.\n * Add this check into version 10 though as it could break too many ref callbacks in version 9.\n * Note that if default width/height props were provided this would still work with SSR.\n if (\n height !== 0 &&\n width !== 0\n ) {\n child = children({ height, width })\n }\n */\n\n return React.createElement(\n 'div',\n {\n className: className,\n ref: this._setRef,\n style: _extends({}, outerStyle, style) },\n children(childParams)\n );\n }\n }]);\n\n return AutoSizer;\n}(React.PureComponent);\n\nAutoSizer.defaultProps = {\n onResize: function onResize() {},\n disableHeight: false,\n disableWidth: false,\n style: {}\n};\nAutoSizer.propTypes = process.env.NODE_ENV === 'production' ? null : {\n /** Function responsible for rendering children.*/\n children: PropTypes.func.isRequired,\n\n\n /** Optional custom CSS class name to attach to root AutoSizer element. */\n className: PropTypes.string,\n\n\n /** Default height to use for initial render; useful for SSR */\n defaultHeight: PropTypes.number,\n\n\n /** Default width to use for initial render; useful for SSR */\n defaultWidth: PropTypes.number,\n\n\n /** Disable dynamic :height property */\n disableHeight: PropTypes.bool.isRequired,\n\n\n /** Disable dynamic :width property */\n disableWidth: PropTypes.bool.isRequired,\n\n\n /** Nonce of the inlined stylesheet for Content Security Policy */\n nonce: PropTypes.string,\n\n\n /** Callback to be invoked on-resize */\n onResize: PropTypes.func.isRequired,\n\n\n /** Optional inline style */\n style: PropTypes.object\n};\nexport default AutoSizer;\nimport PropTypes from 'prop-types';","import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport * as React from 'react';\nimport { findDOMNode } from 'react-dom';\n\n/**\n * Wraps a cell and measures its rendered content.\n * Measurements are stored in a per-cell cache.\n * Cached-content is not be re-measured.\n */\nvar CellMeasurer = function (_React$PureComponent) {\n _inherits(CellMeasurer, _React$PureComponent);\n\n function CellMeasurer() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, CellMeasurer);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = CellMeasurer.__proto__ || _Object$getPrototypeOf(CellMeasurer)).call.apply(_ref, [this].concat(args))), _this), _this._measure = function () {\n var _this$props = _this.props,\n cache = _this$props.cache,\n _this$props$columnInd = _this$props.columnIndex,\n columnIndex = _this$props$columnInd === undefined ? 0 : _this$props$columnInd,\n parent = _this$props.parent,\n _this$props$rowIndex = _this$props.rowIndex,\n rowIndex = _this$props$rowIndex === undefined ? _this.props.index || 0 : _this$props$rowIndex;\n\n var _this$_getCellMeasure = _this._getCellMeasurements(),\n height = _this$_getCellMeasure.height,\n width = _this$_getCellMeasure.width;\n\n if (height !== cache.getHeight(rowIndex, columnIndex) || width !== cache.getWidth(rowIndex, columnIndex)) {\n cache.set(rowIndex, columnIndex, width, height);\n\n if (parent && typeof parent.recomputeGridSize === 'function') {\n parent.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n }\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(CellMeasurer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this._maybeMeasureCell();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this._maybeMeasureCell();\n }\n }, {\n key: 'render',\n value: function render() {\n var children = this.props.children;\n\n\n return typeof children === 'function' ? children({ measure: this._measure }) : children;\n }\n }, {\n key: '_getCellMeasurements',\n value: function _getCellMeasurements() {\n var cache = this.props.cache;\n\n\n var node = findDOMNode(this);\n\n // TODO Check for a bad combination of fixedWidth and missing numeric width or vice versa with height\n\n if (node && node.ownerDocument && node.ownerDocument.defaultView && node instanceof node.ownerDocument.defaultView.HTMLElement) {\n var styleWidth = node.style.width;\n var styleHeight = node.style.height;\n\n // If we are re-measuring a cell that has already been measured,\n // It will have a hard-coded width/height from the previous measurement.\n // The fact that we are measuring indicates this measurement is probably stale,\n // So explicitly clear it out (eg set to \"auto\") so we can recalculate.\n // See issue #593 for more info.\n // Even if we are measuring initially- if we're inside of a MultiGrid component,\n // Explicitly clear width/height before measuring to avoid being tainted by another Grid.\n // eg top/left Grid renders before bottom/right Grid\n // Since the CellMeasurerCache is shared between them this taints derived cell size values.\n if (!cache.hasFixedWidth()) {\n node.style.width = 'auto';\n }\n if (!cache.hasFixedHeight()) {\n node.style.height = 'auto';\n }\n\n var height = Math.ceil(node.offsetHeight);\n var width = Math.ceil(node.offsetWidth);\n\n // Reset after measuring to avoid breaking styles; see #660\n if (styleWidth) {\n node.style.width = styleWidth;\n }\n if (styleHeight) {\n node.style.height = styleHeight;\n }\n\n return { height: height, width: width };\n } else {\n return { height: 0, width: 0 };\n }\n }\n }, {\n key: '_maybeMeasureCell',\n value: function _maybeMeasureCell() {\n var _props = this.props,\n cache = _props.cache,\n _props$columnIndex = _props.columnIndex,\n columnIndex = _props$columnIndex === undefined ? 0 : _props$columnIndex,\n parent = _props.parent,\n _props$rowIndex = _props.rowIndex,\n rowIndex = _props$rowIndex === undefined ? this.props.index || 0 : _props$rowIndex;\n\n\n if (!cache.has(rowIndex, columnIndex)) {\n var _getCellMeasurements2 = this._getCellMeasurements(),\n height = _getCellMeasurements2.height,\n width = _getCellMeasurements2.width;\n\n cache.set(rowIndex, columnIndex, width, height);\n\n // If size has changed, let Grid know to re-render.\n if (parent && typeof parent.invalidateCellSizeAfterRender === 'function') {\n parent.invalidateCellSizeAfterRender({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n }\n }\n }\n }]);\n\n return CellMeasurer;\n}(React.PureComponent);\n\n// Used for DEV mode warning check\n\n\nCellMeasurer.__internalCellMeasurerFlag = false;\nCellMeasurer.propTypes = process.env.NODE_ENV === 'production' ? null : {\n cache: function cache() {\n return (typeof bpfrpt_proptype_CellMeasureCache === 'function' ? bpfrpt_proptype_CellMeasureCache.isRequired ? bpfrpt_proptype_CellMeasureCache.isRequired : bpfrpt_proptype_CellMeasureCache : PropTypes.shape(bpfrpt_proptype_CellMeasureCache).isRequired).apply(this, arguments);\n },\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]).isRequired,\n columnIndex: PropTypes.number,\n index: PropTypes.number,\n parent: PropTypes.shape({\n invalidateCellSizeAfterRender: PropTypes.func,\n recomputeGridSize: PropTypes.func\n }).isRequired,\n rowIndex: PropTypes.number\n};\nexport default CellMeasurer;\nif (process.env.NODE_ENV !== 'production') {\n CellMeasurer.__internalCellMeasurerFlag = true;\n}\nimport { bpfrpt_proptype_CellMeasureCache } from './types';\nimport PropTypes from 'prop-types';","import _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\n\n\nexport var DEFAULT_HEIGHT = 30;\n\nexport var DEFAULT_WIDTH = 100;\n\n// Enables more intelligent mapping of a given column and row index to an item ID.\n// This prevents a cell cache from being invalidated when its parent collection is modified.\n\n/**\n * Caches measurements for a given cell.\n */\nvar CellMeasurerCache = function () {\n function CellMeasurerCache() {\n var _this = this;\n\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, CellMeasurerCache);\n\n this._cellHeightCache = {};\n this._cellWidthCache = {};\n this._columnWidthCache = {};\n this._rowHeightCache = {};\n this._columnCount = 0;\n this._rowCount = 0;\n\n this.columnWidth = function (_ref) {\n var index = _ref.index;\n\n var key = _this._keyMapper(0, index);\n\n return _this._columnWidthCache.hasOwnProperty(key) ? _this._columnWidthCache[key] : _this._defaultWidth;\n };\n\n this.rowHeight = function (_ref2) {\n var index = _ref2.index;\n\n var key = _this._keyMapper(index, 0);\n\n return _this._rowHeightCache.hasOwnProperty(key) ? _this._rowHeightCache[key] : _this._defaultHeight;\n };\n\n var defaultHeight = params.defaultHeight,\n defaultWidth = params.defaultWidth,\n fixedHeight = params.fixedHeight,\n fixedWidth = params.fixedWidth,\n keyMapper = params.keyMapper,\n minHeight = params.minHeight,\n minWidth = params.minWidth;\n\n\n this._hasFixedHeight = fixedHeight === true;\n this._hasFixedWidth = fixedWidth === true;\n this._minHeight = minHeight || 0;\n this._minWidth = minWidth || 0;\n this._keyMapper = keyMapper || defaultKeyMapper;\n\n this._defaultHeight = Math.max(this._minHeight, typeof defaultHeight === 'number' ? defaultHeight : DEFAULT_HEIGHT);\n this._defaultWidth = Math.max(this._minWidth, typeof defaultWidth === 'number' ? defaultWidth : DEFAULT_WIDTH);\n\n if (process.env.NODE_ENV !== 'production') {\n if (this._hasFixedHeight === false && this._hasFixedWidth === false) {\n console.warn(\"CellMeasurerCache should only measure a cell's width or height. \" + 'You have configured CellMeasurerCache to measure both. ' + 'This will result in poor performance.');\n }\n\n if (this._hasFixedHeight === false && this._defaultHeight === 0) {\n console.warn('Fixed height CellMeasurerCache should specify a :defaultHeight greater than 0. ' + 'Failing to do so will lead to unnecessary layout and poor performance.');\n }\n\n if (this._hasFixedWidth === false && this._defaultWidth === 0) {\n console.warn('Fixed width CellMeasurerCache should specify a :defaultWidth greater than 0. ' + 'Failing to do so will lead to unnecessary layout and poor performance.');\n }\n }\n }\n\n _createClass(CellMeasurerCache, [{\n key: 'clear',\n value: function clear(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var key = this._keyMapper(rowIndex, columnIndex);\n\n delete this._cellHeightCache[key];\n delete this._cellWidthCache[key];\n\n this._updateCachedColumnAndRowSizes(rowIndex, columnIndex);\n }\n }, {\n key: 'clearAll',\n value: function clearAll() {\n this._cellHeightCache = {};\n this._cellWidthCache = {};\n this._columnWidthCache = {};\n this._rowHeightCache = {};\n this._rowCount = 0;\n this._columnCount = 0;\n }\n }, {\n key: 'hasFixedHeight',\n value: function hasFixedHeight() {\n return this._hasFixedHeight;\n }\n }, {\n key: 'hasFixedWidth',\n value: function hasFixedWidth() {\n return this._hasFixedWidth;\n }\n }, {\n key: 'getHeight',\n value: function getHeight(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (this._hasFixedHeight) {\n return this._defaultHeight;\n } else {\n var _key = this._keyMapper(rowIndex, columnIndex);\n\n return this._cellHeightCache.hasOwnProperty(_key) ? Math.max(this._minHeight, this._cellHeightCache[_key]) : this._defaultHeight;\n }\n }\n }, {\n key: 'getWidth',\n value: function getWidth(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (this._hasFixedWidth) {\n return this._defaultWidth;\n } else {\n var _key2 = this._keyMapper(rowIndex, columnIndex);\n\n return this._cellWidthCache.hasOwnProperty(_key2) ? Math.max(this._minWidth, this._cellWidthCache[_key2]) : this._defaultWidth;\n }\n }\n }, {\n key: 'has',\n value: function has(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var key = this._keyMapper(rowIndex, columnIndex);\n\n return this._cellHeightCache.hasOwnProperty(key);\n }\n }, {\n key: 'set',\n value: function set(rowIndex, columnIndex, width, height) {\n var key = this._keyMapper(rowIndex, columnIndex);\n\n if (columnIndex >= this._columnCount) {\n this._columnCount = columnIndex + 1;\n }\n if (rowIndex >= this._rowCount) {\n this._rowCount = rowIndex + 1;\n }\n\n // Size is cached per cell so we don't have to re-measure if cells are re-ordered.\n this._cellHeightCache[key] = height;\n this._cellWidthCache[key] = width;\n\n this._updateCachedColumnAndRowSizes(rowIndex, columnIndex);\n }\n }, {\n key: '_updateCachedColumnAndRowSizes',\n value: function _updateCachedColumnAndRowSizes(rowIndex, columnIndex) {\n // :columnWidth and :rowHeight are derived based on all cells in a column/row.\n // Pre-cache these derived values for faster lookup later.\n // Reads are expected to occur more frequently than writes in this case.\n // Only update non-fixed dimensions though to avoid doing unnecessary work.\n if (!this._hasFixedWidth) {\n var columnWidth = 0;\n for (var i = 0; i < this._rowCount; i++) {\n columnWidth = Math.max(columnWidth, this.getWidth(i, columnIndex));\n }\n var columnKey = this._keyMapper(0, columnIndex);\n this._columnWidthCache[columnKey] = columnWidth;\n }\n if (!this._hasFixedHeight) {\n var rowHeight = 0;\n for (var _i = 0; _i < this._columnCount; _i++) {\n rowHeight = Math.max(rowHeight, this.getHeight(rowIndex, _i));\n }\n var rowKey = this._keyMapper(rowIndex, 0);\n this._rowHeightCache[rowKey] = rowHeight;\n }\n }\n }, {\n key: 'defaultHeight',\n get: function get() {\n return this._defaultHeight;\n }\n }, {\n key: 'defaultWidth',\n get: function get() {\n return this._defaultWidth;\n }\n }]);\n\n return CellMeasurerCache;\n}();\n\nexport default CellMeasurerCache;\n\n\nfunction defaultKeyMapper(rowIndex, columnIndex) {\n return rowIndex + '-' + columnIndex;\n}\nimport { bpfrpt_proptype_CellMeasureCache } from './types';","import CellMeasurer from './CellMeasurer';\nimport CellMeasurerCache from './CellMeasurerCache';\n\nexport default CellMeasurer;\nexport { CellMeasurer, CellMeasurerCache };","import _extends from 'babel-runtime/helpers/extends';\nimport _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\nimport getScrollbarSize from 'dom-helpers/util/scrollbarSize';\n\n// @TODO Merge Collection and CollectionView\n\n/**\n * Specifies the number of milliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\nvar IS_SCROLLING_TIMEOUT = 150;\n\n/**\n * Controls whether the Grid updates the DOM element's scrollLeft/scrollTop based on the current state or just observes it.\n * This prevents Grid from interrupting mouse-wheel animations (see issue #2).\n */\nvar SCROLL_POSITION_CHANGE_REASONS = {\n OBSERVED: 'observed',\n REQUESTED: 'requested'\n};\n\n/**\n * Monitors changes in properties (eg. cellCount) and state (eg. scroll offsets) to determine when rendering needs to occur.\n * This component does not render any visible content itself; it defers to the specified :cellLayoutManager.\n */\n\nvar CollectionView = function (_React$PureComponent) {\n _inherits(CollectionView, _React$PureComponent);\n\n // Invokes callbacks only when their values have changed.\n function CollectionView() {\n var _ref;\n\n _classCallCheck(this, CollectionView);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n // If this component is being rendered server-side, getScrollbarSize() will return undefined.\n // We handle this case in componentDidMount()\n var _this = _possibleConstructorReturn(this, (_ref = CollectionView.__proto__ || _Object$getPrototypeOf(CollectionView)).call.apply(_ref, [this].concat(args)));\n\n _this.state = {\n isScrolling: false,\n scrollLeft: 0,\n scrollTop: 0\n };\n _this._calculateSizeAndPositionDataOnNextUpdate = false;\n _this._onSectionRenderedMemoizer = createCallbackMemoizer();\n _this._onScrollMemoizer = createCallbackMemoizer(false);\n\n _this._invokeOnSectionRenderedHelper = function () {\n var _this$props = _this.props,\n cellLayoutManager = _this$props.cellLayoutManager,\n onSectionRendered = _this$props.onSectionRendered;\n\n\n _this._onSectionRenderedMemoizer({\n callback: onSectionRendered,\n indices: {\n indices: cellLayoutManager.getLastRenderedIndices()\n }\n });\n };\n\n _this._setScrollingContainerRef = function (ref) {\n _this._scrollingContainer = ref;\n };\n\n _this._updateScrollPositionForScrollToCell = function () {\n var _this$props2 = _this.props,\n cellLayoutManager = _this$props2.cellLayoutManager,\n height = _this$props2.height,\n scrollToAlignment = _this$props2.scrollToAlignment,\n scrollToCell = _this$props2.scrollToCell,\n width = _this$props2.width;\n var _this$state = _this.state,\n scrollLeft = _this$state.scrollLeft,\n scrollTop = _this$state.scrollTop;\n\n\n if (scrollToCell >= 0) {\n var scrollPosition = cellLayoutManager.getScrollPositionForCell({\n align: scrollToAlignment,\n cellIndex: scrollToCell,\n height: height,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n width: width\n });\n\n if (scrollPosition.scrollLeft !== scrollLeft || scrollPosition.scrollTop !== scrollTop) {\n _this._setScrollPosition(scrollPosition);\n }\n }\n };\n\n _this._onScroll = function (event) {\n // In certain edge-cases React dispatches an onScroll event with an invalid target.scrollLeft / target.scrollTop.\n // This invalid event can be detected by comparing event.target to this component's scrollable DOM element.\n // See issue #404 for more information.\n if (event.target !== _this._scrollingContainer) {\n return;\n }\n\n // Prevent pointer events from interrupting a smooth scroll\n _this._enablePointerEventsAfterDelay();\n\n // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n // This causes a series of rapid renders that is slow for long lists.\n // We can avoid that by doing some simple bounds checking to ensure that scrollTop never exceeds the total height.\n var _this$props3 = _this.props,\n cellLayoutManager = _this$props3.cellLayoutManager,\n height = _this$props3.height,\n isScrollingChange = _this$props3.isScrollingChange,\n width = _this$props3.width;\n\n var scrollbarSize = _this._scrollbarSize;\n\n var _cellLayoutManager$ge = cellLayoutManager.getTotalSize(),\n totalHeight = _cellLayoutManager$ge.height,\n totalWidth = _cellLayoutManager$ge.width;\n\n var scrollLeft = Math.max(0, Math.min(totalWidth - width + scrollbarSize, event.target.scrollLeft));\n var scrollTop = Math.max(0, Math.min(totalHeight - height + scrollbarSize, event.target.scrollTop));\n\n // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n // Don't force a re-render if this is the case.\n // The mouse may move faster then the animation frame does.\n // Use requestAnimationFrame to avoid over-updating.\n if (_this.state.scrollLeft !== scrollLeft || _this.state.scrollTop !== scrollTop) {\n // Browsers with cancelable scroll events (eg. Firefox) interrupt scrolling animations if scrollTop/scrollLeft is set.\n // Other browsers (eg. Safari) don't scroll as well without the help under certain conditions (DOM or style changes during scrolling).\n // All things considered, this seems to be the best current work around that I'm aware of.\n // For more information see https://github.com/bvaughn/react-virtualized/pull/124\n var scrollPositionChangeReason = event.cancelable ? SCROLL_POSITION_CHANGE_REASONS.OBSERVED : SCROLL_POSITION_CHANGE_REASONS.REQUESTED;\n\n // Synchronously set :isScrolling the first time (since _setNextState will reschedule its animation frame each time it's called)\n if (!_this.state.isScrolling) {\n isScrollingChange(true);\n }\n\n _this.setState({\n isScrolling: true,\n scrollLeft: scrollLeft,\n scrollPositionChangeReason: scrollPositionChangeReason,\n scrollTop: scrollTop\n });\n }\n\n _this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n totalWidth: totalWidth,\n totalHeight: totalHeight\n });\n };\n\n _this._scrollbarSize = getScrollbarSize();\n if (_this._scrollbarSize === undefined) {\n _this._scrollbarSizeMeasured = false;\n _this._scrollbarSize = 0;\n } else {\n _this._scrollbarSizeMeasured = true;\n }\n return _this;\n }\n\n /**\n * Forced recompute of cell sizes and positions.\n * This function should be called if cell sizes have changed but nothing else has.\n * Since cell positions are calculated by callbacks, the collection view has no way of detecting when the underlying data has changed.\n */\n\n\n _createClass(CollectionView, [{\n key: 'recomputeCellSizesAndPositions',\n value: function recomputeCellSizesAndPositions() {\n this._calculateSizeAndPositionDataOnNextUpdate = true;\n this.forceUpdate();\n }\n\n /* ---------------------------- Component lifecycle methods ---------------------------- */\n\n /**\n * @private\n * This method updates scrollLeft/scrollTop in state for the following conditions:\n * 1) Empty content (0 rows or columns)\n * 2) New scroll props overriding the current state\n * 3) Cells-count or cells-size has changed, making previous scroll offsets invalid\n */\n\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _props = this.props,\n cellLayoutManager = _props.cellLayoutManager,\n scrollLeft = _props.scrollLeft,\n scrollToCell = _props.scrollToCell,\n scrollTop = _props.scrollTop;\n\n // If this component was first rendered server-side, scrollbar size will be undefined.\n // In that event we need to remeasure.\n\n if (!this._scrollbarSizeMeasured) {\n this._scrollbarSize = getScrollbarSize();\n this._scrollbarSizeMeasured = true;\n this.setState({});\n }\n\n if (scrollToCell >= 0) {\n this._updateScrollPositionForScrollToCell();\n } else if (scrollLeft >= 0 || scrollTop >= 0) {\n this._setScrollPosition({ scrollLeft: scrollLeft, scrollTop: scrollTop });\n }\n\n // Update onSectionRendered callback.\n this._invokeOnSectionRenderedHelper();\n\n var _cellLayoutManager$ge2 = cellLayoutManager.getTotalSize(),\n totalHeight = _cellLayoutManager$ge2.height,\n totalWidth = _cellLayoutManager$ge2.width;\n\n // Initialize onScroll callback.\n\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft || 0,\n scrollTop: scrollTop || 0,\n totalHeight: totalHeight,\n totalWidth: totalWidth\n });\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n var _props2 = this.props,\n height = _props2.height,\n scrollToAlignment = _props2.scrollToAlignment,\n scrollToCell = _props2.scrollToCell,\n width = _props2.width;\n var _state = this.state,\n scrollLeft = _state.scrollLeft,\n scrollPositionChangeReason = _state.scrollPositionChangeReason,\n scrollTop = _state.scrollTop;\n\n // Make sure requested changes to :scrollLeft or :scrollTop get applied.\n // Assigning to scrollLeft/scrollTop tells the browser to interrupt any running scroll animations,\n // And to discard any pending async changes to the scroll position that may have happened in the meantime (e.g. on a separate scrolling thread).\n // So we only set these when we require an adjustment of the scroll position.\n // See issue #2 for more information.\n\n if (scrollPositionChangeReason === SCROLL_POSITION_CHANGE_REASONS.REQUESTED) {\n if (scrollLeft >= 0 && scrollLeft !== prevState.scrollLeft && scrollLeft !== this._scrollingContainer.scrollLeft) {\n this._scrollingContainer.scrollLeft = scrollLeft;\n }\n if (scrollTop >= 0 && scrollTop !== prevState.scrollTop && scrollTop !== this._scrollingContainer.scrollTop) {\n this._scrollingContainer.scrollTop = scrollTop;\n }\n }\n\n // Update scroll offsets if the current :scrollToCell values requires it\n if (height !== prevProps.height || scrollToAlignment !== prevProps.scrollToAlignment || scrollToCell !== prevProps.scrollToCell || width !== prevProps.width) {\n this._updateScrollPositionForScrollToCell();\n }\n\n // Update onRowsRendered callback if start/stop indices have changed\n this._invokeOnSectionRenderedHelper();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this._disablePointerEventsTimeoutId) {\n clearTimeout(this._disablePointerEventsTimeoutId);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props3 = this.props,\n autoHeight = _props3.autoHeight,\n cellCount = _props3.cellCount,\n cellLayoutManager = _props3.cellLayoutManager,\n className = _props3.className,\n height = _props3.height,\n horizontalOverscanSize = _props3.horizontalOverscanSize,\n id = _props3.id,\n noContentRenderer = _props3.noContentRenderer,\n style = _props3.style,\n verticalOverscanSize = _props3.verticalOverscanSize,\n width = _props3.width;\n var _state2 = this.state,\n isScrolling = _state2.isScrolling,\n scrollLeft = _state2.scrollLeft,\n scrollTop = _state2.scrollTop;\n\n // Memoization reset\n\n if (this._lastRenderedCellCount !== cellCount || this._lastRenderedCellLayoutManager !== cellLayoutManager || this._calculateSizeAndPositionDataOnNextUpdate) {\n this._lastRenderedCellCount = cellCount;\n this._lastRenderedCellLayoutManager = cellLayoutManager;\n this._calculateSizeAndPositionDataOnNextUpdate = false;\n\n cellLayoutManager.calculateSizeAndPositionData();\n }\n\n var _cellLayoutManager$ge3 = cellLayoutManager.getTotalSize(),\n totalHeight = _cellLayoutManager$ge3.height,\n totalWidth = _cellLayoutManager$ge3.width;\n\n // Safely expand the rendered area by the specified overscan amount\n\n\n var left = Math.max(0, scrollLeft - horizontalOverscanSize);\n var top = Math.max(0, scrollTop - verticalOverscanSize);\n var right = Math.min(totalWidth, scrollLeft + width + horizontalOverscanSize);\n var bottom = Math.min(totalHeight, scrollTop + height + verticalOverscanSize);\n\n var childrenToDisplay = height > 0 && width > 0 ? cellLayoutManager.cellRenderers({\n height: bottom - top,\n isScrolling: isScrolling,\n width: right - left,\n x: left,\n y: top\n }) : [];\n\n var collectionStyle = {\n boxSizing: 'border-box',\n direction: 'ltr',\n height: autoHeight ? 'auto' : height,\n position: 'relative',\n WebkitOverflowScrolling: 'touch',\n width: width,\n willChange: 'transform'\n };\n\n // Force browser to hide scrollbars when we know they aren't necessary.\n // Otherwise once scrollbars appear they may not disappear again.\n // For more info see issue #116\n var verticalScrollBarSize = totalHeight > height ? this._scrollbarSize : 0;\n var horizontalScrollBarSize = totalWidth > width ? this._scrollbarSize : 0;\n\n // Also explicitly init styles to 'auto' if scrollbars are required.\n // This works around an obscure edge case where external CSS styles have not yet been loaded,\n // But an initial scroll index of offset is set as an external prop.\n // Without this style, Grid would render the correct range of cells but would NOT update its internal offset.\n // This was originally reported via clauderic/react-infinite-calendar/issues/23\n collectionStyle.overflowX = totalWidth + verticalScrollBarSize <= width ? 'hidden' : 'auto';\n collectionStyle.overflowY = totalHeight + horizontalScrollBarSize <= height ? 'hidden' : 'auto';\n\n return React.createElement(\n 'div',\n {\n ref: this._setScrollingContainerRef,\n 'aria-label': this.props['aria-label'],\n className: clsx('ReactVirtualized__Collection', className),\n id: id,\n onScroll: this._onScroll,\n role: 'grid',\n style: _extends({}, collectionStyle, style),\n tabIndex: 0 },\n cellCount > 0 && React.createElement(\n 'div',\n {\n className: 'ReactVirtualized__Collection__innerScrollContainer',\n style: {\n height: totalHeight,\n maxHeight: totalHeight,\n maxWidth: totalWidth,\n overflow: 'hidden',\n pointerEvents: isScrolling ? 'none' : '',\n width: totalWidth\n } },\n childrenToDisplay\n ),\n cellCount === 0 && noContentRenderer()\n );\n }\n\n /* ---------------------------- Helper methods ---------------------------- */\n\n /**\n * Sets an :isScrolling flag for a small window of time.\n * This flag is used to disable pointer events on the scrollable portion of the Collection.\n * This prevents jerky/stuttery mouse-wheel scrolling.\n */\n\n }, {\n key: '_enablePointerEventsAfterDelay',\n value: function _enablePointerEventsAfterDelay() {\n var _this2 = this;\n\n if (this._disablePointerEventsTimeoutId) {\n clearTimeout(this._disablePointerEventsTimeoutId);\n }\n\n this._disablePointerEventsTimeoutId = setTimeout(function () {\n var isScrollingChange = _this2.props.isScrollingChange;\n\n\n isScrollingChange(false);\n\n _this2._disablePointerEventsTimeoutId = null;\n _this2.setState({\n isScrolling: false\n });\n }, IS_SCROLLING_TIMEOUT);\n }\n }, {\n key: '_invokeOnScrollMemoizer',\n value: function _invokeOnScrollMemoizer(_ref2) {\n var _this3 = this;\n\n var scrollLeft = _ref2.scrollLeft,\n scrollTop = _ref2.scrollTop,\n totalHeight = _ref2.totalHeight,\n totalWidth = _ref2.totalWidth;\n\n this._onScrollMemoizer({\n callback: function callback(_ref3) {\n var scrollLeft = _ref3.scrollLeft,\n scrollTop = _ref3.scrollTop;\n var _props4 = _this3.props,\n height = _props4.height,\n onScroll = _props4.onScroll,\n width = _props4.width;\n\n\n onScroll({\n clientHeight: height,\n clientWidth: width,\n scrollHeight: totalHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: totalWidth\n });\n },\n indices: {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n }\n });\n }\n }, {\n key: '_setScrollPosition',\n value: function _setScrollPosition(_ref4) {\n var scrollLeft = _ref4.scrollLeft,\n scrollTop = _ref4.scrollTop;\n\n var newState = {\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n\n if (scrollLeft >= 0) {\n newState.scrollLeft = scrollLeft;\n }\n\n if (scrollTop >= 0) {\n newState.scrollTop = scrollTop;\n }\n\n if (scrollLeft >= 0 && scrollLeft !== this.state.scrollLeft || scrollTop >= 0 && scrollTop !== this.state.scrollTop) {\n this.setState(newState);\n }\n }\n }], [{\n key: 'getDerivedStateFromProps',\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.cellCount === 0 && (prevState.scrollLeft !== 0 || prevState.scrollTop !== 0)) {\n return {\n scrollLeft: 0,\n scrollTop: 0\n };\n } else if (nextProps.scrollLeft !== prevState.scrollLeft || nextProps.scrollTop !== prevState.scrollTop) {\n return {\n scrollLeft: nextProps.scrollLeft != null ? nextProps.scrollLeft : prevState.scrollLeft,\n scrollTop: nextProps.scrollTop != null ? nextProps.scrollTop : prevState.scrollTop\n };\n }\n\n return null;\n }\n }]);\n\n return CollectionView;\n}(React.PureComponent);\n\nCollectionView.defaultProps = {\n 'aria-label': 'grid',\n horizontalOverscanSize: 0,\n noContentRenderer: function noContentRenderer() {\n return null;\n },\n onScroll: function onScroll() {\n return null;\n },\n onSectionRendered: function onSectionRendered() {\n return null;\n },\n scrollToAlignment: 'auto',\n scrollToCell: -1,\n style: {},\n verticalOverscanSize: 0\n};\nCollectionView.propTypes = process.env.NODE_ENV !== \"production\" ? {\n 'aria-label': PropTypes.string,\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height\n * of rows can stretch the window. Intended for use with WindowScroller\n */\n autoHeight: PropTypes.bool,\n\n /**\n * Number of cells in collection.\n */\n cellCount: PropTypes.number.isRequired,\n\n /**\n * Calculates cell sizes and positions and manages rendering the appropriate cells given a specified window.\n */\n cellLayoutManager: PropTypes.object.isRequired,\n\n /**\n * Optional custom CSS class name to attach to root Collection element.\n */\n className: PropTypes.string,\n\n /**\n * Height of Collection; this property determines the number of visible (vs virtualized) rows.\n */\n height: PropTypes.number.isRequired,\n\n /**\n * Optional custom id to attach to root Collection element.\n */\n id: PropTypes.string,\n\n /**\n * Enables the `Collection` to horiontally \"overscan\" its content similar to how `Grid` does.\n * This can reduce flicker around the edges when a user scrolls quickly.\n */\n horizontalOverscanSize: PropTypes.number.isRequired,\n\n isScrollingChange: PropTypes.func,\n\n /**\n * Optional renderer to be used in place of rows when either :rowCount or :cellCount is 0.\n */\n noContentRenderer: PropTypes.func.isRequired,\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n * ({ clientHeight, clientWidth, scrollHeight, scrollLeft, scrollTop, scrollWidth }): void\n */\n onScroll: PropTypes.func.isRequired,\n\n /**\n * Callback invoked with information about the section of the Collection that was just rendered.\n * This callback is passed a named :indices parameter which is an Array of the most recently rendered section indices.\n */\n onSectionRendered: PropTypes.func.isRequired,\n\n /**\n * Horizontal offset.\n */\n scrollLeft: PropTypes.number,\n\n /**\n * Controls scroll-to-cell behavior of the Grid.\n * The default (\"auto\") scrolls the least amount possible to ensure that the specified cell is fully visible.\n * Use \"start\" to align cells to the top/left of the Grid and \"end\" to align bottom/right.\n */\n scrollToAlignment: PropTypes.oneOf(['auto', 'end', 'start', 'center']).isRequired,\n\n /**\n * Cell index to ensure visible (by forcefully scrolling if necessary).\n */\n scrollToCell: PropTypes.number.isRequired,\n\n /**\n * Vertical offset.\n */\n scrollTop: PropTypes.number,\n\n /**\n * Optional custom inline style to attach to root Collection element.\n */\n style: PropTypes.object,\n\n /**\n * Enables the `Collection` to vertically \"overscan\" its content similar to how `Grid` does.\n * This can reduce flicker around the edges when a user scrolls quickly.\n */\n verticalOverscanSize: PropTypes.number.isRequired,\n\n /**\n * Width of Collection; this property determines the number of visible (vs virtualized) columns.\n */\n width: PropTypes.number.isRequired\n} : {};\n\n\npolyfill(CollectionView);\n\nexport default CollectionView;","import _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\n\n/**\n * A section of the Window.\n * Window Sections are used to group nearby cells.\n * This enables us to more quickly determine which cells to display in a given region of the Window.\n * Sections have a fixed size and contain 0 to many cells (tracked by their indices).\n */\nvar Section = function () {\n function Section(_ref) {\n var height = _ref.height,\n width = _ref.width,\n x = _ref.x,\n y = _ref.y;\n\n _classCallCheck(this, Section);\n\n this.height = height;\n this.width = width;\n this.x = x;\n this.y = y;\n\n this._indexMap = {};\n this._indices = [];\n }\n\n /** Add a cell to this section. */\n\n\n _createClass(Section, [{\n key: 'addCellIndex',\n value: function addCellIndex(_ref2) {\n var index = _ref2.index;\n\n if (!this._indexMap[index]) {\n this._indexMap[index] = true;\n this._indices.push(index);\n }\n }\n\n /** Get all cell indices that have been added to this section. */\n\n }, {\n key: 'getCellIndices',\n value: function getCellIndices() {\n return this._indices;\n }\n\n /** Intended for debugger/test purposes only */\n\n }, {\n key: 'toString',\n value: function toString() {\n return this.x + ',' + this.y + ' ' + this.width + 'x' + this.height;\n }\n }]);\n\n return Section;\n}();\n\nexport default Section;\nimport { bpfrpt_proptype_Index } from './types';\nimport { bpfrpt_proptype_SizeAndPositionInfo } from './types';","import _Object$keys from 'babel-runtime/core-js/object/keys';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\n/**\n * Window Sections are used to group nearby cells.\n * This enables us to more quickly determine which cells to display in a given region of the Window.\n * \n */\nimport Section from './Section';\n\n\nvar SECTION_SIZE = 100;\n\n/**\n * Contains 0 to many Sections.\n * Grows (and adds Sections) dynamically as cells are registered.\n * Automatically adds cells to the appropriate Section(s).\n */\nvar SectionManager = function () {\n function SectionManager() {\n var sectionSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SECTION_SIZE;\n\n _classCallCheck(this, SectionManager);\n\n this._sectionSize = sectionSize;\n\n this._cellMetadata = [];\n this._sections = {};\n }\n\n /**\n * Gets all cell indices contained in the specified region.\n * A region may encompass 1 or more Sections.\n */\n\n\n _createClass(SectionManager, [{\n key: 'getCellIndices',\n value: function getCellIndices(_ref) {\n var height = _ref.height,\n width = _ref.width,\n x = _ref.x,\n y = _ref.y;\n\n var indices = {};\n\n this.getSections({ height: height, width: width, x: x, y: y }).forEach(function (section) {\n return section.getCellIndices().forEach(function (index) {\n indices[index] = index;\n });\n });\n\n // Object keys are strings; this function returns numbers\n return _Object$keys(indices).map(function (index) {\n return indices[index];\n });\n }\n\n /** Get size and position information for the cell specified. */\n\n }, {\n key: 'getCellMetadata',\n value: function getCellMetadata(_ref2) {\n var index = _ref2.index;\n\n return this._cellMetadata[index];\n }\n\n /** Get all Sections overlapping the specified region. */\n\n }, {\n key: 'getSections',\n value: function getSections(_ref3) {\n var height = _ref3.height,\n width = _ref3.width,\n x = _ref3.x,\n y = _ref3.y;\n\n var sectionXStart = Math.floor(x / this._sectionSize);\n var sectionXStop = Math.floor((x + width - 1) / this._sectionSize);\n var sectionYStart = Math.floor(y / this._sectionSize);\n var sectionYStop = Math.floor((y + height - 1) / this._sectionSize);\n\n var sections = [];\n\n for (var sectionX = sectionXStart; sectionX <= sectionXStop; sectionX++) {\n for (var sectionY = sectionYStart; sectionY <= sectionYStop; sectionY++) {\n var key = sectionX + '.' + sectionY;\n\n if (!this._sections[key]) {\n this._sections[key] = new Section({\n height: this._sectionSize,\n width: this._sectionSize,\n x: sectionX * this._sectionSize,\n y: sectionY * this._sectionSize\n });\n }\n\n sections.push(this._sections[key]);\n }\n }\n\n return sections;\n }\n\n /** Total number of Sections based on the currently registered cells. */\n\n }, {\n key: 'getTotalSectionCount',\n value: function getTotalSectionCount() {\n return _Object$keys(this._sections).length;\n }\n\n /** Intended for debugger/test purposes only */\n\n }, {\n key: 'toString',\n value: function toString() {\n var _this = this;\n\n return _Object$keys(this._sections).map(function (index) {\n return _this._sections[index].toString();\n });\n }\n\n /** Adds a cell to the appropriate Sections and registers it metadata for later retrievable. */\n\n }, {\n key: 'registerCell',\n value: function registerCell(_ref4) {\n var cellMetadatum = _ref4.cellMetadatum,\n index = _ref4.index;\n\n this._cellMetadata[index] = cellMetadatum;\n\n this.getSections(cellMetadatum).forEach(function (section) {\n return section.addCellIndex({ index: index });\n });\n }\n }]);\n\n return SectionManager;\n}();\n\nexport default SectionManager;\nimport { bpfrpt_proptype_Index } from './types';\nimport { bpfrpt_proptype_SizeAndPositionInfo } from './types';","/**\n * Determines a new offset that ensures a certain cell is visible, given the current offset.\n * If the cell is already visible then the current offset will be returned.\n * If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible.\n *\n * @param align Desired alignment within container; one of \"auto\" (default), \"start\", or \"end\"\n * @param cellOffset Offset (x or y) position for cell\n * @param cellSize Size (width or height) of cell\n * @param containerSize Total size (width or height) of the container\n * @param currentOffset Container's current (x or y) offset\n * @return Offset to use to ensure the specified cell is visible\n */\nexport default function getUpdatedOffsetForIndex(_ref) {\n var _ref$align = _ref.align,\n align = _ref$align === undefined ? 'auto' : _ref$align,\n cellOffset = _ref.cellOffset,\n cellSize = _ref.cellSize,\n containerSize = _ref.containerSize,\n currentOffset = _ref.currentOffset;\n\n var maxOffset = cellOffset;\n var minOffset = maxOffset - containerSize + cellSize;\n\n switch (align) {\n case 'start':\n return maxOffset;\n case 'end':\n return minOffset;\n case 'center':\n return maxOffset - (containerSize - cellSize) / 2;\n default:\n return Math.max(minOffset, Math.min(maxOffset, currentOffset));\n }\n}","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport CollectionView from './CollectionView';\nimport _calculateSizeAndPositionData from './utils/calculateSizeAndPositionData';\nimport getUpdatedOffsetForIndex from '../utils/getUpdatedOffsetForIndex';\n\n/**\n * Renders scattered or non-linear data.\n * Unlike Grid, which renders checkerboard data, Collection can render arbitrarily positioned- even overlapping- data.\n */\nvar Collection = function (_React$PureComponent) {\n _inherits(Collection, _React$PureComponent);\n\n function Collection(props, context) {\n _classCallCheck(this, Collection);\n\n var _this = _possibleConstructorReturn(this, (Collection.__proto__ || _Object$getPrototypeOf(Collection)).call(this, props, context));\n\n _this._cellMetadata = [];\n _this._lastRenderedCellIndices = [];\n\n // Cell cache during scroll (for perforamnce)\n _this._cellCache = [];\n\n _this._isScrollingChange = _this._isScrollingChange.bind(_this);\n _this._setCollectionViewRef = _this._setCollectionViewRef.bind(_this);\n return _this;\n }\n\n _createClass(Collection, [{\n key: 'forceUpdate',\n value: function forceUpdate() {\n if (this._collectionView !== undefined) {\n this._collectionView.forceUpdate();\n }\n }\n\n /** See Collection#recomputeCellSizesAndPositions */\n\n }, {\n key: 'recomputeCellSizesAndPositions',\n value: function recomputeCellSizesAndPositions() {\n this._cellCache = [];\n this._collectionView.recomputeCellSizesAndPositions();\n }\n\n /** React lifecycle methods */\n\n }, {\n key: 'render',\n value: function render() {\n var props = _objectWithoutProperties(this.props, []);\n\n return React.createElement(CollectionView, _extends({\n cellLayoutManager: this,\n isScrollingChange: this._isScrollingChange,\n ref: this._setCollectionViewRef\n }, props));\n }\n\n /** CellLayoutManager interface */\n\n }, {\n key: 'calculateSizeAndPositionData',\n value: function calculateSizeAndPositionData() {\n var _props = this.props,\n cellCount = _props.cellCount,\n cellSizeAndPositionGetter = _props.cellSizeAndPositionGetter,\n sectionSize = _props.sectionSize;\n\n\n var data = _calculateSizeAndPositionData({\n cellCount: cellCount,\n cellSizeAndPositionGetter: cellSizeAndPositionGetter,\n sectionSize: sectionSize\n });\n\n this._cellMetadata = data.cellMetadata;\n this._sectionManager = data.sectionManager;\n this._height = data.height;\n this._width = data.width;\n }\n\n /**\n * Returns the most recently rendered set of cell indices.\n */\n\n }, {\n key: 'getLastRenderedIndices',\n value: function getLastRenderedIndices() {\n return this._lastRenderedCellIndices;\n }\n\n /**\n * Calculates the minimum amount of change from the current scroll position to ensure the specified cell is (fully) visible.\n */\n\n }, {\n key: 'getScrollPositionForCell',\n value: function getScrollPositionForCell(_ref) {\n var align = _ref.align,\n cellIndex = _ref.cellIndex,\n height = _ref.height,\n scrollLeft = _ref.scrollLeft,\n scrollTop = _ref.scrollTop,\n width = _ref.width;\n var cellCount = this.props.cellCount;\n\n\n if (cellIndex >= 0 && cellIndex < cellCount) {\n var cellMetadata = this._cellMetadata[cellIndex];\n\n scrollLeft = getUpdatedOffsetForIndex({\n align: align,\n cellOffset: cellMetadata.x,\n cellSize: cellMetadata.width,\n containerSize: width,\n currentOffset: scrollLeft,\n targetIndex: cellIndex\n });\n\n scrollTop = getUpdatedOffsetForIndex({\n align: align,\n cellOffset: cellMetadata.y,\n cellSize: cellMetadata.height,\n containerSize: height,\n currentOffset: scrollTop,\n targetIndex: cellIndex\n });\n }\n\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n }\n }, {\n key: 'getTotalSize',\n value: function getTotalSize() {\n return {\n height: this._height,\n width: this._width\n };\n }\n }, {\n key: 'cellRenderers',\n value: function cellRenderers(_ref2) {\n var _this2 = this;\n\n var height = _ref2.height,\n isScrolling = _ref2.isScrolling,\n width = _ref2.width,\n x = _ref2.x,\n y = _ref2.y;\n var _props2 = this.props,\n cellGroupRenderer = _props2.cellGroupRenderer,\n cellRenderer = _props2.cellRenderer;\n\n // Store for later calls to getLastRenderedIndices()\n\n this._lastRenderedCellIndices = this._sectionManager.getCellIndices({\n height: height,\n width: width,\n x: x,\n y: y\n });\n\n return cellGroupRenderer({\n cellCache: this._cellCache,\n cellRenderer: cellRenderer,\n cellSizeAndPositionGetter: function cellSizeAndPositionGetter(_ref3) {\n var index = _ref3.index;\n return _this2._sectionManager.getCellMetadata({ index: index });\n },\n indices: this._lastRenderedCellIndices,\n isScrolling: isScrolling\n });\n }\n }, {\n key: '_isScrollingChange',\n value: function _isScrollingChange(isScrolling) {\n if (!isScrolling) {\n this._cellCache = [];\n }\n }\n }, {\n key: '_setCollectionViewRef',\n value: function _setCollectionViewRef(ref) {\n this._collectionView = ref;\n }\n }]);\n\n return Collection;\n}(React.PureComponent);\n\nCollection.defaultProps = {\n 'aria-label': 'grid',\n cellGroupRenderer: defaultCellGroupRenderer\n};\nexport default Collection;\nCollection.propTypes = process.env.NODE_ENV !== \"production\" ? {\n 'aria-label': PropTypes.string,\n\n /**\n * Number of cells in Collection.\n */\n cellCount: PropTypes.number.isRequired,\n\n /**\n * Responsible for rendering a group of cells given their indices.\n * Should implement the following interface: ({\n * cellSizeAndPositionGetter:Function,\n * indices: Array,\n * cellRenderer: Function\n * }): Array\n */\n cellGroupRenderer: PropTypes.func.isRequired,\n\n /**\n * Responsible for rendering a cell given an row and column index.\n * Should implement the following interface: ({ index: number, key: string, style: object }): PropTypes.element\n */\n cellRenderer: PropTypes.func.isRequired,\n\n /**\n * Callback responsible for returning size and offset/position information for a given cell (index).\n * ({ index: number }): { height: number, width: number, x: number, y: number }\n */\n cellSizeAndPositionGetter: PropTypes.func.isRequired,\n\n /**\n * Optionally override the size of the sections a Collection's cells are split into.\n */\n sectionSize: PropTypes.number\n} : {};\n\n\nfunction defaultCellGroupRenderer(_ref4) {\n var cellCache = _ref4.cellCache,\n cellRenderer = _ref4.cellRenderer,\n cellSizeAndPositionGetter = _ref4.cellSizeAndPositionGetter,\n indices = _ref4.indices,\n isScrolling = _ref4.isScrolling;\n\n return indices.map(function (index) {\n var cellMetadata = cellSizeAndPositionGetter({ index: index });\n\n var cellRendererProps = {\n index: index,\n isScrolling: isScrolling,\n key: index,\n style: {\n height: cellMetadata.height,\n left: cellMetadata.x,\n position: 'absolute',\n top: cellMetadata.y,\n width: cellMetadata.width\n }\n };\n\n // Avoid re-creating cells while scrolling.\n // This can lead to the same cell being created many times and can cause performance issues for \"heavy\" cells.\n // If a scroll is in progress- cache and reuse cells.\n // This cache will be thrown away once scrolling complets.\n if (isScrolling) {\n if (!(index in cellCache)) {\n cellCache[index] = cellRenderer(cellRendererProps);\n }\n\n return cellCache[index];\n } else {\n return cellRenderer(cellRendererProps);\n }\n }).filter(function (renderedCell) {\n return !!renderedCell;\n });\n}\nimport { bpfrpt_proptype_ScrollPosition } from './types';\nimport { bpfrpt_proptype_SizeInfo } from './types';","import SectionManager from '../SectionManager';\n\nexport default function calculateSizeAndPositionData(_ref) {\n var cellCount = _ref.cellCount,\n cellSizeAndPositionGetter = _ref.cellSizeAndPositionGetter,\n sectionSize = _ref.sectionSize;\n\n var cellMetadata = [];\n var sectionManager = new SectionManager(sectionSize);\n var height = 0;\n var width = 0;\n\n for (var index = 0; index < cellCount; index++) {\n var cellMetadatum = cellSizeAndPositionGetter({ index: index });\n\n if (cellMetadatum.height == null || isNaN(cellMetadatum.height) || cellMetadatum.width == null || isNaN(cellMetadatum.width) || cellMetadatum.x == null || isNaN(cellMetadatum.x) || cellMetadatum.y == null || isNaN(cellMetadatum.y)) {\n throw Error('Invalid metadata returned for cell ' + index + ':\\n x:' + cellMetadatum.x + ', y:' + cellMetadatum.y + ', width:' + cellMetadatum.width + ', height:' + cellMetadatum.height);\n }\n\n height = Math.max(height, cellMetadatum.y + cellMetadatum.height);\n width = Math.max(width, cellMetadatum.x + cellMetadatum.width);\n\n cellMetadata[index] = cellMetadatum;\n sectionManager.registerCell({\n cellMetadatum: cellMetadatum,\n index: index\n });\n }\n\n return {\n cellMetadata: cellMetadata,\n height: height,\n sectionManager: sectionManager,\n width: width\n };\n}","import Collection from './Collection';\n\nexport default Collection;\nexport { Collection };","import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n\n/**\n * High-order component that auto-calculates column-widths for `Grid` cells.\n */\n\nvar ColumnSizer = function (_React$PureComponent) {\n _inherits(ColumnSizer, _React$PureComponent);\n\n function ColumnSizer(props, context) {\n _classCallCheck(this, ColumnSizer);\n\n var _this = _possibleConstructorReturn(this, (ColumnSizer.__proto__ || _Object$getPrototypeOf(ColumnSizer)).call(this, props, context));\n\n _this._registerChild = _this._registerChild.bind(_this);\n return _this;\n }\n\n _createClass(ColumnSizer, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n var _props = this.props,\n columnMaxWidth = _props.columnMaxWidth,\n columnMinWidth = _props.columnMinWidth,\n columnCount = _props.columnCount,\n width = _props.width;\n\n\n if (columnMaxWidth !== prevProps.columnMaxWidth || columnMinWidth !== prevProps.columnMinWidth || columnCount !== prevProps.columnCount || width !== prevProps.width) {\n if (this._registeredChild) {\n this._registeredChild.recomputeGridSize();\n }\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n children = _props2.children,\n columnMaxWidth = _props2.columnMaxWidth,\n columnMinWidth = _props2.columnMinWidth,\n columnCount = _props2.columnCount,\n width = _props2.width;\n\n\n var safeColumnMinWidth = columnMinWidth || 1;\n\n var safeColumnMaxWidth = columnMaxWidth ? Math.min(columnMaxWidth, width) : width;\n\n var columnWidth = width / columnCount;\n columnWidth = Math.max(safeColumnMinWidth, columnWidth);\n columnWidth = Math.min(safeColumnMaxWidth, columnWidth);\n columnWidth = Math.floor(columnWidth);\n\n var adjustedWidth = Math.min(width, columnWidth * columnCount);\n\n return children({\n adjustedWidth: adjustedWidth,\n columnWidth: columnWidth,\n getColumnWidth: function getColumnWidth() {\n return columnWidth;\n },\n registerChild: this._registerChild\n });\n }\n }, {\n key: '_registerChild',\n value: function _registerChild(child) {\n if (child && typeof child.recomputeGridSize !== 'function') {\n throw Error('Unexpected child type registered; only Grid/MultiGrid children are supported.');\n }\n\n this._registeredChild = child;\n\n if (this._registeredChild) {\n this._registeredChild.recomputeGridSize();\n }\n }\n }]);\n\n return ColumnSizer;\n}(React.PureComponent);\n\nexport default ColumnSizer;\nColumnSizer.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Function responsible for rendering a virtualized Grid.\n * This function should implement the following signature:\n * ({ adjustedWidth, getColumnWidth, registerChild }) => PropTypes.element\n *\n * The specified :getColumnWidth function should be passed to the Grid's :columnWidth property.\n * The :registerChild should be passed to the Grid's :ref property.\n * The :adjustedWidth property is optional; it reflects the lesser of the overall width or the width of all columns.\n */\n children: PropTypes.func.isRequired,\n\n /** Optional maximum allowed column width */\n columnMaxWidth: PropTypes.number,\n\n /** Optional minimum allowed column width */\n columnMinWidth: PropTypes.number,\n\n /** Number of columns in Grid or Table child */\n columnCount: PropTypes.number.isRequired,\n\n /** Width of Grid or Table child */\n width: PropTypes.number.isRequired\n} : {};","import ColumnSizer from './ColumnSizer';\n\nexport default ColumnSizer;\nexport { ColumnSizer };","import _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\n\n/**\n * Higher-order component that manages lazy-loading for \"infinite\" data.\n * This component decorates a virtual component and just-in-time prefetches rows as a user scrolls.\n * It is intended as a convenience component; fork it if you'd like finer-grained control over data-loading.\n */\n\nvar InfiniteLoader = function (_React$PureComponent) {\n _inherits(InfiniteLoader, _React$PureComponent);\n\n function InfiniteLoader(props, context) {\n _classCallCheck(this, InfiniteLoader);\n\n var _this = _possibleConstructorReturn(this, (InfiniteLoader.__proto__ || _Object$getPrototypeOf(InfiniteLoader)).call(this, props, context));\n\n _this._loadMoreRowsMemoizer = createCallbackMemoizer();\n\n _this._onRowsRendered = _this._onRowsRendered.bind(_this);\n _this._registerChild = _this._registerChild.bind(_this);\n return _this;\n }\n\n _createClass(InfiniteLoader, [{\n key: 'resetLoadMoreRowsCache',\n value: function resetLoadMoreRowsCache(autoReload) {\n this._loadMoreRowsMemoizer = createCallbackMemoizer();\n\n if (autoReload) {\n this._doStuff(this._lastRenderedStartIndex, this._lastRenderedStopIndex);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var children = this.props.children;\n\n\n return children({\n onRowsRendered: this._onRowsRendered,\n registerChild: this._registerChild\n });\n }\n }, {\n key: '_loadUnloadedRanges',\n value: function _loadUnloadedRanges(unloadedRanges) {\n var _this2 = this;\n\n var loadMoreRows = this.props.loadMoreRows;\n\n\n unloadedRanges.forEach(function (unloadedRange) {\n var promise = loadMoreRows(unloadedRange);\n if (promise) {\n promise.then(function () {\n // Refresh the visible rows if any of them have just been loaded.\n // Otherwise they will remain in their unloaded visual state.\n if (isRangeVisible({\n lastRenderedStartIndex: _this2._lastRenderedStartIndex,\n lastRenderedStopIndex: _this2._lastRenderedStopIndex,\n startIndex: unloadedRange.startIndex,\n stopIndex: unloadedRange.stopIndex\n })) {\n if (_this2._registeredChild) {\n forceUpdateReactVirtualizedComponent(_this2._registeredChild, _this2._lastRenderedStartIndex);\n }\n }\n });\n }\n });\n }\n }, {\n key: '_onRowsRendered',\n value: function _onRowsRendered(_ref) {\n var startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n\n this._lastRenderedStartIndex = startIndex;\n this._lastRenderedStopIndex = stopIndex;\n\n this._doStuff(startIndex, stopIndex);\n }\n }, {\n key: '_doStuff',\n value: function _doStuff(startIndex, stopIndex) {\n var _ref2,\n _this3 = this;\n\n var _props = this.props,\n isRowLoaded = _props.isRowLoaded,\n minimumBatchSize = _props.minimumBatchSize,\n rowCount = _props.rowCount,\n threshold = _props.threshold;\n\n\n var unloadedRanges = scanForUnloadedRanges({\n isRowLoaded: isRowLoaded,\n minimumBatchSize: minimumBatchSize,\n rowCount: rowCount,\n startIndex: Math.max(0, startIndex - threshold),\n stopIndex: Math.min(rowCount - 1, stopIndex + threshold)\n });\n\n // For memoize comparison\n var squashedUnloadedRanges = (_ref2 = []).concat.apply(_ref2, _toConsumableArray(unloadedRanges.map(function (_ref3) {\n var startIndex = _ref3.startIndex,\n stopIndex = _ref3.stopIndex;\n return [startIndex, stopIndex];\n })));\n\n this._loadMoreRowsMemoizer({\n callback: function callback() {\n _this3._loadUnloadedRanges(unloadedRanges);\n },\n indices: { squashedUnloadedRanges: squashedUnloadedRanges }\n });\n }\n }, {\n key: '_registerChild',\n value: function _registerChild(registeredChild) {\n this._registeredChild = registeredChild;\n }\n }]);\n\n return InfiniteLoader;\n}(React.PureComponent);\n\n/**\n * Determines if the specified start/stop range is visible based on the most recently rendered range.\n */\n\n\nInfiniteLoader.defaultProps = {\n minimumBatchSize: 10,\n rowCount: 0,\n threshold: 15\n};\nexport default InfiniteLoader;\nInfiniteLoader.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Function responsible for rendering a virtualized component.\n * This function should implement the following signature:\n * ({ onRowsRendered, registerChild }) => PropTypes.element\n *\n * The specified :onRowsRendered function should be passed through to the child's :onRowsRendered property.\n * The :registerChild callback should be set as the virtualized component's :ref.\n */\n children: PropTypes.func.isRequired,\n\n /**\n * Function responsible for tracking the loaded state of each row.\n * It should implement the following signature: ({ index: number }): boolean\n */\n isRowLoaded: PropTypes.func.isRequired,\n\n /**\n * Callback to be invoked when more rows must be loaded.\n * It should implement the following signature: ({ startIndex, stopIndex }): Promise\n * The returned Promise should be resolved once row data has finished loading.\n * It will be used to determine when to refresh the list with the newly-loaded data.\n * This callback may be called multiple times in reaction to a single scroll event.\n */\n loadMoreRows: PropTypes.func.isRequired,\n\n /**\n * Minimum number of rows to be loaded at a time.\n * This property can be used to batch requests to reduce HTTP requests.\n */\n minimumBatchSize: PropTypes.number.isRequired,\n\n /**\n * Number of rows in list; can be arbitrary high number if actual number is unknown.\n */\n rowCount: PropTypes.number.isRequired,\n\n /**\n * Threshold at which to pre-fetch data.\n * A threshold X means that data will start loading when a user scrolls within X rows.\n * This value defaults to 15.\n */\n threshold: PropTypes.number.isRequired\n} : {};\nexport function isRangeVisible(_ref4) {\n var lastRenderedStartIndex = _ref4.lastRenderedStartIndex,\n lastRenderedStopIndex = _ref4.lastRenderedStopIndex,\n startIndex = _ref4.startIndex,\n stopIndex = _ref4.stopIndex;\n\n return !(startIndex > lastRenderedStopIndex || stopIndex < lastRenderedStartIndex);\n}\n\n/**\n * Returns all of the ranges within a larger range that contain unloaded rows.\n */\nexport function scanForUnloadedRanges(_ref5) {\n var isRowLoaded = _ref5.isRowLoaded,\n minimumBatchSize = _ref5.minimumBatchSize,\n rowCount = _ref5.rowCount,\n startIndex = _ref5.startIndex,\n stopIndex = _ref5.stopIndex;\n\n var unloadedRanges = [];\n\n var rangeStartIndex = null;\n var rangeStopIndex = null;\n\n for (var index = startIndex; index <= stopIndex; index++) {\n var loaded = isRowLoaded({ index: index });\n\n if (!loaded) {\n rangeStopIndex = index;\n if (rangeStartIndex === null) {\n rangeStartIndex = index;\n }\n } else if (rangeStopIndex !== null) {\n unloadedRanges.push({\n startIndex: rangeStartIndex,\n stopIndex: rangeStopIndex\n });\n\n rangeStartIndex = rangeStopIndex = null;\n }\n }\n\n // If :rangeStopIndex is not null it means we haven't ran out of unloaded rows.\n // Scan forward to try filling our :minimumBatchSize.\n if (rangeStopIndex !== null) {\n var potentialStopIndex = Math.min(Math.max(rangeStopIndex, rangeStartIndex + minimumBatchSize - 1), rowCount - 1);\n\n for (var _index = rangeStopIndex + 1; _index <= potentialStopIndex; _index++) {\n if (!isRowLoaded({ index: _index })) {\n rangeStopIndex = _index;\n } else {\n break;\n }\n }\n\n unloadedRanges.push({\n startIndex: rangeStartIndex,\n stopIndex: rangeStopIndex\n });\n }\n\n // Check to see if our first range ended prematurely.\n // In this case we should scan backwards to try filling our :minimumBatchSize.\n if (unloadedRanges.length) {\n var firstUnloadedRange = unloadedRanges[0];\n\n while (firstUnloadedRange.stopIndex - firstUnloadedRange.startIndex + 1 < minimumBatchSize && firstUnloadedRange.startIndex > 0) {\n var _index2 = firstUnloadedRange.startIndex - 1;\n\n if (!isRowLoaded({ index: _index2 })) {\n firstUnloadedRange.startIndex = _index2;\n } else {\n break;\n }\n }\n }\n\n return unloadedRanges;\n}\n\n/**\n * Since RV components use shallowCompare we need to force a render (even though props haven't changed).\n * However InfiniteLoader may wrap a Grid or it may wrap a Table or List.\n * In the first case the built-in React forceUpdate() method is sufficient to force a re-render,\n * But in the latter cases we need to use the RV-specific forceUpdateGrid() method.\n * Else the inner Grid will not be re-rendered and visuals may be stale.\n *\n * Additionally, while a Grid is scrolling the cells can be cached,\n * So it's important to invalidate that cache by recalculating sizes\n * before forcing a rerender.\n */\nexport function forceUpdateReactVirtualizedComponent(component) {\n var currentIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var recomputeSize = typeof component.recomputeGridSize === 'function' ? component.recomputeGridSize : component.recomputeRowHeights;\n\n if (recomputeSize) {\n recomputeSize.call(component, currentIndex);\n } else {\n component.forceUpdate();\n }\n}","import InfiniteLoader from './InfiniteLoader';\n\nexport default InfiniteLoader;\nexport { InfiniteLoader };","import _extends from 'babel-runtime/helpers/extends';\nimport _Object$getOwnPropertyDescriptor from 'babel-runtime/core-js/object/get-own-property-descriptor';\nimport _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport Grid, { accessibilityOverscanIndicesGetter } from '../Grid';\nimport * as React from 'react';\nimport clsx from 'clsx';\n\n/**\n * It is inefficient to create and manage a large list of DOM elements within a scrolling container\n * if only a few of those elements are visible. The primary purpose of this component is to improve\n * performance by only rendering the DOM nodes that a user is able to see based on their current\n * scroll position.\n *\n * This component renders a virtualized list of elements with either fixed or dynamic heights.\n */\n\nvar List = function (_React$PureComponent) {\n _inherits(List, _React$PureComponent);\n\n function List() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, List);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = List.__proto__ || _Object$getPrototypeOf(List)).call.apply(_ref, [this].concat(args))), _this), _this._cellRenderer = function (_ref2) {\n var parent = _ref2.parent,\n rowIndex = _ref2.rowIndex,\n style = _ref2.style,\n isScrolling = _ref2.isScrolling,\n isVisible = _ref2.isVisible,\n key = _ref2.key;\n var rowRenderer = _this.props.rowRenderer;\n\n // TRICKY The style object is sometimes cached by Grid.\n // This prevents new style objects from bypassing shallowCompare().\n // However as of React 16, style props are auto-frozen (at least in dev mode)\n // Check to make sure we can still modify the style before proceeding.\n // https://github.com/facebook/react/commit/977357765b44af8ff0cfea327866861073095c12#commitcomment-20648713\n\n var _Object$getOwnPropert = _Object$getOwnPropertyDescriptor(style, 'width'),\n writable = _Object$getOwnPropert.writable;\n\n if (writable) {\n // By default, List cells should be 100% width.\n // This prevents them from flowing under a scrollbar (if present).\n style.width = '100%';\n }\n\n return rowRenderer({\n index: rowIndex,\n style: style,\n isScrolling: isScrolling,\n isVisible: isVisible,\n key: key,\n parent: parent\n });\n }, _this._setRef = function (ref) {\n _this.Grid = ref;\n }, _this._onScroll = function (_ref3) {\n var clientHeight = _ref3.clientHeight,\n scrollHeight = _ref3.scrollHeight,\n scrollTop = _ref3.scrollTop;\n var onScroll = _this.props.onScroll;\n\n\n onScroll({ clientHeight: clientHeight, scrollHeight: scrollHeight, scrollTop: scrollTop });\n }, _this._onSectionRendered = function (_ref4) {\n var rowOverscanStartIndex = _ref4.rowOverscanStartIndex,\n rowOverscanStopIndex = _ref4.rowOverscanStopIndex,\n rowStartIndex = _ref4.rowStartIndex,\n rowStopIndex = _ref4.rowStopIndex;\n var onRowsRendered = _this.props.onRowsRendered;\n\n\n onRowsRendered({\n overscanStartIndex: rowOverscanStartIndex,\n overscanStopIndex: rowOverscanStopIndex,\n startIndex: rowStartIndex,\n stopIndex: rowStopIndex\n });\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(List, [{\n key: 'forceUpdateGrid',\n value: function forceUpdateGrid() {\n if (this.Grid) {\n this.Grid.forceUpdate();\n }\n }\n\n /** See Grid#getOffsetForCell */\n\n }, {\n key: 'getOffsetForRow',\n value: function getOffsetForRow(_ref5) {\n var alignment = _ref5.alignment,\n index = _ref5.index;\n\n if (this.Grid) {\n var _Grid$getOffsetForCel = this.Grid.getOffsetForCell({\n alignment: alignment,\n rowIndex: index,\n columnIndex: 0\n }),\n _scrollTop = _Grid$getOffsetForCel.scrollTop;\n\n return _scrollTop;\n }\n return 0;\n }\n\n /** CellMeasurer compatibility */\n\n }, {\n key: 'invalidateCellSizeAfterRender',\n value: function invalidateCellSizeAfterRender(_ref6) {\n var columnIndex = _ref6.columnIndex,\n rowIndex = _ref6.rowIndex;\n\n if (this.Grid) {\n this.Grid.invalidateCellSizeAfterRender({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n\n /** See Grid#measureAllCells */\n\n }, {\n key: 'measureAllRows',\n value: function measureAllRows() {\n if (this.Grid) {\n this.Grid.measureAllCells();\n }\n }\n\n /** CellMeasurer compatibility */\n\n }, {\n key: 'recomputeGridSize',\n value: function recomputeGridSize() {\n var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref7$columnIndex = _ref7.columnIndex,\n columnIndex = _ref7$columnIndex === undefined ? 0 : _ref7$columnIndex,\n _ref7$rowIndex = _ref7.rowIndex,\n rowIndex = _ref7$rowIndex === undefined ? 0 : _ref7$rowIndex;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n\n /** See Grid#recomputeGridSize */\n\n }, {\n key: 'recomputeRowHeights',\n value: function recomputeRowHeights() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: index,\n columnIndex: 0\n });\n }\n }\n\n /** See Grid#scrollToPosition */\n\n }, {\n key: 'scrollToPosition',\n value: function scrollToPosition() {\n var scrollTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToPosition({ scrollTop: scrollTop });\n }\n }\n\n /** See Grid#scrollToCell */\n\n }, {\n key: 'scrollToRow',\n value: function scrollToRow() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToCell({\n columnIndex: 0,\n rowIndex: index\n });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n noRowsRenderer = _props.noRowsRenderer,\n scrollToIndex = _props.scrollToIndex,\n width = _props.width;\n\n\n var classNames = clsx('ReactVirtualized__List', className);\n\n return React.createElement(Grid, _extends({}, this.props, {\n autoContainerWidth: true,\n cellRenderer: this._cellRenderer,\n className: classNames,\n columnWidth: width,\n columnCount: 1,\n noContentRenderer: noRowsRenderer,\n onScroll: this._onScroll,\n onSectionRendered: this._onSectionRendered,\n ref: this._setRef,\n scrollToRow: scrollToIndex\n }));\n }\n }]);\n\n return List;\n}(React.PureComponent);\n\nList.defaultProps = {\n autoHeight: false,\n estimatedRowSize: 30,\n onScroll: function onScroll() {},\n noRowsRenderer: function noRowsRenderer() {\n return null;\n },\n onRowsRendered: function onRowsRendered() {},\n overscanIndicesGetter: accessibilityOverscanIndicesGetter,\n overscanRowCount: 10,\n scrollToAlignment: 'auto',\n scrollToIndex: -1,\n style: {}\n};\nList.propTypes = process.env.NODE_ENV === 'production' ? null : {\n \"aria-label\": PropTypes.string,\n\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height\n * of rows can stretch the window. Intended for use with WindowScroller\n */\n autoHeight: PropTypes.bool.isRequired,\n\n\n /** Optional CSS class name */\n className: PropTypes.string,\n\n\n /**\n * Used to estimate the total height of a List before all of its rows have actually been measured.\n * The estimated total height is adjusted as rows are rendered.\n */\n estimatedRowSize: PropTypes.number.isRequired,\n\n\n /** Height constraint for list (determines how many actual rows are rendered) */\n height: PropTypes.number.isRequired,\n\n\n /** Optional renderer to be used in place of rows when rowCount is 0 */\n noRowsRenderer: function noRowsRenderer() {\n return (typeof bpfrpt_proptype_NoContentRenderer === 'function' ? bpfrpt_proptype_NoContentRenderer.isRequired ? bpfrpt_proptype_NoContentRenderer.isRequired : bpfrpt_proptype_NoContentRenderer : PropTypes.shape(bpfrpt_proptype_NoContentRenderer).isRequired).apply(this, arguments);\n },\n\n\n /** Callback invoked with information about the slice of rows that were just rendered. */\n\n onRowsRendered: PropTypes.func.isRequired,\n\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n */\n onScroll: PropTypes.func.isRequired,\n\n\n /** See Grid#overscanIndicesGetter */\n overscanIndicesGetter: function overscanIndicesGetter() {\n return (typeof bpfrpt_proptype_OverscanIndicesGetter === 'function' ? bpfrpt_proptype_OverscanIndicesGetter.isRequired ? bpfrpt_proptype_OverscanIndicesGetter.isRequired : bpfrpt_proptype_OverscanIndicesGetter : PropTypes.shape(bpfrpt_proptype_OverscanIndicesGetter).isRequired).apply(this, arguments);\n },\n\n\n /**\n * Number of rows to render above/below the visible bounds of the list.\n * These rows can help for smoother scrolling on touch devices.\n */\n overscanRowCount: PropTypes.number.isRequired,\n\n\n /** Either a fixed row height (number) or a function that returns the height of a row given its index. */\n rowHeight: function rowHeight() {\n return (typeof bpfrpt_proptype_CellSize === 'function' ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n },\n\n\n /** Responsible for rendering a row given an index; ({ index: number }): node */\n rowRenderer: function rowRenderer() {\n return (typeof bpfrpt_proptype_RowRenderer === 'function' ? bpfrpt_proptype_RowRenderer.isRequired ? bpfrpt_proptype_RowRenderer.isRequired : bpfrpt_proptype_RowRenderer : PropTypes.shape(bpfrpt_proptype_RowRenderer).isRequired).apply(this, arguments);\n },\n\n\n /** Number of rows in list. */\n rowCount: PropTypes.number.isRequired,\n\n\n /** See Grid#scrollToAlignment */\n scrollToAlignment: function scrollToAlignment() {\n return (typeof bpfrpt_proptype_Alignment === 'function' ? bpfrpt_proptype_Alignment.isRequired ? bpfrpt_proptype_Alignment.isRequired : bpfrpt_proptype_Alignment : PropTypes.shape(bpfrpt_proptype_Alignment).isRequired).apply(this, arguments);\n },\n\n\n /** Row index to ensure visible (by forcefully scrolling if necessary) */\n scrollToIndex: PropTypes.number.isRequired,\n\n\n /** Vertical offset. */\n scrollTop: PropTypes.number,\n\n\n /** Optional inline style */\n style: PropTypes.object.isRequired,\n\n\n /** Tab index for focus */\n tabIndex: PropTypes.number,\n\n\n /** Width of list */\n width: PropTypes.number.isRequired\n};\nexport default List;\nimport { bpfrpt_proptype_NoContentRenderer } from '../Grid';\nimport { bpfrpt_proptype_Alignment } from '../Grid';\nimport { bpfrpt_proptype_CellSize } from '../Grid';\nimport { bpfrpt_proptype_CellPosition } from '../Grid';\nimport { bpfrpt_proptype_OverscanIndicesGetter } from '../Grid';\nimport { bpfrpt_proptype_RenderedSection } from '../Grid';\nimport { bpfrpt_proptype_CellRendererParams } from '../Grid';\nimport { bpfrpt_proptype_Scroll as bpfrpt_proptype_GridScroll } from '../Grid';\nimport { bpfrpt_proptype_RowRenderer } from './types';\nimport { bpfrpt_proptype_RenderedRows } from './types';\nimport { bpfrpt_proptype_Scroll } from './types';\nimport PropTypes from 'prop-types';","/**\n * Binary Search Bounds\n * https://github.com/mikolalysenko/binary-search-bounds\n * Mikola Lysenko\n *\n * Inlined because of Content Security Policy issue caused by the use of `new Function(...)` syntax.\n * Issue reported here: https://github.com/mikolalysenko/binary-search-bounds/issues/5\n **/\n\nfunction _GEA(a, l, h, y) {\n var i = h + 1;\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n if (x >= y) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n return i;\n}\nfunction _GEP(a, l, h, y, c) {\n var i = h + 1;\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n if (c(x, y) >= 0) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n return i;\n}\nfunction dispatchBsearchGE(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _GEP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _GEA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _GTA(a, l, h, y) {\n var i = h + 1;\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n if (x > y) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n return i;\n}\nfunction _GTP(a, l, h, y, c) {\n var i = h + 1;\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n if (c(x, y) > 0) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n return i;\n}\nfunction dispatchBsearchGT(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _GTP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _GTA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _LTA(a, l, h, y) {\n var i = l - 1;\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n if (x < y) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n return i;\n}\nfunction _LTP(a, l, h, y, c) {\n var i = l - 1;\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n if (c(x, y) < 0) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n return i;\n}\nfunction dispatchBsearchLT(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _LTP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _LTA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _LEA(a, l, h, y) {\n var i = l - 1;\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n if (x <= y) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n return i;\n}\nfunction _LEP(a, l, h, y, c) {\n var i = l - 1;\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n if (c(x, y) <= 0) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n return i;\n}\nfunction dispatchBsearchLE(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _LEP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _LEA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _EQA(a, l, h, y) {\n l - 1;\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n if (x === y) {\n return m;\n } else if (x <= y) {\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n return -1;\n}\nfunction _EQP(a, l, h, y, c) {\n l - 1;\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n var p = c(x, y);\n if (p === 0) {\n return m;\n } else if (p <= 0) {\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n return -1;\n}\nfunction dispatchBsearchEQ(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _EQP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _EQA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nexport default {\n ge: dispatchBsearchGE,\n gt: dispatchBsearchGT,\n lt: dispatchBsearchLT,\n le: dispatchBsearchLE,\n eq: dispatchBsearchEQ\n};","/**\n * Binary Search Bounds\n * https://github.com/mikolalysenko/interval-tree-1d\n * Mikola Lysenko\n *\n * Inlined because of Content Security Policy issue caused by the use of `new Function(...)` syntax in an upstream dependency.\n * Issue reported here: https://github.com/mikolalysenko/binary-search-bounds/issues/5\n **/\n\nimport bounds from './binarySearchBounds';\n\nvar NOT_FOUND = 0;\nvar SUCCESS = 1;\nvar EMPTY = 2;\n\nfunction IntervalTreeNode(mid, left, right, leftPoints, rightPoints) {\n this.mid = mid;\n this.left = left;\n this.right = right;\n this.leftPoints = leftPoints;\n this.rightPoints = rightPoints;\n this.count = (left ? left.count : 0) + (right ? right.count : 0) + leftPoints.length;\n}\n\nvar proto = IntervalTreeNode.prototype;\n\nfunction copy(a, b) {\n a.mid = b.mid;\n a.left = b.left;\n a.right = b.right;\n a.leftPoints = b.leftPoints;\n a.rightPoints = b.rightPoints;\n a.count = b.count;\n}\n\nfunction rebuild(node, intervals) {\n var ntree = createIntervalTree(intervals);\n node.mid = ntree.mid;\n node.left = ntree.left;\n node.right = ntree.right;\n node.leftPoints = ntree.leftPoints;\n node.rightPoints = ntree.rightPoints;\n node.count = ntree.count;\n}\n\nfunction rebuildWithInterval(node, interval) {\n var intervals = node.intervals([]);\n intervals.push(interval);\n rebuild(node, intervals);\n}\n\nfunction rebuildWithoutInterval(node, interval) {\n var intervals = node.intervals([]);\n var idx = intervals.indexOf(interval);\n if (idx < 0) {\n return NOT_FOUND;\n }\n intervals.splice(idx, 1);\n rebuild(node, intervals);\n return SUCCESS;\n}\n\nproto.intervals = function (result) {\n result.push.apply(result, this.leftPoints);\n if (this.left) {\n this.left.intervals(result);\n }\n if (this.right) {\n this.right.intervals(result);\n }\n return result;\n};\n\nproto.insert = function (interval) {\n var weight = this.count - this.leftPoints.length;\n this.count += 1;\n if (interval[1] < this.mid) {\n if (this.left) {\n if (4 * (this.left.count + 1) > 3 * (weight + 1)) {\n rebuildWithInterval(this, interval);\n } else {\n this.left.insert(interval);\n }\n } else {\n this.left = createIntervalTree([interval]);\n }\n } else if (interval[0] > this.mid) {\n if (this.right) {\n if (4 * (this.right.count + 1) > 3 * (weight + 1)) {\n rebuildWithInterval(this, interval);\n } else {\n this.right.insert(interval);\n }\n } else {\n this.right = createIntervalTree([interval]);\n }\n } else {\n var l = bounds.ge(this.leftPoints, interval, compareBegin);\n var r = bounds.ge(this.rightPoints, interval, compareEnd);\n this.leftPoints.splice(l, 0, interval);\n this.rightPoints.splice(r, 0, interval);\n }\n};\n\nproto.remove = function (interval) {\n var weight = this.count - this.leftPoints;\n if (interval[1] < this.mid) {\n if (!this.left) {\n return NOT_FOUND;\n }\n var rw = this.right ? this.right.count : 0;\n if (4 * rw > 3 * (weight - 1)) {\n return rebuildWithoutInterval(this, interval);\n }\n var r = this.left.remove(interval);\n if (r === EMPTY) {\n this.left = null;\n this.count -= 1;\n return SUCCESS;\n } else if (r === SUCCESS) {\n this.count -= 1;\n }\n return r;\n } else if (interval[0] > this.mid) {\n if (!this.right) {\n return NOT_FOUND;\n }\n var lw = this.left ? this.left.count : 0;\n if (4 * lw > 3 * (weight - 1)) {\n return rebuildWithoutInterval(this, interval);\n }\n var r = this.right.remove(interval);\n if (r === EMPTY) {\n this.right = null;\n this.count -= 1;\n return SUCCESS;\n } else if (r === SUCCESS) {\n this.count -= 1;\n }\n return r;\n } else {\n if (this.count === 1) {\n if (this.leftPoints[0] === interval) {\n return EMPTY;\n } else {\n return NOT_FOUND;\n }\n }\n if (this.leftPoints.length === 1 && this.leftPoints[0] === interval) {\n if (this.left && this.right) {\n var p = this;\n var n = this.left;\n while (n.right) {\n p = n;\n n = n.right;\n }\n if (p === this) {\n n.right = this.right;\n } else {\n var l = this.left;\n var r = this.right;\n p.count -= n.count;\n p.right = n.left;\n n.left = l;\n n.right = r;\n }\n copy(this, n);\n this.count = (this.left ? this.left.count : 0) + (this.right ? this.right.count : 0) + this.leftPoints.length;\n } else if (this.left) {\n copy(this, this.left);\n } else {\n copy(this, this.right);\n }\n return SUCCESS;\n }\n for (var l = bounds.ge(this.leftPoints, interval, compareBegin); l < this.leftPoints.length; ++l) {\n if (this.leftPoints[l][0] !== interval[0]) {\n break;\n }\n if (this.leftPoints[l] === interval) {\n this.count -= 1;\n this.leftPoints.splice(l, 1);\n for (var r = bounds.ge(this.rightPoints, interval, compareEnd); r < this.rightPoints.length; ++r) {\n if (this.rightPoints[r][1] !== interval[1]) {\n break;\n } else if (this.rightPoints[r] === interval) {\n this.rightPoints.splice(r, 1);\n return SUCCESS;\n }\n }\n }\n }\n return NOT_FOUND;\n }\n};\n\nfunction reportLeftRange(arr, hi, cb) {\n for (var i = 0; i < arr.length && arr[i][0] <= hi; ++i) {\n var r = cb(arr[i]);\n if (r) {\n return r;\n }\n }\n}\n\nfunction reportRightRange(arr, lo, cb) {\n for (var i = arr.length - 1; i >= 0 && arr[i][1] >= lo; --i) {\n var r = cb(arr[i]);\n if (r) {\n return r;\n }\n }\n}\n\nfunction reportRange(arr, cb) {\n for (var i = 0; i < arr.length; ++i) {\n var r = cb(arr[i]);\n if (r) {\n return r;\n }\n }\n}\n\nproto.queryPoint = function (x, cb) {\n if (x < this.mid) {\n if (this.left) {\n var r = this.left.queryPoint(x, cb);\n if (r) {\n return r;\n }\n }\n return reportLeftRange(this.leftPoints, x, cb);\n } else if (x > this.mid) {\n if (this.right) {\n var r = this.right.queryPoint(x, cb);\n if (r) {\n return r;\n }\n }\n return reportRightRange(this.rightPoints, x, cb);\n } else {\n return reportRange(this.leftPoints, cb);\n }\n};\n\nproto.queryInterval = function (lo, hi, cb) {\n if (lo < this.mid && this.left) {\n var r = this.left.queryInterval(lo, hi, cb);\n if (r) {\n return r;\n }\n }\n if (hi > this.mid && this.right) {\n var r = this.right.queryInterval(lo, hi, cb);\n if (r) {\n return r;\n }\n }\n if (hi < this.mid) {\n return reportLeftRange(this.leftPoints, hi, cb);\n } else if (lo > this.mid) {\n return reportRightRange(this.rightPoints, lo, cb);\n } else {\n return reportRange(this.leftPoints, cb);\n }\n};\n\nfunction compareNumbers(a, b) {\n return a - b;\n}\n\nfunction compareBegin(a, b) {\n var d = a[0] - b[0];\n if (d) {\n return d;\n }\n return a[1] - b[1];\n}\n\nfunction compareEnd(a, b) {\n var d = a[1] - b[1];\n if (d) {\n return d;\n }\n return a[0] - b[0];\n}\n\nfunction createIntervalTree(intervals) {\n if (intervals.length === 0) {\n return null;\n }\n var pts = [];\n for (var i = 0; i < intervals.length; ++i) {\n pts.push(intervals[i][0], intervals[i][1]);\n }\n pts.sort(compareNumbers);\n\n var mid = pts[pts.length >> 1];\n\n var leftIntervals = [];\n var rightIntervals = [];\n var centerIntervals = [];\n for (var i = 0; i < intervals.length; ++i) {\n var s = intervals[i];\n if (s[1] < mid) {\n leftIntervals.push(s);\n } else if (mid < s[0]) {\n rightIntervals.push(s);\n } else {\n centerIntervals.push(s);\n }\n }\n\n //Split center intervals\n var leftPoints = centerIntervals;\n var rightPoints = centerIntervals.slice();\n leftPoints.sort(compareBegin);\n rightPoints.sort(compareEnd);\n\n return new IntervalTreeNode(mid, createIntervalTree(leftIntervals), createIntervalTree(rightIntervals), leftPoints, rightPoints);\n}\n\n//User friendly wrapper that makes it possible to support empty trees\nfunction IntervalTree(root) {\n this.root = root;\n}\n\nvar tproto = IntervalTree.prototype;\n\ntproto.insert = function (interval) {\n if (this.root) {\n this.root.insert(interval);\n } else {\n this.root = new IntervalTreeNode(interval[0], null, null, [interval], [interval]);\n }\n};\n\ntproto.remove = function (interval) {\n if (this.root) {\n var r = this.root.remove(interval);\n if (r === EMPTY) {\n this.root = null;\n }\n return r !== NOT_FOUND;\n }\n return false;\n};\n\ntproto.queryPoint = function (p, cb) {\n if (this.root) {\n return this.root.queryPoint(p, cb);\n }\n};\n\ntproto.queryInterval = function (lo, hi, cb) {\n if (lo <= hi && this.root) {\n return this.root.queryInterval(lo, hi, cb);\n }\n};\n\nObject.defineProperty(tproto, 'count', {\n get: function get() {\n if (this.root) {\n return this.root.count;\n }\n return 0;\n }\n});\n\nObject.defineProperty(tproto, 'intervals', {\n get: function get() {\n if (this.root) {\n return this.root.intervals([]);\n }\n return [];\n }\n});\n\nexport default function createWrapper(intervals) {\n if (!intervals || intervals.length === 0) {\n return new IntervalTree(null);\n }\n return new IntervalTree(createIntervalTree(intervals));\n}","import _slicedToArray from 'babel-runtime/helpers/slicedToArray';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport createIntervalTree from '../vendor/intervalTree';\n\n// Position cache requirements:\n// O(log(n)) lookup of cells to render for a given viewport size\n// O(1) lookup of shortest measured column (so we know when to enter phase 1)\nvar PositionCache = function () {\n function PositionCache() {\n _classCallCheck(this, PositionCache);\n\n this._columnSizeMap = {};\n this._intervalTree = createIntervalTree();\n this._leftMap = {};\n }\n // Tracks the height of each column\n\n\n // Store tops and bottoms of each cell for fast intersection lookup.\n\n\n // Maps cell index to x coordinates for quick lookup.\n\n\n _createClass(PositionCache, [{\n key: 'estimateTotalHeight',\n value: function estimateTotalHeight(cellCount, columnCount, defaultCellHeight) {\n var unmeasuredCellCount = cellCount - this.count;\n return this.tallestColumnSize + Math.ceil(unmeasuredCellCount / columnCount) * defaultCellHeight;\n }\n\n // Render all cells visible within the viewport range defined.\n\n }, {\n key: 'range',\n value: function range(scrollTop, clientHeight, renderCallback) {\n var _this = this;\n\n this._intervalTree.queryInterval(scrollTop, scrollTop + clientHeight, function (_ref) {\n var _ref2 = _slicedToArray(_ref, 3),\n top = _ref2[0],\n _ = _ref2[1],\n index = _ref2[2];\n\n return renderCallback(index, _this._leftMap[index], top);\n });\n }\n }, {\n key: 'setPosition',\n value: function setPosition(index, left, top, height) {\n this._intervalTree.insert([top, top + height, index]);\n this._leftMap[index] = left;\n\n var columnSizeMap = this._columnSizeMap;\n var columnHeight = columnSizeMap[left];\n if (columnHeight === undefined) {\n columnSizeMap[left] = top + height;\n } else {\n columnSizeMap[left] = Math.max(columnHeight, top + height);\n }\n }\n }, {\n key: 'count',\n get: function get() {\n return this._intervalTree.count;\n }\n }, {\n key: 'shortestColumnSize',\n get: function get() {\n var columnSizeMap = this._columnSizeMap;\n\n var size = 0;\n\n for (var i in columnSizeMap) {\n var height = columnSizeMap[i];\n size = size === 0 ? height : Math.min(size, height);\n }\n\n return size;\n }\n }, {\n key: 'tallestColumnSize',\n get: function get() {\n var columnSizeMap = this._columnSizeMap;\n\n var size = 0;\n\n for (var i in columnSizeMap) {\n var height = columnSizeMap[i];\n size = Math.max(size, height);\n }\n\n return size;\n }\n }]);\n\n return PositionCache;\n}();\n\nexport default PositionCache;","import _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport clsx from 'clsx';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport PositionCache from './PositionCache';\nimport { requestAnimationTimeout, cancelAnimationTimeout } from '../utils/requestAnimationTimeout';\n\nvar emptyObject = {};\n\n/**\n * Specifies the number of miliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\nexport var DEFAULT_SCROLLING_RESET_TIME_INTERVAL = 150;\n\n/**\n * This component efficiently displays arbitrarily positioned cells using windowing techniques.\n * Cell position is determined by an injected `cellPositioner` property.\n * Windowing is vertical; this component does not support horizontal scrolling.\n *\n * Rendering occurs in two phases:\n * 1) First pass uses estimated cell sizes (provided by the cache) to determine how many cells to measure in a batch.\n * Batch size is chosen using a fast, naive layout algorithm that stacks images in order until the viewport has been filled.\n * After measurement is complete (componentDidMount or componentDidUpdate) this component evaluates positioned cells\n * in order to determine if another measurement pass is required (eg if actual cell sizes were less than estimated sizes).\n * All measurements are permanently cached (keyed by `keyMapper`) for performance purposes.\n * 2) Second pass uses the external `cellPositioner` to layout cells.\n * At this time the positioner has access to cached size measurements for all cells.\n * The positions it returns are cached by Masonry for fast access later.\n * Phase one is repeated if the user scrolls beyond the current layout's bounds.\n * If the layout is invalidated due to eg a resize, cached positions can be cleared using `recomputeCellPositions()`.\n *\n * Animation constraints:\n * Simple animations are supported (eg translate/slide into place on initial reveal).\n * More complex animations are not (eg flying from one position to another on resize).\n *\n * Layout constraints:\n * This component supports multi-column layout.\n * The height of each item may vary.\n * The width of each item must not exceed the width of the column it is \"in\".\n * The left position of all items within a column must align.\n * (Items may not span multiple columns.)\n */\n\nvar Masonry = function (_React$PureComponent) {\n _inherits(Masonry, _React$PureComponent);\n\n function Masonry() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Masonry);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Masonry.__proto__ || _Object$getPrototypeOf(Masonry)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n isScrolling: false,\n scrollTop: 0\n }, _this._invalidateOnUpdateStartIndex = null, _this._invalidateOnUpdateStopIndex = null, _this._positionCache = new PositionCache(), _this._startIndex = null, _this._startIndexMemoized = null, _this._stopIndex = null, _this._stopIndexMemoized = null, _this._debounceResetIsScrollingCallback = function () {\n _this.setState({\n isScrolling: false\n });\n }, _this._setScrollingContainerRef = function (ref) {\n _this._scrollingContainer = ref;\n }, _this._onScroll = function (event) {\n var height = _this.props.height;\n\n\n var eventScrollTop = event.target.scrollTop;\n\n // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n // This causes a series of rapid renders that is slow for long lists.\n // We can avoid that by doing some simple bounds checking to ensure that scroll offsets never exceed their bounds.\n var scrollTop = Math.min(Math.max(0, _this._getEstimatedTotalHeight() - height), eventScrollTop);\n\n // On iOS, we can arrive at negative offsets by swiping past the start or end.\n // Avoid re-rendering in this case as it can cause problems; see #532 for more.\n if (eventScrollTop !== scrollTop) {\n return;\n }\n\n // Prevent pointer events from interrupting a smooth scroll\n _this._debounceResetIsScrolling();\n\n // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n // Don't force a re-render if this is the case.\n // The mouse may move faster then the animation frame does.\n // Use requestAnimationFrame to avoid over-updating.\n if (_this.state.scrollTop !== scrollTop) {\n _this.setState({\n isScrolling: true,\n scrollTop: scrollTop\n });\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Masonry, [{\n key: 'clearCellPositions',\n value: function clearCellPositions() {\n this._positionCache = new PositionCache();\n this.forceUpdate();\n }\n\n // HACK This method signature was intended for Grid\n\n }, {\n key: 'invalidateCellSizeAfterRender',\n value: function invalidateCellSizeAfterRender(_ref2) {\n var index = _ref2.rowIndex;\n\n if (this._invalidateOnUpdateStartIndex === null) {\n this._invalidateOnUpdateStartIndex = index;\n this._invalidateOnUpdateStopIndex = index;\n } else {\n this._invalidateOnUpdateStartIndex = Math.min(this._invalidateOnUpdateStartIndex, index);\n this._invalidateOnUpdateStopIndex = Math.max(this._invalidateOnUpdateStopIndex, index);\n }\n }\n }, {\n key: 'recomputeCellPositions',\n value: function recomputeCellPositions() {\n var stopIndex = this._positionCache.count - 1;\n\n this._positionCache = new PositionCache();\n this._populatePositionCache(0, stopIndex);\n\n this.forceUpdate();\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this._checkInvalidateOnUpdate();\n this._invokeOnScrollCallback();\n this._invokeOnCellsRenderedCallback();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n this._checkInvalidateOnUpdate();\n this._invokeOnScrollCallback();\n this._invokeOnCellsRenderedCallback();\n\n if (this.props.scrollTop !== prevProps.scrollTop) {\n this._debounceResetIsScrolling();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this._debounceResetIsScrollingId) {\n cancelAnimationTimeout(this._debounceResetIsScrollingId);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n autoHeight = _props.autoHeight,\n cellCount = _props.cellCount,\n cellMeasurerCache = _props.cellMeasurerCache,\n cellRenderer = _props.cellRenderer,\n className = _props.className,\n height = _props.height,\n id = _props.id,\n keyMapper = _props.keyMapper,\n overscanByPixels = _props.overscanByPixels,\n role = _props.role,\n style = _props.style,\n tabIndex = _props.tabIndex,\n width = _props.width,\n rowDirection = _props.rowDirection;\n var _state = this.state,\n isScrolling = _state.isScrolling,\n scrollTop = _state.scrollTop;\n\n\n var children = [];\n\n var estimateTotalHeight = this._getEstimatedTotalHeight();\n\n var shortestColumnSize = this._positionCache.shortestColumnSize;\n var measuredCellCount = this._positionCache.count;\n\n var startIndex = 0;\n var stopIndex = void 0;\n\n this._positionCache.range(Math.max(0, scrollTop - overscanByPixels), height + overscanByPixels * 2, function (index, left, top) {\n var _style;\n\n if (typeof stopIndex === 'undefined') {\n startIndex = index;\n stopIndex = index;\n } else {\n startIndex = Math.min(startIndex, index);\n stopIndex = Math.max(stopIndex, index);\n }\n\n children.push(cellRenderer({\n index: index,\n isScrolling: isScrolling,\n key: keyMapper(index),\n parent: _this2,\n style: (_style = {\n height: cellMeasurerCache.getHeight(index)\n }, _defineProperty(_style, rowDirection === 'ltr' ? 'left' : 'right', left), _defineProperty(_style, 'position', 'absolute'), _defineProperty(_style, 'top', top), _defineProperty(_style, 'width', cellMeasurerCache.getWidth(index)), _style)\n }));\n });\n\n // We need to measure additional cells for this layout\n if (shortestColumnSize < scrollTop + height + overscanByPixels && measuredCellCount < cellCount) {\n var batchSize = Math.min(cellCount - measuredCellCount, Math.ceil((scrollTop + height + overscanByPixels - shortestColumnSize) / cellMeasurerCache.defaultHeight * width / cellMeasurerCache.defaultWidth));\n\n for (var _index = measuredCellCount; _index < measuredCellCount + batchSize; _index++) {\n stopIndex = _index;\n\n children.push(cellRenderer({\n index: _index,\n isScrolling: isScrolling,\n key: keyMapper(_index),\n parent: this,\n style: {\n width: cellMeasurerCache.getWidth(_index)\n }\n }));\n }\n }\n\n this._startIndex = startIndex;\n this._stopIndex = stopIndex;\n\n return React.createElement(\n 'div',\n {\n ref: this._setScrollingContainerRef,\n 'aria-label': this.props['aria-label'],\n className: clsx('ReactVirtualized__Masonry', className),\n id: id,\n onScroll: this._onScroll,\n role: role,\n style: _extends({\n boxSizing: 'border-box',\n direction: 'ltr',\n height: autoHeight ? 'auto' : height,\n overflowX: 'hidden',\n overflowY: estimateTotalHeight < height ? 'hidden' : 'auto',\n position: 'relative',\n width: width,\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform'\n }, style),\n tabIndex: tabIndex },\n React.createElement(\n 'div',\n {\n className: 'ReactVirtualized__Masonry__innerScrollContainer',\n style: {\n width: '100%',\n height: estimateTotalHeight,\n maxWidth: '100%',\n maxHeight: estimateTotalHeight,\n overflow: 'hidden',\n pointerEvents: isScrolling ? 'none' : '',\n position: 'relative'\n } },\n children\n )\n );\n }\n }, {\n key: '_checkInvalidateOnUpdate',\n value: function _checkInvalidateOnUpdate() {\n if (typeof this._invalidateOnUpdateStartIndex === 'number') {\n var _startIndex = this._invalidateOnUpdateStartIndex;\n var _stopIndex = this._invalidateOnUpdateStopIndex;\n\n this._invalidateOnUpdateStartIndex = null;\n this._invalidateOnUpdateStopIndex = null;\n\n // Query external layout logic for position of newly-measured cells\n this._populatePositionCache(_startIndex, _stopIndex);\n\n this.forceUpdate();\n }\n }\n }, {\n key: '_debounceResetIsScrolling',\n value: function _debounceResetIsScrolling() {\n var scrollingResetTimeInterval = this.props.scrollingResetTimeInterval;\n\n\n if (this._debounceResetIsScrollingId) {\n cancelAnimationTimeout(this._debounceResetIsScrollingId);\n }\n\n this._debounceResetIsScrollingId = requestAnimationTimeout(this._debounceResetIsScrollingCallback, scrollingResetTimeInterval);\n }\n }, {\n key: '_getEstimatedTotalHeight',\n value: function _getEstimatedTotalHeight() {\n var _props2 = this.props,\n cellCount = _props2.cellCount,\n cellMeasurerCache = _props2.cellMeasurerCache,\n width = _props2.width;\n\n\n var estimatedColumnCount = Math.max(1, Math.floor(width / cellMeasurerCache.defaultWidth));\n\n return this._positionCache.estimateTotalHeight(cellCount, estimatedColumnCount, cellMeasurerCache.defaultHeight);\n }\n }, {\n key: '_invokeOnScrollCallback',\n value: function _invokeOnScrollCallback() {\n var _props3 = this.props,\n height = _props3.height,\n onScroll = _props3.onScroll;\n var scrollTop = this.state.scrollTop;\n\n\n if (this._onScrollMemoized !== scrollTop) {\n onScroll({\n clientHeight: height,\n scrollHeight: this._getEstimatedTotalHeight(),\n scrollTop: scrollTop\n });\n\n this._onScrollMemoized = scrollTop;\n }\n }\n }, {\n key: '_invokeOnCellsRenderedCallback',\n value: function _invokeOnCellsRenderedCallback() {\n if (this._startIndexMemoized !== this._startIndex || this._stopIndexMemoized !== this._stopIndex) {\n var _onCellsRendered = this.props.onCellsRendered;\n\n\n _onCellsRendered({\n startIndex: this._startIndex,\n stopIndex: this._stopIndex\n });\n\n this._startIndexMemoized = this._startIndex;\n this._stopIndexMemoized = this._stopIndex;\n }\n }\n }, {\n key: '_populatePositionCache',\n value: function _populatePositionCache(startIndex, stopIndex) {\n var _props4 = this.props,\n cellMeasurerCache = _props4.cellMeasurerCache,\n cellPositioner = _props4.cellPositioner;\n\n\n for (var _index2 = startIndex; _index2 <= stopIndex; _index2++) {\n var _cellPositioner = cellPositioner(_index2),\n _left = _cellPositioner.left,\n _top = _cellPositioner.top;\n\n this._positionCache.setPosition(_index2, _left, _top, cellMeasurerCache.getHeight(_index2));\n }\n }\n }], [{\n key: 'getDerivedStateFromProps',\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.scrollTop !== undefined && prevState.scrollTop !== nextProps.scrollTop) {\n return {\n isScrolling: true,\n scrollTop: nextProps.scrollTop\n };\n }\n\n return null;\n }\n }]);\n\n return Masonry;\n}(React.PureComponent);\n\nMasonry.defaultProps = {\n autoHeight: false,\n keyMapper: identity,\n onCellsRendered: noop,\n onScroll: noop,\n overscanByPixels: 20,\n role: 'grid',\n scrollingResetTimeInterval: DEFAULT_SCROLLING_RESET_TIME_INTERVAL,\n style: emptyObject,\n tabIndex: 0,\n rowDirection: 'ltr'\n};\nMasonry.propTypes = process.env.NODE_ENV === 'production' ? null : {\n autoHeight: PropTypes.bool.isRequired,\n cellCount: PropTypes.number.isRequired,\n cellMeasurerCache: function cellMeasurerCache() {\n return (typeof CellMeasurerCache === 'function' ? PropTypes.instanceOf(CellMeasurerCache).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n cellPositioner: function cellPositioner() {\n return (typeof Positioner === 'function' ? PropTypes.instanceOf(Positioner).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n cellRenderer: function cellRenderer() {\n return (typeof CellRenderer === 'function' ? PropTypes.instanceOf(CellRenderer).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n className: PropTypes.string,\n height: PropTypes.number.isRequired,\n id: PropTypes.string,\n keyMapper: function keyMapper() {\n return (typeof KeyMapper === 'function' ? PropTypes.instanceOf(KeyMapper).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n onCellsRendered: function onCellsRendered() {\n return (typeof OnCellsRenderedCallback === 'function' ? PropTypes.instanceOf(OnCellsRenderedCallback) : PropTypes.any).apply(this, arguments);\n },\n onScroll: function onScroll() {\n return (typeof OnScrollCallback === 'function' ? PropTypes.instanceOf(OnScrollCallback) : PropTypes.any).apply(this, arguments);\n },\n overscanByPixels: PropTypes.number.isRequired,\n role: PropTypes.string.isRequired,\n scrollingResetTimeInterval: PropTypes.number.isRequired,\n style: function style(props, propName, componentName) {\n if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n throw new Error('Prop `' + propName + '` has type \\'any\\' or \\'mixed\\', but was not provided to `' + componentName + '`. Pass undefined or any other value.');\n }\n },\n tabIndex: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n rowDirection: PropTypes.string.isRequired\n};\n\n\nfunction identity(value) {\n return value;\n}\n\nfunction noop() {}\n\nvar bpfrpt_proptype_CellMeasurerCache = process.env.NODE_ENV === 'production' ? null : {\n defaultHeight: PropTypes.number.isRequired,\n defaultWidth: PropTypes.number.isRequired,\n getHeight: PropTypes.func.isRequired,\n getWidth: PropTypes.func.isRequired\n};\n\n\npolyfill(Masonry);\n\nexport default Masonry;\n\nvar bpfrpt_proptype_Positioner = process.env.NODE_ENV === 'production' ? null : PropTypes.func;\nimport { bpfrpt_proptype_AnimationTimeoutId } from '../utils/requestAnimationTimeout';\nimport PropTypes from 'prop-types';\nexport { bpfrpt_proptype_CellMeasurerCache };\nexport { bpfrpt_proptype_Positioner };","import createCellPositioner from './createCellPositioner';\nimport Masonry from './Masonry';\n\nexport default Masonry;\nexport { createCellPositioner, Masonry };","import _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport { CellMeasurerCache } from '../CellMeasurer';\n\n/**\n * Caches measurements for a given cell.\n */\nvar CellMeasurerCacheDecorator = function () {\n function CellMeasurerCacheDecorator() {\n var _this = this;\n\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, CellMeasurerCacheDecorator);\n\n this.columnWidth = function (_ref) {\n var index = _ref.index;\n\n _this._cellMeasurerCache.columnWidth({\n index: index + _this._columnIndexOffset\n });\n };\n\n this.rowHeight = function (_ref2) {\n var index = _ref2.index;\n\n _this._cellMeasurerCache.rowHeight({\n index: index + _this._rowIndexOffset\n });\n };\n\n var cellMeasurerCache = params.cellMeasurerCache,\n _params$columnIndexOf = params.columnIndexOffset,\n columnIndexOffset = _params$columnIndexOf === undefined ? 0 : _params$columnIndexOf,\n _params$rowIndexOffse = params.rowIndexOffset,\n rowIndexOffset = _params$rowIndexOffse === undefined ? 0 : _params$rowIndexOffse;\n\n\n this._cellMeasurerCache = cellMeasurerCache;\n this._columnIndexOffset = columnIndexOffset;\n this._rowIndexOffset = rowIndexOffset;\n }\n\n _createClass(CellMeasurerCacheDecorator, [{\n key: 'clear',\n value: function clear(rowIndex, columnIndex) {\n this._cellMeasurerCache.clear(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: 'clearAll',\n value: function clearAll() {\n this._cellMeasurerCache.clearAll();\n }\n }, {\n key: 'hasFixedHeight',\n value: function hasFixedHeight() {\n return this._cellMeasurerCache.hasFixedHeight();\n }\n }, {\n key: 'hasFixedWidth',\n value: function hasFixedWidth() {\n return this._cellMeasurerCache.hasFixedWidth();\n }\n }, {\n key: 'getHeight',\n value: function getHeight(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n return this._cellMeasurerCache.getHeight(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: 'getWidth',\n value: function getWidth(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n return this._cellMeasurerCache.getWidth(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: 'has',\n value: function has(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n return this._cellMeasurerCache.has(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: 'set',\n value: function set(rowIndex, columnIndex, width, height) {\n this._cellMeasurerCache.set(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset, width, height);\n }\n }, {\n key: 'defaultHeight',\n get: function get() {\n return this._cellMeasurerCache.defaultHeight;\n }\n }, {\n key: 'defaultWidth',\n get: function get() {\n return this._cellMeasurerCache.defaultWidth;\n }\n }]);\n\n return CellMeasurerCacheDecorator;\n}();\n\nexport default CellMeasurerCacheDecorator;","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport CellMeasurerCacheDecorator from './CellMeasurerCacheDecorator';\nimport Grid from '../Grid';\n\nvar SCROLLBAR_SIZE_BUFFER = 20;\n\n/**\n * Renders 1, 2, or 4 Grids depending on configuration.\n * A main (body) Grid will always be rendered.\n * Optionally, 1-2 Grids for sticky header rows will also be rendered.\n * If no sticky columns, only 1 sticky header Grid will be rendered.\n * If sticky columns, 2 sticky header Grids will be rendered.\n */\n\nvar MultiGrid = function (_React$PureComponent) {\n _inherits(MultiGrid, _React$PureComponent);\n\n function MultiGrid(props, context) {\n _classCallCheck(this, MultiGrid);\n\n var _this = _possibleConstructorReturn(this, (MultiGrid.__proto__ || _Object$getPrototypeOf(MultiGrid)).call(this, props, context));\n\n _initialiseProps.call(_this);\n\n var deferredMeasurementCache = props.deferredMeasurementCache,\n fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount;\n\n\n _this._maybeCalculateCachedStyles(true);\n\n if (deferredMeasurementCache) {\n _this._deferredMeasurementCacheBottomLeftGrid = fixedRowCount > 0 ? new CellMeasurerCacheDecorator({\n cellMeasurerCache: deferredMeasurementCache,\n columnIndexOffset: 0,\n rowIndexOffset: fixedRowCount\n }) : deferredMeasurementCache;\n\n _this._deferredMeasurementCacheBottomRightGrid = fixedColumnCount > 0 || fixedRowCount > 0 ? new CellMeasurerCacheDecorator({\n cellMeasurerCache: deferredMeasurementCache,\n columnIndexOffset: fixedColumnCount,\n rowIndexOffset: fixedRowCount\n }) : deferredMeasurementCache;\n\n _this._deferredMeasurementCacheTopRightGrid = fixedColumnCount > 0 ? new CellMeasurerCacheDecorator({\n cellMeasurerCache: deferredMeasurementCache,\n columnIndexOffset: fixedColumnCount,\n rowIndexOffset: 0\n }) : deferredMeasurementCache;\n }\n return _this;\n }\n\n _createClass(MultiGrid, [{\n key: 'forceUpdateGrids',\n value: function forceUpdateGrids() {\n this._bottomLeftGrid && this._bottomLeftGrid.forceUpdate();\n this._bottomRightGrid && this._bottomRightGrid.forceUpdate();\n this._topLeftGrid && this._topLeftGrid.forceUpdate();\n this._topRightGrid && this._topRightGrid.forceUpdate();\n }\n\n /** See Grid#invalidateCellSizeAfterRender */\n\n }, {\n key: 'invalidateCellSizeAfterRender',\n value: function invalidateCellSizeAfterRender() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$columnIndex = _ref.columnIndex,\n columnIndex = _ref$columnIndex === undefined ? 0 : _ref$columnIndex,\n _ref$rowIndex = _ref.rowIndex,\n rowIndex = _ref$rowIndex === undefined ? 0 : _ref$rowIndex;\n\n this._deferredInvalidateColumnIndex = typeof this._deferredInvalidateColumnIndex === 'number' ? Math.min(this._deferredInvalidateColumnIndex, columnIndex) : columnIndex;\n this._deferredInvalidateRowIndex = typeof this._deferredInvalidateRowIndex === 'number' ? Math.min(this._deferredInvalidateRowIndex, rowIndex) : rowIndex;\n }\n\n /** See Grid#measureAllCells */\n\n }, {\n key: 'measureAllCells',\n value: function measureAllCells() {\n this._bottomLeftGrid && this._bottomLeftGrid.measureAllCells();\n this._bottomRightGrid && this._bottomRightGrid.measureAllCells();\n this._topLeftGrid && this._topLeftGrid.measureAllCells();\n this._topRightGrid && this._topRightGrid.measureAllCells();\n }\n\n /** See Grid#recomputeGridSize */\n\n }, {\n key: 'recomputeGridSize',\n value: function recomputeGridSize() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$columnIndex = _ref2.columnIndex,\n columnIndex = _ref2$columnIndex === undefined ? 0 : _ref2$columnIndex,\n _ref2$rowIndex = _ref2.rowIndex,\n rowIndex = _ref2$rowIndex === undefined ? 0 : _ref2$rowIndex;\n\n var _props = this.props,\n fixedColumnCount = _props.fixedColumnCount,\n fixedRowCount = _props.fixedRowCount;\n\n\n var adjustedColumnIndex = Math.max(0, columnIndex - fixedColumnCount);\n var adjustedRowIndex = Math.max(0, rowIndex - fixedRowCount);\n\n this._bottomLeftGrid && this._bottomLeftGrid.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: adjustedRowIndex\n });\n this._bottomRightGrid && this._bottomRightGrid.recomputeGridSize({\n columnIndex: adjustedColumnIndex,\n rowIndex: adjustedRowIndex\n });\n this._topLeftGrid && this._topLeftGrid.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n this._topRightGrid && this._topRightGrid.recomputeGridSize({\n columnIndex: adjustedColumnIndex,\n rowIndex: rowIndex\n });\n\n this._leftGridWidth = null;\n this._topGridHeight = null;\n this._maybeCalculateCachedStyles(true);\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _props2 = this.props,\n scrollLeft = _props2.scrollLeft,\n scrollTop = _props2.scrollTop;\n\n\n if (scrollLeft > 0 || scrollTop > 0) {\n var newState = {};\n\n if (scrollLeft > 0) {\n newState.scrollLeft = scrollLeft;\n }\n\n if (scrollTop > 0) {\n newState.scrollTop = scrollTop;\n }\n\n this.setState(newState);\n }\n this._handleInvalidatedGridSize();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this._handleInvalidatedGridSize();\n }\n }, {\n key: 'render',\n value: function render() {\n var _props3 = this.props,\n onScroll = _props3.onScroll,\n onSectionRendered = _props3.onSectionRendered,\n onScrollbarPresenceChange = _props3.onScrollbarPresenceChange,\n scrollLeftProp = _props3.scrollLeft,\n scrollToColumn = _props3.scrollToColumn,\n scrollTopProp = _props3.scrollTop,\n scrollToRow = _props3.scrollToRow,\n rest = _objectWithoutProperties(_props3, ['onScroll', 'onSectionRendered', 'onScrollbarPresenceChange', 'scrollLeft', 'scrollToColumn', 'scrollTop', 'scrollToRow']);\n\n this._prepareForRender();\n\n // Don't render any of our Grids if there are no cells.\n // This mirrors what Grid does,\n // And prevents us from recording inaccurage measurements when used with CellMeasurer.\n if (this.props.width === 0 || this.props.height === 0) {\n return null;\n }\n\n // scrollTop and scrollLeft props are explicitly filtered out and ignored\n\n var _state = this.state,\n scrollLeft = _state.scrollLeft,\n scrollTop = _state.scrollTop;\n\n\n return React.createElement(\n 'div',\n { style: this._containerOuterStyle },\n React.createElement(\n 'div',\n { style: this._containerTopStyle },\n this._renderTopLeftGrid(rest),\n this._renderTopRightGrid(_extends({}, rest, {\n onScroll: onScroll,\n scrollLeft: scrollLeft\n }))\n ),\n React.createElement(\n 'div',\n { style: this._containerBottomStyle },\n this._renderBottomLeftGrid(_extends({}, rest, {\n onScroll: onScroll,\n scrollTop: scrollTop\n })),\n this._renderBottomRightGrid(_extends({}, rest, {\n onScroll: onScroll,\n onSectionRendered: onSectionRendered,\n scrollLeft: scrollLeft,\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow,\n scrollTop: scrollTop\n }))\n )\n );\n }\n }, {\n key: '_getBottomGridHeight',\n value: function _getBottomGridHeight(props) {\n var height = props.height;\n\n\n var topGridHeight = this._getTopGridHeight(props);\n\n return height - topGridHeight;\n }\n }, {\n key: '_getLeftGridWidth',\n value: function _getLeftGridWidth(props) {\n var fixedColumnCount = props.fixedColumnCount,\n columnWidth = props.columnWidth;\n\n\n if (this._leftGridWidth == null) {\n if (typeof columnWidth === 'function') {\n var leftGridWidth = 0;\n\n for (var index = 0; index < fixedColumnCount; index++) {\n leftGridWidth += columnWidth({ index: index });\n }\n\n this._leftGridWidth = leftGridWidth;\n } else {\n this._leftGridWidth = columnWidth * fixedColumnCount;\n }\n }\n\n return this._leftGridWidth;\n }\n }, {\n key: '_getRightGridWidth',\n value: function _getRightGridWidth(props) {\n var width = props.width;\n\n\n var leftGridWidth = this._getLeftGridWidth(props);\n\n return width - leftGridWidth;\n }\n }, {\n key: '_getTopGridHeight',\n value: function _getTopGridHeight(props) {\n var fixedRowCount = props.fixedRowCount,\n rowHeight = props.rowHeight;\n\n\n if (this._topGridHeight == null) {\n if (typeof rowHeight === 'function') {\n var topGridHeight = 0;\n\n for (var index = 0; index < fixedRowCount; index++) {\n topGridHeight += rowHeight({ index: index });\n }\n\n this._topGridHeight = topGridHeight;\n } else {\n this._topGridHeight = rowHeight * fixedRowCount;\n }\n }\n\n return this._topGridHeight;\n }\n }, {\n key: '_handleInvalidatedGridSize',\n value: function _handleInvalidatedGridSize() {\n if (typeof this._deferredInvalidateColumnIndex === 'number') {\n var columnIndex = this._deferredInvalidateColumnIndex;\n var rowIndex = this._deferredInvalidateRowIndex;\n\n this._deferredInvalidateColumnIndex = null;\n this._deferredInvalidateRowIndex = null;\n\n this.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n this.forceUpdate();\n }\n }\n\n /**\n * Avoid recreating inline styles each render; this bypasses Grid's shallowCompare.\n * This method recalculates styles only when specific props change.\n */\n\n }, {\n key: '_maybeCalculateCachedStyles',\n value: function _maybeCalculateCachedStyles(resetAll) {\n var _props4 = this.props,\n columnWidth = _props4.columnWidth,\n enableFixedColumnScroll = _props4.enableFixedColumnScroll,\n enableFixedRowScroll = _props4.enableFixedRowScroll,\n height = _props4.height,\n fixedColumnCount = _props4.fixedColumnCount,\n fixedRowCount = _props4.fixedRowCount,\n rowHeight = _props4.rowHeight,\n style = _props4.style,\n styleBottomLeftGrid = _props4.styleBottomLeftGrid,\n styleBottomRightGrid = _props4.styleBottomRightGrid,\n styleTopLeftGrid = _props4.styleTopLeftGrid,\n styleTopRightGrid = _props4.styleTopRightGrid,\n width = _props4.width;\n\n\n var sizeChange = resetAll || height !== this._lastRenderedHeight || width !== this._lastRenderedWidth;\n var leftSizeChange = resetAll || columnWidth !== this._lastRenderedColumnWidth || fixedColumnCount !== this._lastRenderedFixedColumnCount;\n var topSizeChange = resetAll || fixedRowCount !== this._lastRenderedFixedRowCount || rowHeight !== this._lastRenderedRowHeight;\n\n if (resetAll || sizeChange || style !== this._lastRenderedStyle) {\n this._containerOuterStyle = _extends({\n height: height,\n overflow: 'visible', // Let :focus outline show through\n width: width\n }, style);\n }\n\n if (resetAll || sizeChange || topSizeChange) {\n this._containerTopStyle = {\n height: this._getTopGridHeight(this.props),\n position: 'relative',\n width: width\n };\n\n this._containerBottomStyle = {\n height: height - this._getTopGridHeight(this.props),\n overflow: 'visible', // Let :focus outline show through\n position: 'relative',\n width: width\n };\n }\n\n if (resetAll || styleBottomLeftGrid !== this._lastRenderedStyleBottomLeftGrid) {\n this._bottomLeftGridStyle = _extends({\n left: 0,\n overflowX: 'hidden',\n overflowY: enableFixedColumnScroll ? 'auto' : 'hidden',\n position: 'absolute'\n }, styleBottomLeftGrid);\n }\n\n if (resetAll || leftSizeChange || styleBottomRightGrid !== this._lastRenderedStyleBottomRightGrid) {\n this._bottomRightGridStyle = _extends({\n left: this._getLeftGridWidth(this.props),\n position: 'absolute'\n }, styleBottomRightGrid);\n }\n\n if (resetAll || styleTopLeftGrid !== this._lastRenderedStyleTopLeftGrid) {\n this._topLeftGridStyle = _extends({\n left: 0,\n overflowX: 'hidden',\n overflowY: 'hidden',\n position: 'absolute',\n top: 0\n }, styleTopLeftGrid);\n }\n\n if (resetAll || leftSizeChange || styleTopRightGrid !== this._lastRenderedStyleTopRightGrid) {\n this._topRightGridStyle = _extends({\n left: this._getLeftGridWidth(this.props),\n overflowX: enableFixedRowScroll ? 'auto' : 'hidden',\n overflowY: 'hidden',\n position: 'absolute',\n top: 0\n }, styleTopRightGrid);\n }\n\n this._lastRenderedColumnWidth = columnWidth;\n this._lastRenderedFixedColumnCount = fixedColumnCount;\n this._lastRenderedFixedRowCount = fixedRowCount;\n this._lastRenderedHeight = height;\n this._lastRenderedRowHeight = rowHeight;\n this._lastRenderedStyle = style;\n this._lastRenderedStyleBottomLeftGrid = styleBottomLeftGrid;\n this._lastRenderedStyleBottomRightGrid = styleBottomRightGrid;\n this._lastRenderedStyleTopLeftGrid = styleTopLeftGrid;\n this._lastRenderedStyleTopRightGrid = styleTopRightGrid;\n this._lastRenderedWidth = width;\n }\n }, {\n key: '_prepareForRender',\n value: function _prepareForRender() {\n if (this._lastRenderedColumnWidth !== this.props.columnWidth || this._lastRenderedFixedColumnCount !== this.props.fixedColumnCount) {\n this._leftGridWidth = null;\n }\n\n if (this._lastRenderedFixedRowCount !== this.props.fixedRowCount || this._lastRenderedRowHeight !== this.props.rowHeight) {\n this._topGridHeight = null;\n }\n\n this._maybeCalculateCachedStyles();\n\n this._lastRenderedColumnWidth = this.props.columnWidth;\n this._lastRenderedFixedColumnCount = this.props.fixedColumnCount;\n this._lastRenderedFixedRowCount = this.props.fixedRowCount;\n this._lastRenderedRowHeight = this.props.rowHeight;\n }\n }, {\n key: '_renderBottomLeftGrid',\n value: function _renderBottomLeftGrid(props) {\n var enableFixedColumnScroll = props.enableFixedColumnScroll,\n fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount,\n rowCount = props.rowCount,\n hideBottomLeftGridScrollbar = props.hideBottomLeftGridScrollbar;\n var showVerticalScrollbar = this.state.showVerticalScrollbar;\n\n\n if (!fixedColumnCount) {\n return null;\n }\n\n var additionalRowCount = showVerticalScrollbar ? 1 : 0,\n height = this._getBottomGridHeight(props),\n width = this._getLeftGridWidth(props),\n scrollbarSize = this.state.showVerticalScrollbar ? this.state.scrollbarSize : 0,\n gridWidth = hideBottomLeftGridScrollbar ? width + scrollbarSize : width;\n\n var bottomLeftGrid = React.createElement(Grid, _extends({}, props, {\n cellRenderer: this._cellRendererBottomLeftGrid,\n className: this.props.classNameBottomLeftGrid,\n columnCount: fixedColumnCount,\n deferredMeasurementCache: this._deferredMeasurementCacheBottomLeftGrid,\n height: height,\n onScroll: enableFixedColumnScroll ? this._onScrollTop : undefined,\n ref: this._bottomLeftGridRef,\n rowCount: Math.max(0, rowCount - fixedRowCount) + additionalRowCount,\n rowHeight: this._rowHeightBottomGrid,\n style: this._bottomLeftGridStyle,\n tabIndex: null,\n width: gridWidth\n }));\n\n if (hideBottomLeftGridScrollbar) {\n return React.createElement(\n 'div',\n {\n className: 'BottomLeftGrid_ScrollWrapper',\n style: _extends({}, this._bottomLeftGridStyle, {\n height: height,\n width: width,\n overflowY: 'hidden'\n }) },\n bottomLeftGrid\n );\n }\n return bottomLeftGrid;\n }\n }, {\n key: '_renderBottomRightGrid',\n value: function _renderBottomRightGrid(props) {\n var columnCount = props.columnCount,\n fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount,\n rowCount = props.rowCount,\n scrollToColumn = props.scrollToColumn,\n scrollToRow = props.scrollToRow;\n\n\n return React.createElement(Grid, _extends({}, props, {\n cellRenderer: this._cellRendererBottomRightGrid,\n className: this.props.classNameBottomRightGrid,\n columnCount: Math.max(0, columnCount - fixedColumnCount),\n columnWidth: this._columnWidthRightGrid,\n deferredMeasurementCache: this._deferredMeasurementCacheBottomRightGrid,\n height: this._getBottomGridHeight(props),\n onScroll: this._onScroll,\n onScrollbarPresenceChange: this._onScrollbarPresenceChange,\n ref: this._bottomRightGridRef,\n rowCount: Math.max(0, rowCount - fixedRowCount),\n rowHeight: this._rowHeightBottomGrid,\n scrollToColumn: scrollToColumn - fixedColumnCount,\n scrollToRow: scrollToRow - fixedRowCount,\n style: this._bottomRightGridStyle,\n width: this._getRightGridWidth(props)\n }));\n }\n }, {\n key: '_renderTopLeftGrid',\n value: function _renderTopLeftGrid(props) {\n var fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount;\n\n\n if (!fixedColumnCount || !fixedRowCount) {\n return null;\n }\n\n return React.createElement(Grid, _extends({}, props, {\n className: this.props.classNameTopLeftGrid,\n columnCount: fixedColumnCount,\n height: this._getTopGridHeight(props),\n ref: this._topLeftGridRef,\n rowCount: fixedRowCount,\n style: this._topLeftGridStyle,\n tabIndex: null,\n width: this._getLeftGridWidth(props)\n }));\n }\n }, {\n key: '_renderTopRightGrid',\n value: function _renderTopRightGrid(props) {\n var columnCount = props.columnCount,\n enableFixedRowScroll = props.enableFixedRowScroll,\n fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount,\n scrollLeft = props.scrollLeft,\n hideTopRightGridScrollbar = props.hideTopRightGridScrollbar;\n var _state2 = this.state,\n showHorizontalScrollbar = _state2.showHorizontalScrollbar,\n scrollbarSize = _state2.scrollbarSize;\n\n\n if (!fixedRowCount) {\n return null;\n }\n\n var additionalColumnCount = showHorizontalScrollbar ? 1 : 0,\n height = this._getTopGridHeight(props),\n width = this._getRightGridWidth(props),\n additionalHeight = showHorizontalScrollbar ? scrollbarSize : 0;\n\n var gridHeight = height,\n style = this._topRightGridStyle;\n\n if (hideTopRightGridScrollbar) {\n gridHeight = height + additionalHeight;\n style = _extends({}, this._topRightGridStyle, {\n left: 0\n });\n }\n\n var topRightGrid = React.createElement(Grid, _extends({}, props, {\n cellRenderer: this._cellRendererTopRightGrid,\n className: this.props.classNameTopRightGrid,\n columnCount: Math.max(0, columnCount - fixedColumnCount) + additionalColumnCount,\n columnWidth: this._columnWidthRightGrid,\n deferredMeasurementCache: this._deferredMeasurementCacheTopRightGrid,\n height: gridHeight,\n onScroll: enableFixedRowScroll ? this._onScrollLeft : undefined,\n ref: this._topRightGridRef,\n rowCount: fixedRowCount,\n scrollLeft: scrollLeft,\n style: style,\n tabIndex: null,\n width: width\n }));\n\n if (hideTopRightGridScrollbar) {\n return React.createElement(\n 'div',\n {\n className: 'TopRightGrid_ScrollWrapper',\n style: _extends({}, this._topRightGridStyle, {\n height: height,\n width: width,\n overflowX: 'hidden'\n }) },\n topRightGrid\n );\n }\n return topRightGrid;\n }\n }], [{\n key: 'getDerivedStateFromProps',\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.scrollLeft !== prevState.scrollLeft || nextProps.scrollTop !== prevState.scrollTop) {\n return {\n scrollLeft: nextProps.scrollLeft != null && nextProps.scrollLeft >= 0 ? nextProps.scrollLeft : prevState.scrollLeft,\n scrollTop: nextProps.scrollTop != null && nextProps.scrollTop >= 0 ? nextProps.scrollTop : prevState.scrollTop\n };\n }\n\n return null;\n }\n }]);\n\n return MultiGrid;\n}(React.PureComponent);\n\nMultiGrid.defaultProps = {\n classNameBottomLeftGrid: '',\n classNameBottomRightGrid: '',\n classNameTopLeftGrid: '',\n classNameTopRightGrid: '',\n enableFixedColumnScroll: false,\n enableFixedRowScroll: false,\n fixedColumnCount: 0,\n fixedRowCount: 0,\n scrollToColumn: -1,\n scrollToRow: -1,\n style: {},\n styleBottomLeftGrid: {},\n styleBottomRightGrid: {},\n styleTopLeftGrid: {},\n styleTopRightGrid: {},\n hideTopRightGridScrollbar: false,\n hideBottomLeftGridScrollbar: false\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.state = {\n scrollLeft: 0,\n scrollTop: 0,\n scrollbarSize: 0,\n showHorizontalScrollbar: false,\n showVerticalScrollbar: false\n };\n this._deferredInvalidateColumnIndex = null;\n this._deferredInvalidateRowIndex = null;\n\n this._bottomLeftGridRef = function (ref) {\n _this2._bottomLeftGrid = ref;\n };\n\n this._bottomRightGridRef = function (ref) {\n _this2._bottomRightGrid = ref;\n };\n\n this._cellRendererBottomLeftGrid = function (_ref3) {\n var rowIndex = _ref3.rowIndex,\n rest = _objectWithoutProperties(_ref3, ['rowIndex']);\n\n var _props5 = _this2.props,\n cellRenderer = _props5.cellRenderer,\n fixedRowCount = _props5.fixedRowCount,\n rowCount = _props5.rowCount;\n\n\n if (rowIndex === rowCount - fixedRowCount) {\n return React.createElement('div', {\n key: rest.key,\n style: _extends({}, rest.style, {\n height: SCROLLBAR_SIZE_BUFFER\n })\n });\n } else {\n return cellRenderer(_extends({}, rest, {\n parent: _this2,\n rowIndex: rowIndex + fixedRowCount\n }));\n }\n };\n\n this._cellRendererBottomRightGrid = function (_ref4) {\n var columnIndex = _ref4.columnIndex,\n rowIndex = _ref4.rowIndex,\n rest = _objectWithoutProperties(_ref4, ['columnIndex', 'rowIndex']);\n\n var _props6 = _this2.props,\n cellRenderer = _props6.cellRenderer,\n fixedColumnCount = _props6.fixedColumnCount,\n fixedRowCount = _props6.fixedRowCount;\n\n\n return cellRenderer(_extends({}, rest, {\n columnIndex: columnIndex + fixedColumnCount,\n parent: _this2,\n rowIndex: rowIndex + fixedRowCount\n }));\n };\n\n this._cellRendererTopRightGrid = function (_ref5) {\n var columnIndex = _ref5.columnIndex,\n rest = _objectWithoutProperties(_ref5, ['columnIndex']);\n\n var _props7 = _this2.props,\n cellRenderer = _props7.cellRenderer,\n columnCount = _props7.columnCount,\n fixedColumnCount = _props7.fixedColumnCount;\n\n\n if (columnIndex === columnCount - fixedColumnCount) {\n return React.createElement('div', {\n key: rest.key,\n style: _extends({}, rest.style, {\n width: SCROLLBAR_SIZE_BUFFER\n })\n });\n } else {\n return cellRenderer(_extends({}, rest, {\n columnIndex: columnIndex + fixedColumnCount,\n parent: _this2\n }));\n }\n };\n\n this._columnWidthRightGrid = function (_ref6) {\n var index = _ref6.index;\n var _props8 = _this2.props,\n columnCount = _props8.columnCount,\n fixedColumnCount = _props8.fixedColumnCount,\n columnWidth = _props8.columnWidth;\n var _state3 = _this2.state,\n scrollbarSize = _state3.scrollbarSize,\n showHorizontalScrollbar = _state3.showHorizontalScrollbar;\n\n // An extra cell is added to the count\n // This gives the smaller Grid extra room for offset,\n // In case the main (bottom right) Grid has a scrollbar\n // If no scrollbar, the extra space is overflow:hidden anyway\n\n if (showHorizontalScrollbar && index === columnCount - fixedColumnCount) {\n return scrollbarSize;\n }\n\n return typeof columnWidth === 'function' ? columnWidth({ index: index + fixedColumnCount }) : columnWidth;\n };\n\n this._onScroll = function (scrollInfo) {\n var scrollLeft = scrollInfo.scrollLeft,\n scrollTop = scrollInfo.scrollTop;\n\n _this2.setState({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n var onScroll = _this2.props.onScroll;\n if (onScroll) {\n onScroll(scrollInfo);\n }\n };\n\n this._onScrollbarPresenceChange = function (_ref7) {\n var horizontal = _ref7.horizontal,\n size = _ref7.size,\n vertical = _ref7.vertical;\n var _state4 = _this2.state,\n showHorizontalScrollbar = _state4.showHorizontalScrollbar,\n showVerticalScrollbar = _state4.showVerticalScrollbar;\n\n\n if (horizontal !== showHorizontalScrollbar || vertical !== showVerticalScrollbar) {\n _this2.setState({\n scrollbarSize: size,\n showHorizontalScrollbar: horizontal,\n showVerticalScrollbar: vertical\n });\n\n var onScrollbarPresenceChange = _this2.props.onScrollbarPresenceChange;\n\n if (typeof onScrollbarPresenceChange === 'function') {\n onScrollbarPresenceChange({\n horizontal: horizontal,\n size: size,\n vertical: vertical\n });\n }\n }\n };\n\n this._onScrollLeft = function (scrollInfo) {\n var scrollLeft = scrollInfo.scrollLeft;\n\n _this2._onScroll({\n scrollLeft: scrollLeft,\n scrollTop: _this2.state.scrollTop\n });\n };\n\n this._onScrollTop = function (scrollInfo) {\n var scrollTop = scrollInfo.scrollTop;\n\n _this2._onScroll({\n scrollTop: scrollTop,\n scrollLeft: _this2.state.scrollLeft\n });\n };\n\n this._rowHeightBottomGrid = function (_ref8) {\n var index = _ref8.index;\n var _props9 = _this2.props,\n fixedRowCount = _props9.fixedRowCount,\n rowCount = _props9.rowCount,\n rowHeight = _props9.rowHeight;\n var _state5 = _this2.state,\n scrollbarSize = _state5.scrollbarSize,\n showVerticalScrollbar = _state5.showVerticalScrollbar;\n\n // An extra cell is added to the count\n // This gives the smaller Grid extra room for offset,\n // In case the main (bottom right) Grid has a scrollbar\n // If no scrollbar, the extra space is overflow:hidden anyway\n\n if (showVerticalScrollbar && index === rowCount - fixedRowCount) {\n return scrollbarSize;\n }\n\n return typeof rowHeight === 'function' ? rowHeight({ index: index + fixedRowCount }) : rowHeight;\n };\n\n this._topLeftGridRef = function (ref) {\n _this2._topLeftGrid = ref;\n };\n\n this._topRightGridRef = function (ref) {\n _this2._topRightGrid = ref;\n };\n};\n\nMultiGrid.propTypes = process.env.NODE_ENV !== \"production\" ? {\n classNameBottomLeftGrid: PropTypes.string.isRequired,\n classNameBottomRightGrid: PropTypes.string.isRequired,\n classNameTopLeftGrid: PropTypes.string.isRequired,\n classNameTopRightGrid: PropTypes.string.isRequired,\n enableFixedColumnScroll: PropTypes.bool.isRequired,\n enableFixedRowScroll: PropTypes.bool.isRequired,\n fixedColumnCount: PropTypes.number.isRequired,\n fixedRowCount: PropTypes.number.isRequired,\n onScrollbarPresenceChange: PropTypes.func,\n style: PropTypes.object.isRequired,\n styleBottomLeftGrid: PropTypes.object.isRequired,\n styleBottomRightGrid: PropTypes.object.isRequired,\n styleTopLeftGrid: PropTypes.object.isRequired,\n styleTopRightGrid: PropTypes.object.isRequired,\n hideTopRightGridScrollbar: PropTypes.bool,\n hideBottomLeftGridScrollbar: PropTypes.bool\n} : {};\n\n\npolyfill(MultiGrid);\n\nexport default MultiGrid;","import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n\n/**\n * HOC that simplifies the process of synchronizing scrolling between two or more virtualized components.\n */\n\nvar ScrollSync = function (_React$PureComponent) {\n _inherits(ScrollSync, _React$PureComponent);\n\n function ScrollSync(props, context) {\n _classCallCheck(this, ScrollSync);\n\n var _this = _possibleConstructorReturn(this, (ScrollSync.__proto__ || _Object$getPrototypeOf(ScrollSync)).call(this, props, context));\n\n _this.state = {\n clientHeight: 0,\n clientWidth: 0,\n scrollHeight: 0,\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0\n };\n\n _this._onScroll = _this._onScroll.bind(_this);\n return _this;\n }\n\n _createClass(ScrollSync, [{\n key: 'render',\n value: function render() {\n var children = this.props.children;\n var _state = this.state,\n clientHeight = _state.clientHeight,\n clientWidth = _state.clientWidth,\n scrollHeight = _state.scrollHeight,\n scrollLeft = _state.scrollLeft,\n scrollTop = _state.scrollTop,\n scrollWidth = _state.scrollWidth;\n\n\n return children({\n clientHeight: clientHeight,\n clientWidth: clientWidth,\n onScroll: this._onScroll,\n scrollHeight: scrollHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: scrollWidth\n });\n }\n }, {\n key: '_onScroll',\n value: function _onScroll(_ref) {\n var clientHeight = _ref.clientHeight,\n clientWidth = _ref.clientWidth,\n scrollHeight = _ref.scrollHeight,\n scrollLeft = _ref.scrollLeft,\n scrollTop = _ref.scrollTop,\n scrollWidth = _ref.scrollWidth;\n\n this.setState({\n clientHeight: clientHeight,\n clientWidth: clientWidth,\n scrollHeight: scrollHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: scrollWidth\n });\n }\n }]);\n\n return ScrollSync;\n}(React.PureComponent);\n\nexport default ScrollSync;\nScrollSync.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Function responsible for rendering 2 or more virtualized components.\n * This function should implement the following signature:\n * ({ onScroll, scrollLeft, scrollTop }) => PropTypes.element\n */\n children: PropTypes.func.isRequired\n} : {};","import * as React from 'react';\n\n\nexport default function defaultHeaderRowRenderer(_ref) {\n var className = _ref.className,\n columns = _ref.columns,\n style = _ref.style;\n\n return React.createElement(\n 'div',\n { className: className, role: 'row', style: style },\n columns\n );\n}\ndefaultHeaderRowRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_HeaderRowRendererParams === PropTypes.any ? {} : bpfrpt_proptype_HeaderRowRendererParams;\nimport { bpfrpt_proptype_HeaderRowRendererParams } from './types';\nimport PropTypes from 'prop-types';","var SortDirection = {\n /**\n * Sort items in ascending order.\n * This means arranging from the lowest value to the highest (e.g. a-z, 0-9).\n */\n ASC: 'ASC',\n\n /**\n * Sort items in descending order.\n * This means arranging from the highest value to the lowest (e.g. z-a, 9-0).\n */\n DESC: 'DESC'\n};\n\nexport default SortDirection;","import clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport SortDirection from './SortDirection';\n\n/**\n * Displayed beside a header to indicate that a Table is currently sorted by this column.\n */\nexport default function SortIndicator(_ref) {\n var sortDirection = _ref.sortDirection;\n\n var classNames = clsx('ReactVirtualized__Table__sortableHeaderIcon', {\n 'ReactVirtualized__Table__sortableHeaderIcon--ASC': sortDirection === SortDirection.ASC,\n 'ReactVirtualized__Table__sortableHeaderIcon--DESC': sortDirection === SortDirection.DESC\n });\n\n return React.createElement(\n 'svg',\n { className: classNames, width: 18, height: 18, viewBox: '0 0 24 24' },\n sortDirection === SortDirection.ASC ? React.createElement('path', { d: 'M7 14l5-5 5 5z' }) : React.createElement('path', { d: 'M7 10l5 5 5-5z' }),\n React.createElement('path', { d: 'M0 0h24v24H0z', fill: 'none' })\n );\n}\n\nSortIndicator.propTypes = process.env.NODE_ENV !== \"production\" ? {\n sortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC])\n} : {};","import * as React from 'react';\nimport SortIndicator from './SortIndicator';\n\n\n/**\n * Default table header renderer.\n */\nexport default function defaultHeaderRenderer(_ref) {\n var dataKey = _ref.dataKey,\n label = _ref.label,\n sortBy = _ref.sortBy,\n sortDirection = _ref.sortDirection;\n\n var showSortIndicator = sortBy === dataKey;\n var children = [React.createElement(\n 'span',\n {\n className: 'ReactVirtualized__Table__headerTruncatedText',\n key: 'label',\n title: typeof label === 'string' ? label : null },\n label\n )];\n\n if (showSortIndicator) {\n children.push(React.createElement(SortIndicator, { key: 'SortIndicator', sortDirection: sortDirection }));\n }\n\n return children;\n}\ndefaultHeaderRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_HeaderRendererParams === PropTypes.any ? {} : bpfrpt_proptype_HeaderRendererParams;\nimport { bpfrpt_proptype_HeaderRendererParams } from './types';\nimport PropTypes from 'prop-types';","import _extends from 'babel-runtime/helpers/extends';\nimport * as React from 'react';\n\n\n/**\n * Default row renderer for Table.\n */\nexport default function defaultRowRenderer(_ref) {\n var className = _ref.className,\n columns = _ref.columns,\n index = _ref.index,\n key = _ref.key,\n onRowClick = _ref.onRowClick,\n onRowDoubleClick = _ref.onRowDoubleClick,\n onRowMouseOut = _ref.onRowMouseOut,\n onRowMouseOver = _ref.onRowMouseOver,\n onRowRightClick = _ref.onRowRightClick,\n rowData = _ref.rowData,\n style = _ref.style;\n\n var a11yProps = { 'aria-rowindex': index + 1 };\n\n if (onRowClick || onRowDoubleClick || onRowMouseOut || onRowMouseOver || onRowRightClick) {\n a11yProps['aria-label'] = 'row';\n a11yProps.tabIndex = 0;\n\n if (onRowClick) {\n a11yProps.onClick = function (event) {\n return onRowClick({ event: event, index: index, rowData: rowData });\n };\n }\n if (onRowDoubleClick) {\n a11yProps.onDoubleClick = function (event) {\n return onRowDoubleClick({ event: event, index: index, rowData: rowData });\n };\n }\n if (onRowMouseOut) {\n a11yProps.onMouseOut = function (event) {\n return onRowMouseOut({ event: event, index: index, rowData: rowData });\n };\n }\n if (onRowMouseOver) {\n a11yProps.onMouseOver = function (event) {\n return onRowMouseOver({ event: event, index: index, rowData: rowData });\n };\n }\n if (onRowRightClick) {\n a11yProps.onContextMenu = function (event) {\n return onRowRightClick({ event: event, index: index, rowData: rowData });\n };\n }\n }\n\n return React.createElement(\n 'div',\n _extends({}, a11yProps, {\n className: className,\n key: key,\n role: 'row',\n style: style }),\n columns\n );\n}\ndefaultRowRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_RowRendererParams === PropTypes.any ? {} : bpfrpt_proptype_RowRendererParams;\nimport { bpfrpt_proptype_RowRendererParams } from './types';\nimport PropTypes from 'prop-types';","import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport defaultHeaderRenderer from './defaultHeaderRenderer';\nimport defaultCellRenderer from './defaultCellRenderer';\nimport defaultCellDataGetter from './defaultCellDataGetter';\nimport SortDirection from './SortDirection';\n\n/**\n * Describes the header and cell contents of a table column.\n */\n\nvar Column = function (_React$Component) {\n _inherits(Column, _React$Component);\n\n function Column() {\n _classCallCheck(this, Column);\n\n return _possibleConstructorReturn(this, (Column.__proto__ || _Object$getPrototypeOf(Column)).apply(this, arguments));\n }\n\n return Column;\n}(React.Component);\n\nColumn.defaultProps = {\n cellDataGetter: defaultCellDataGetter,\n cellRenderer: defaultCellRenderer,\n defaultSortDirection: SortDirection.ASC,\n flexGrow: 0,\n flexShrink: 1,\n headerRenderer: defaultHeaderRenderer,\n style: {}\n};\nexport default Column;\nColumn.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** Optional aria-label value to set on the column header */\n 'aria-label': PropTypes.string,\n\n /**\n * Callback responsible for returning a cell's data, given its :dataKey\n * ({ columnData: any, dataKey: string, rowData: any }): any\n */\n cellDataGetter: PropTypes.func,\n\n /**\n * Callback responsible for rendering a cell's contents.\n * ({ cellData: any, columnData: any, dataKey: string, rowData: any, rowIndex: number }): node\n */\n cellRenderer: PropTypes.func,\n\n /** Optional CSS class to apply to cell */\n className: PropTypes.string,\n\n /** Optional additional data passed to this column's :cellDataGetter */\n columnData: PropTypes.object,\n\n /** Uniquely identifies the row-data attribute corresponding to this cell */\n dataKey: PropTypes.any.isRequired,\n\n /** Optional direction to be used when clicked the first time */\n defaultSortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC]),\n\n /** If sort is enabled for the table at large, disable it for this column */\n disableSort: PropTypes.bool,\n\n /** Flex grow style; defaults to 0 */\n flexGrow: PropTypes.number,\n\n /** Flex shrink style; defaults to 1 */\n flexShrink: PropTypes.number,\n\n /** Optional CSS class to apply to this column's header */\n headerClassName: PropTypes.string,\n\n /**\n * Optional callback responsible for rendering a column header contents.\n * ({ columnData: object, dataKey: string, disableSort: boolean, label: node, sortBy: string, sortDirection: string }): PropTypes.node\n */\n headerRenderer: PropTypes.func.isRequired,\n\n /** Optional inline style to apply to this column's header */\n headerStyle: PropTypes.object,\n\n /** Optional id to set on the column header */\n id: PropTypes.string,\n\n /** Header label for this column */\n label: PropTypes.node,\n\n /** Maximum width of column; this property will only be used if :flexGrow is > 0. */\n maxWidth: PropTypes.number,\n\n /** Minimum width of column. */\n minWidth: PropTypes.number,\n\n /** Optional inline style to apply to cell */\n style: PropTypes.object,\n\n /** Flex basis (width) for this column; This value can grow or shrink based on :flexGrow and :flexShrink properties. */\n width: PropTypes.number.isRequired\n} : {};","\n\n/**\n * Default accessor for returning a cell value for a given attribute.\n * This function expects to operate on either a vanilla Object or an Immutable Map.\n * You should override the column's cellDataGetter if your data is some other type of object.\n */\nexport default function defaultCellDataGetter(_ref) {\n var dataKey = _ref.dataKey,\n rowData = _ref.rowData;\n\n if (typeof rowData.get === 'function') {\n return rowData.get(dataKey);\n } else {\n return rowData[dataKey];\n }\n}\nimport { bpfrpt_proptype_CellDataGetterParams } from './types';","\n\n/**\n * Default cell renderer that displays an attribute as a simple string\n * You should override the column's cellRenderer if your data is some other type of object.\n */\nexport default function defaultCellRenderer(_ref) {\n var cellData = _ref.cellData;\n\n if (cellData == null) {\n return '';\n } else {\n return String(cellData);\n }\n}\nimport { bpfrpt_proptype_CellRendererParams } from './types';","import _extends from 'babel-runtime/helpers/extends';\nimport _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\n\n\nimport clsx from 'clsx';\n\nimport Column from './Column';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { findDOMNode } from 'react-dom';\nimport Grid, { accessibilityOverscanIndicesGetter } from '../Grid';\n\nimport defaultRowRenderer from './defaultRowRenderer';\nimport defaultHeaderRowRenderer from './defaultHeaderRowRenderer';\nimport SortDirection from './SortDirection';\n\n/**\n * Table component with fixed headers and virtualized rows for improved performance with large data sets.\n * This component expects explicit width, height, and padding parameters.\n */\n\nvar Table = function (_React$PureComponent) {\n _inherits(Table, _React$PureComponent);\n\n function Table(props) {\n _classCallCheck(this, Table);\n\n var _this = _possibleConstructorReturn(this, (Table.__proto__ || _Object$getPrototypeOf(Table)).call(this, props));\n\n _this.state = {\n scrollbarWidth: 0\n };\n\n _this._createColumn = _this._createColumn.bind(_this);\n _this._createRow = _this._createRow.bind(_this);\n _this._onScroll = _this._onScroll.bind(_this);\n _this._onSectionRendered = _this._onSectionRendered.bind(_this);\n _this._setRef = _this._setRef.bind(_this);\n return _this;\n }\n\n _createClass(Table, [{\n key: 'forceUpdateGrid',\n value: function forceUpdateGrid() {\n if (this.Grid) {\n this.Grid.forceUpdate();\n }\n }\n\n /** See Grid#getOffsetForCell */\n\n }, {\n key: 'getOffsetForRow',\n value: function getOffsetForRow(_ref) {\n var alignment = _ref.alignment,\n index = _ref.index;\n\n if (this.Grid) {\n var _Grid$getOffsetForCel = this.Grid.getOffsetForCell({\n alignment: alignment,\n rowIndex: index\n }),\n scrollTop = _Grid$getOffsetForCel.scrollTop;\n\n return scrollTop;\n }\n return 0;\n }\n\n /** CellMeasurer compatibility */\n\n }, {\n key: 'invalidateCellSizeAfterRender',\n value: function invalidateCellSizeAfterRender(_ref2) {\n var columnIndex = _ref2.columnIndex,\n rowIndex = _ref2.rowIndex;\n\n if (this.Grid) {\n this.Grid.invalidateCellSizeAfterRender({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n\n /** See Grid#measureAllCells */\n\n }, {\n key: 'measureAllRows',\n value: function measureAllRows() {\n if (this.Grid) {\n this.Grid.measureAllCells();\n }\n }\n\n /** CellMeasurer compatibility */\n\n }, {\n key: 'recomputeGridSize',\n value: function recomputeGridSize() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$columnIndex = _ref3.columnIndex,\n columnIndex = _ref3$columnIndex === undefined ? 0 : _ref3$columnIndex,\n _ref3$rowIndex = _ref3.rowIndex,\n rowIndex = _ref3$rowIndex === undefined ? 0 : _ref3$rowIndex;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n\n /** See Grid#recomputeGridSize */\n\n }, {\n key: 'recomputeRowHeights',\n value: function recomputeRowHeights() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: index\n });\n }\n }\n\n /** See Grid#scrollToPosition */\n\n }, {\n key: 'scrollToPosition',\n value: function scrollToPosition() {\n var scrollTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToPosition({ scrollTop: scrollTop });\n }\n }\n\n /** See Grid#scrollToCell */\n\n }, {\n key: 'scrollToRow',\n value: function scrollToRow() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToCell({\n columnIndex: 0,\n rowIndex: index\n });\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this._setScrollbarWidth();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this._setScrollbarWidth();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n children = _props.children,\n className = _props.className,\n disableHeader = _props.disableHeader,\n gridClassName = _props.gridClassName,\n gridStyle = _props.gridStyle,\n headerHeight = _props.headerHeight,\n headerRowRenderer = _props.headerRowRenderer,\n height = _props.height,\n id = _props.id,\n noRowsRenderer = _props.noRowsRenderer,\n rowClassName = _props.rowClassName,\n rowStyle = _props.rowStyle,\n scrollToIndex = _props.scrollToIndex,\n style = _props.style,\n width = _props.width;\n var scrollbarWidth = this.state.scrollbarWidth;\n\n\n var availableRowsHeight = disableHeader ? height : height - headerHeight;\n\n var rowClass = typeof rowClassName === 'function' ? rowClassName({ index: -1 }) : rowClassName;\n var rowStyleObject = typeof rowStyle === 'function' ? rowStyle({ index: -1 }) : rowStyle;\n\n // Precompute and cache column styles before rendering rows and columns to speed things up\n this._cachedColumnStyles = [];\n React.Children.toArray(children).forEach(function (column, index) {\n var flexStyles = _this2._getFlexStyleForColumn(column, column.props.style);\n\n _this2._cachedColumnStyles[index] = _extends({}, flexStyles, {\n overflow: 'hidden'\n });\n });\n\n // Note that we specify :rowCount, :scrollbarWidth, :sortBy, and :sortDirection as properties on Grid even though these have nothing to do with Grid.\n // This is done because Grid is a pure component and won't update unless its properties or state has changed.\n // Any property that should trigger a re-render of Grid then is specified here to avoid a stale display.\n return React.createElement(\n 'div',\n {\n 'aria-label': this.props['aria-label'],\n 'aria-labelledby': this.props['aria-labelledby'],\n 'aria-colcount': React.Children.toArray(children).length,\n 'aria-rowcount': this.props.rowCount,\n className: clsx('ReactVirtualized__Table', className),\n id: id,\n role: 'grid',\n style: style },\n !disableHeader && headerRowRenderer({\n className: clsx('ReactVirtualized__Table__headerRow', rowClass),\n columns: this._getHeaderColumns(),\n style: _extends({\n height: headerHeight,\n overflow: 'hidden',\n paddingRight: scrollbarWidth,\n width: width\n }, rowStyleObject)\n }),\n React.createElement(Grid, _extends({}, this.props, {\n autoContainerWidth: true,\n className: clsx('ReactVirtualized__Table__Grid', gridClassName),\n cellRenderer: this._createRow,\n columnWidth: width,\n columnCount: 1,\n height: availableRowsHeight,\n id: undefined,\n noContentRenderer: noRowsRenderer,\n onScroll: this._onScroll,\n onSectionRendered: this._onSectionRendered,\n ref: this._setRef,\n role: 'rowgroup',\n scrollbarWidth: scrollbarWidth,\n scrollToRow: scrollToIndex,\n style: _extends({}, gridStyle, {\n overflowX: 'hidden'\n })\n }))\n );\n }\n }, {\n key: '_createColumn',\n value: function _createColumn(_ref4) {\n var column = _ref4.column,\n columnIndex = _ref4.columnIndex,\n isScrolling = _ref4.isScrolling,\n parent = _ref4.parent,\n rowData = _ref4.rowData,\n rowIndex = _ref4.rowIndex;\n var onColumnClick = this.props.onColumnClick;\n var _column$props = column.props,\n cellDataGetter = _column$props.cellDataGetter,\n cellRenderer = _column$props.cellRenderer,\n className = _column$props.className,\n columnData = _column$props.columnData,\n dataKey = _column$props.dataKey,\n id = _column$props.id;\n\n\n var cellData = cellDataGetter({ columnData: columnData, dataKey: dataKey, rowData: rowData });\n var renderedCell = cellRenderer({\n cellData: cellData,\n columnData: columnData,\n columnIndex: columnIndex,\n dataKey: dataKey,\n isScrolling: isScrolling,\n parent: parent,\n rowData: rowData,\n rowIndex: rowIndex\n });\n\n var onClick = function onClick(event) {\n onColumnClick && onColumnClick({ columnData: columnData, dataKey: dataKey, event: event });\n };\n\n var style = this._cachedColumnStyles[columnIndex];\n\n var title = typeof renderedCell === 'string' ? renderedCell : null;\n\n // Avoid using object-spread syntax with multiple objects here,\n // Since it results in an extra method call to 'babel-runtime/helpers/extends'\n // See PR https://github.com/bvaughn/react-virtualized/pull/942\n return React.createElement(\n 'div',\n {\n 'aria-colindex': columnIndex + 1,\n 'aria-describedby': id,\n className: clsx('ReactVirtualized__Table__rowColumn', className),\n key: 'Row' + rowIndex + '-' + 'Col' + columnIndex,\n onClick: onClick,\n role: 'gridcell',\n style: style,\n title: title },\n renderedCell\n );\n }\n }, {\n key: '_createHeader',\n value: function _createHeader(_ref5) {\n var column = _ref5.column,\n index = _ref5.index;\n var _props2 = this.props,\n headerClassName = _props2.headerClassName,\n headerStyle = _props2.headerStyle,\n onHeaderClick = _props2.onHeaderClick,\n sort = _props2.sort,\n sortBy = _props2.sortBy,\n sortDirection = _props2.sortDirection;\n var _column$props2 = column.props,\n columnData = _column$props2.columnData,\n dataKey = _column$props2.dataKey,\n defaultSortDirection = _column$props2.defaultSortDirection,\n disableSort = _column$props2.disableSort,\n headerRenderer = _column$props2.headerRenderer,\n id = _column$props2.id,\n label = _column$props2.label;\n\n var sortEnabled = !disableSort && sort;\n\n var classNames = clsx('ReactVirtualized__Table__headerColumn', headerClassName, column.props.headerClassName, {\n ReactVirtualized__Table__sortableHeaderColumn: sortEnabled\n });\n var style = this._getFlexStyleForColumn(column, _extends({}, headerStyle, column.props.headerStyle));\n\n var renderedHeader = headerRenderer({\n columnData: columnData,\n dataKey: dataKey,\n disableSort: disableSort,\n label: label,\n sortBy: sortBy,\n sortDirection: sortDirection\n });\n\n var headerOnClick = void 0,\n headerOnKeyDown = void 0,\n headerTabIndex = void 0,\n headerAriaSort = void 0,\n headerAriaLabel = void 0;\n\n if (sortEnabled || onHeaderClick) {\n // If this is a sortable header, clicking it should update the table data's sorting.\n var isFirstTimeSort = sortBy !== dataKey;\n\n // If this is the firstTime sort of this column, use the column default sort order.\n // Otherwise, invert the direction of the sort.\n var newSortDirection = isFirstTimeSort ? defaultSortDirection : sortDirection === SortDirection.DESC ? SortDirection.ASC : SortDirection.DESC;\n\n var onClick = function onClick(event) {\n sortEnabled && sort({\n defaultSortDirection: defaultSortDirection,\n event: event,\n sortBy: dataKey,\n sortDirection: newSortDirection\n });\n onHeaderClick && onHeaderClick({ columnData: columnData, dataKey: dataKey, event: event });\n };\n\n var onKeyDown = function onKeyDown(event) {\n if (event.key === 'Enter' || event.key === ' ') {\n onClick(event);\n }\n };\n\n headerAriaLabel = column.props['aria-label'] || label || dataKey;\n headerAriaSort = 'none';\n headerTabIndex = 0;\n headerOnClick = onClick;\n headerOnKeyDown = onKeyDown;\n }\n\n if (sortBy === dataKey) {\n headerAriaSort = sortDirection === SortDirection.ASC ? 'ascending' : 'descending';\n }\n\n // Avoid using object-spread syntax with multiple objects here,\n // Since it results in an extra method call to 'babel-runtime/helpers/extends'\n // See PR https://github.com/bvaughn/react-virtualized/pull/942\n return React.createElement(\n 'div',\n {\n 'aria-label': headerAriaLabel,\n 'aria-sort': headerAriaSort,\n className: classNames,\n id: id,\n key: 'Header-Col' + index,\n onClick: headerOnClick,\n onKeyDown: headerOnKeyDown,\n role: 'columnheader',\n style: style,\n tabIndex: headerTabIndex },\n renderedHeader\n );\n }\n }, {\n key: '_createRow',\n value: function _createRow(_ref6) {\n var _this3 = this;\n\n var index = _ref6.rowIndex,\n isScrolling = _ref6.isScrolling,\n key = _ref6.key,\n parent = _ref6.parent,\n style = _ref6.style;\n var _props3 = this.props,\n children = _props3.children,\n onRowClick = _props3.onRowClick,\n onRowDoubleClick = _props3.onRowDoubleClick,\n onRowRightClick = _props3.onRowRightClick,\n onRowMouseOver = _props3.onRowMouseOver,\n onRowMouseOut = _props3.onRowMouseOut,\n rowClassName = _props3.rowClassName,\n rowGetter = _props3.rowGetter,\n rowRenderer = _props3.rowRenderer,\n rowStyle = _props3.rowStyle;\n var scrollbarWidth = this.state.scrollbarWidth;\n\n\n var rowClass = typeof rowClassName === 'function' ? rowClassName({ index: index }) : rowClassName;\n var rowStyleObject = typeof rowStyle === 'function' ? rowStyle({ index: index }) : rowStyle;\n var rowData = rowGetter({ index: index });\n\n var columns = React.Children.toArray(children).map(function (column, columnIndex) {\n return _this3._createColumn({\n column: column,\n columnIndex: columnIndex,\n isScrolling: isScrolling,\n parent: parent,\n rowData: rowData,\n rowIndex: index,\n scrollbarWidth: scrollbarWidth\n });\n });\n\n var className = clsx('ReactVirtualized__Table__row', rowClass);\n var flattenedStyle = _extends({}, style, {\n height: this._getRowHeight(index),\n overflow: 'hidden',\n paddingRight: scrollbarWidth\n }, rowStyleObject);\n\n return rowRenderer({\n className: className,\n columns: columns,\n index: index,\n isScrolling: isScrolling,\n key: key,\n onRowClick: onRowClick,\n onRowDoubleClick: onRowDoubleClick,\n onRowRightClick: onRowRightClick,\n onRowMouseOver: onRowMouseOver,\n onRowMouseOut: onRowMouseOut,\n rowData: rowData,\n style: flattenedStyle\n });\n }\n\n /**\n * Determines the flex-shrink, flex-grow, and width values for a cell (header or column).\n */\n\n }, {\n key: '_getFlexStyleForColumn',\n value: function _getFlexStyleForColumn(column) {\n var customStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var flexValue = column.props.flexGrow + ' ' + column.props.flexShrink + ' ' + column.props.width + 'px';\n\n var style = _extends({}, customStyle, {\n flex: flexValue,\n msFlex: flexValue,\n WebkitFlex: flexValue\n });\n\n if (column.props.maxWidth) {\n style.maxWidth = column.props.maxWidth;\n }\n\n if (column.props.minWidth) {\n style.minWidth = column.props.minWidth;\n }\n\n return style;\n }\n }, {\n key: '_getHeaderColumns',\n value: function _getHeaderColumns() {\n var _this4 = this;\n\n var _props4 = this.props,\n children = _props4.children,\n disableHeader = _props4.disableHeader;\n\n var items = disableHeader ? [] : React.Children.toArray(children);\n\n return items.map(function (column, index) {\n return _this4._createHeader({ column: column, index: index });\n });\n }\n }, {\n key: '_getRowHeight',\n value: function _getRowHeight(rowIndex) {\n var rowHeight = this.props.rowHeight;\n\n\n return typeof rowHeight === 'function' ? rowHeight({ index: rowIndex }) : rowHeight;\n }\n }, {\n key: '_onScroll',\n value: function _onScroll(_ref7) {\n var clientHeight = _ref7.clientHeight,\n scrollHeight = _ref7.scrollHeight,\n scrollTop = _ref7.scrollTop;\n var onScroll = this.props.onScroll;\n\n\n onScroll({ clientHeight: clientHeight, scrollHeight: scrollHeight, scrollTop: scrollTop });\n }\n }, {\n key: '_onSectionRendered',\n value: function _onSectionRendered(_ref8) {\n var rowOverscanStartIndex = _ref8.rowOverscanStartIndex,\n rowOverscanStopIndex = _ref8.rowOverscanStopIndex,\n rowStartIndex = _ref8.rowStartIndex,\n rowStopIndex = _ref8.rowStopIndex;\n var onRowsRendered = this.props.onRowsRendered;\n\n\n onRowsRendered({\n overscanStartIndex: rowOverscanStartIndex,\n overscanStopIndex: rowOverscanStopIndex,\n startIndex: rowStartIndex,\n stopIndex: rowStopIndex\n });\n }\n }, {\n key: '_setRef',\n value: function _setRef(ref) {\n this.Grid = ref;\n }\n }, {\n key: '_setScrollbarWidth',\n value: function _setScrollbarWidth() {\n if (this.Grid) {\n var _Grid = findDOMNode(this.Grid);\n var clientWidth = _Grid.clientWidth || 0;\n var offsetWidth = _Grid.offsetWidth || 0;\n var scrollbarWidth = offsetWidth - clientWidth;\n\n this.setState({ scrollbarWidth: scrollbarWidth });\n }\n }\n }]);\n\n return Table;\n}(React.PureComponent);\n\nTable.defaultProps = {\n disableHeader: false,\n estimatedRowSize: 30,\n headerHeight: 0,\n headerStyle: {},\n noRowsRenderer: function noRowsRenderer() {\n return null;\n },\n onRowsRendered: function onRowsRendered() {\n return null;\n },\n onScroll: function onScroll() {\n return null;\n },\n overscanIndicesGetter: accessibilityOverscanIndicesGetter,\n overscanRowCount: 10,\n rowRenderer: defaultRowRenderer,\n headerRowRenderer: defaultHeaderRowRenderer,\n rowStyle: {},\n scrollToAlignment: 'auto',\n scrollToIndex: -1,\n style: {}\n};\nexport default Table;\nTable.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** This is just set on the grid top element. */\n 'aria-label': PropTypes.string,\n\n /** This is just set on the grid top element. */\n 'aria-labelledby': PropTypes.string,\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height\n * of rows can stretch the window. Intended for use with WindowScroller\n */\n autoHeight: PropTypes.bool,\n\n /** One or more Columns describing the data displayed in this row */\n children: function children(props) {\n var children = React.Children.toArray(props.children);\n for (var i = 0; i < children.length; i++) {\n var childType = children[i].type;\n if (childType !== Column && !(childType.prototype instanceof Column)) {\n return new Error('Table only accepts children of type Column');\n }\n }\n },\n\n /** Optional CSS class name */\n className: PropTypes.string,\n\n /** Disable rendering the header at all */\n disableHeader: PropTypes.bool,\n\n /**\n * Used to estimate the total height of a Table before all of its rows have actually been measured.\n * The estimated total height is adjusted as rows are rendered.\n */\n estimatedRowSize: PropTypes.number.isRequired,\n\n /** Optional custom CSS class name to attach to inner Grid element. */\n gridClassName: PropTypes.string,\n\n /** Optional inline style to attach to inner Grid element. */\n gridStyle: PropTypes.object,\n\n /** Optional CSS class to apply to all column headers */\n headerClassName: PropTypes.string,\n\n /** Fixed height of header row */\n headerHeight: PropTypes.number.isRequired,\n\n /**\n * Responsible for rendering a table row given an array of columns:\n * Should implement the following interface: ({\n * className: string,\n * columns: any[],\n * style: any\n * }): PropTypes.node\n */\n headerRowRenderer: PropTypes.func,\n\n /** Optional custom inline style to attach to table header columns. */\n headerStyle: PropTypes.object,\n\n /** Fixed/available height for out DOM element */\n height: PropTypes.number.isRequired,\n\n /** Optional id */\n id: PropTypes.string,\n\n /** Optional renderer to be used in place of table body rows when rowCount is 0 */\n noRowsRenderer: PropTypes.func,\n\n /**\n * Optional callback when a column is clicked.\n * ({ columnData: any, dataKey: string }): void\n */\n onColumnClick: PropTypes.func,\n\n /**\n * Optional callback when a column's header is clicked.\n * ({ columnData: any, dataKey: string }): void\n */\n onHeaderClick: PropTypes.func,\n\n /**\n * Callback invoked when a user clicks on a table row.\n * ({ index: number }): void\n */\n onRowClick: PropTypes.func,\n\n /**\n * Callback invoked when a user double-clicks on a table row.\n * ({ index: number }): void\n */\n onRowDoubleClick: PropTypes.func,\n\n /**\n * Callback invoked when the mouse leaves a table row.\n * ({ index: number }): void\n */\n onRowMouseOut: PropTypes.func,\n\n /**\n * Callback invoked when a user moves the mouse over a table row.\n * ({ index: number }): void\n */\n onRowMouseOver: PropTypes.func,\n\n /**\n * Callback invoked when a user right-clicks on a table row.\n * ({ index: number }): void\n */\n onRowRightClick: PropTypes.func,\n\n /**\n * Callback invoked with information about the slice of rows that were just rendered.\n * ({ startIndex, stopIndex }): void\n */\n onRowsRendered: PropTypes.func,\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n * ({ clientHeight, scrollHeight, scrollTop }): void\n */\n onScroll: PropTypes.func.isRequired,\n\n /** See Grid#overscanIndicesGetter */\n overscanIndicesGetter: PropTypes.func.isRequired,\n\n /**\n * Number of rows to render above/below the visible bounds of the list.\n * These rows can help for smoother scrolling on touch devices.\n */\n overscanRowCount: PropTypes.number.isRequired,\n\n /**\n * Optional CSS class to apply to all table rows (including the header row).\n * This property can be a CSS class name (string) or a function that returns a class name.\n * If a function is provided its signature should be: ({ index: number }): string\n */\n rowClassName: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n\n /**\n * Callback responsible for returning a data row given an index.\n * ({ index: number }): any\n */\n rowGetter: PropTypes.func.isRequired,\n\n /**\n * Either a fixed row height (number) or a function that returns the height of a row given its index.\n * ({ index: number }): number\n */\n rowHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.func]).isRequired,\n\n /** Number of rows in table. */\n rowCount: PropTypes.number.isRequired,\n\n /**\n * Responsible for rendering a table row given an array of columns:\n * Should implement the following interface: ({\n * className: string,\n * columns: Array,\n * index: number,\n * isScrolling: boolean,\n * onRowClick: ?Function,\n * onRowDoubleClick: ?Function,\n * onRowMouseOver: ?Function,\n * onRowMouseOut: ?Function,\n * rowData: any,\n * style: any\n * }): PropTypes.node\n */\n rowRenderer: PropTypes.func,\n\n /** Optional custom inline style to attach to table rows. */\n rowStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired,\n\n /** See Grid#scrollToAlignment */\n scrollToAlignment: PropTypes.oneOf(['auto', 'end', 'start', 'center']).isRequired,\n\n /** Row index to ensure visible (by forcefully scrolling if necessary) */\n scrollToIndex: PropTypes.number.isRequired,\n\n /** Vertical offset. */\n scrollTop: PropTypes.number,\n\n /**\n * Sort function to be called if a sortable header is clicked.\n * Should implement the following interface: ({\n * defaultSortDirection: 'ASC' | 'DESC',\n * event: MouseEvent,\n * sortBy: string,\n * sortDirection: SortDirection\n * }): void\n */\n sort: PropTypes.func,\n\n /** Table data is currently sorted by this :dataKey (if it is sorted at all) */\n sortBy: PropTypes.string,\n\n /** Table data is currently sorted in this direction (if it is sorted at all) */\n sortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC]),\n\n /** Optional inline style */\n style: PropTypes.object,\n\n /** Tab index for focus */\n tabIndex: PropTypes.number,\n\n /** Width of list */\n width: PropTypes.number.isRequired\n} : {};\nimport { bpfrpt_proptype_CellPosition } from '../Grid';","import createMultiSort from './createMultiSort';\nimport defaultCellDataGetter from './defaultCellDataGetter';\nimport defaultCellRenderer from './defaultCellRenderer';\nimport defaultHeaderRowRenderer from './defaultHeaderRowRenderer.js';\nimport defaultHeaderRenderer from './defaultHeaderRenderer';\nimport defaultRowRenderer from './defaultRowRenderer';\nimport Column from './Column';\nimport SortDirection from './SortDirection';\nimport SortIndicator from './SortIndicator';\nimport Table from './Table';\n\nexport default Table;\nexport { createMultiSort, defaultCellDataGetter, defaultCellRenderer, defaultHeaderRowRenderer, defaultHeaderRenderer, defaultRowRenderer, Column, SortDirection, SortIndicator, Table };","import { requestAnimationTimeout, cancelAnimationTimeout } from '../../utils/requestAnimationTimeout';\n\n\nvar mountedInstances = [];\nvar originalBodyPointerEvents = null;\nvar disablePointerEventsTimeoutId = null;\n\nfunction enablePointerEventsIfDisabled() {\n if (disablePointerEventsTimeoutId) {\n disablePointerEventsTimeoutId = null;\n\n if (document.body && originalBodyPointerEvents != null) {\n document.body.style.pointerEvents = originalBodyPointerEvents;\n }\n\n originalBodyPointerEvents = null;\n }\n}\n\nfunction enablePointerEventsAfterDelayCallback() {\n enablePointerEventsIfDisabled();\n mountedInstances.forEach(function (instance) {\n return instance.__resetIsScrolling();\n });\n}\n\nfunction enablePointerEventsAfterDelay() {\n if (disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(disablePointerEventsTimeoutId);\n }\n\n var maximumTimeout = 0;\n mountedInstances.forEach(function (instance) {\n maximumTimeout = Math.max(maximumTimeout, instance.props.scrollingResetTimeInterval);\n });\n\n disablePointerEventsTimeoutId = requestAnimationTimeout(enablePointerEventsAfterDelayCallback, maximumTimeout);\n}\n\nfunction onScrollWindow(event) {\n if (event.currentTarget === window && originalBodyPointerEvents == null && document.body) {\n originalBodyPointerEvents = document.body.style.pointerEvents;\n\n document.body.style.pointerEvents = 'none';\n }\n enablePointerEventsAfterDelay();\n mountedInstances.forEach(function (instance) {\n if (instance.props.scrollElement === event.currentTarget) {\n instance.__handleWindowScrollEvent();\n }\n });\n}\n\nexport function registerScrollListener(component, element) {\n if (!mountedInstances.some(function (instance) {\n return instance.props.scrollElement === element;\n })) {\n element.addEventListener('scroll', onScrollWindow);\n }\n mountedInstances.push(component);\n}\n\nexport function unregisterScrollListener(component, element) {\n mountedInstances = mountedInstances.filter(function (instance) {\n return instance !== component;\n });\n if (!mountedInstances.length) {\n element.removeEventListener('scroll', onScrollWindow);\n if (disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(disablePointerEventsTimeoutId);\n enablePointerEventsIfDisabled();\n }\n }\n}\nimport { bpfrpt_proptype_WindowScroller } from '../WindowScroller.js';","\n\n/**\n * Gets the dimensions of the element, accounting for API differences between\n * `window` and other DOM elements.\n */\n\nvar isWindow = function isWindow(element) {\n return element === window;\n};\n\n// TODO Move this into WindowScroller and import from there\n\n\nvar getBoundingBox = function getBoundingBox(element) {\n return element.getBoundingClientRect();\n};\n\nexport function getDimensions(scrollElement, props) {\n if (!scrollElement) {\n return {\n height: props.serverHeight,\n width: props.serverWidth\n };\n } else if (isWindow(scrollElement)) {\n var _window = window,\n innerHeight = _window.innerHeight,\n innerWidth = _window.innerWidth;\n\n return {\n height: typeof innerHeight === 'number' ? innerHeight : 0,\n width: typeof innerWidth === 'number' ? innerWidth : 0\n };\n } else {\n return getBoundingBox(scrollElement);\n }\n}\n\n/**\n * Gets the vertical and horizontal position of an element within its scroll container.\n * Elements that have been “scrolled past” return negative values.\n * Handles edge-case where a user is navigating back (history) from an already-scrolled page.\n * In this case the body’s top or left position will be a negative number and this element’s top or left will be increased (by that amount).\n */\nexport function getPositionOffset(element, container) {\n if (isWindow(container) && document.documentElement) {\n var containerElement = document.documentElement;\n var elementRect = getBoundingBox(element);\n var containerRect = getBoundingBox(containerElement);\n return {\n top: elementRect.top - containerRect.top,\n left: elementRect.left - containerRect.left\n };\n } else {\n var scrollOffset = getScrollOffset(container);\n var _elementRect = getBoundingBox(element);\n var _containerRect = getBoundingBox(container);\n return {\n top: _elementRect.top + scrollOffset.top - _containerRect.top,\n left: _elementRect.left + scrollOffset.left - _containerRect.left\n };\n }\n}\n\n/**\n * Gets the vertical and horizontal scroll amount of the element, accounting for IE compatibility\n * and API differences between `window` and other DOM elements.\n */\nexport function getScrollOffset(element) {\n if (isWindow(element) && document.documentElement) {\n return {\n top: 'scrollY' in window ? window.scrollY : document.documentElement.scrollTop,\n left: 'scrollX' in window ? window.scrollX : document.documentElement.scrollLeft\n };\n } else {\n return {\n top: element.scrollTop,\n left: element.scrollLeft\n };\n }\n}","import _extends from 'babel-runtime/helpers/extends';\nimport _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { registerScrollListener, unregisterScrollListener } from './utils/onScroll';\nimport { getDimensions, getPositionOffset, getScrollOffset } from './utils/dimensions';\nimport createDetectElementResize from '../vendor/detectElementResize';\n\n/**\n * Specifies the number of miliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\nexport var IS_SCROLLING_TIMEOUT = 150;\n\nvar getWindow = function getWindow() {\n return typeof window !== 'undefined' ? window : undefined;\n};\n\nvar WindowScroller = function (_React$PureComponent) {\n _inherits(WindowScroller, _React$PureComponent);\n\n function WindowScroller() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, WindowScroller);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = WindowScroller.__proto__ || _Object$getPrototypeOf(WindowScroller)).call.apply(_ref, [this].concat(args))), _this), _this._window = getWindow(), _this._isMounted = false, _this._positionFromTop = 0, _this._positionFromLeft = 0, _this.state = _extends({}, getDimensions(_this.props.scrollElement, _this.props), {\n isScrolling: false,\n scrollLeft: 0,\n scrollTop: 0\n }), _this._registerChild = function (element) {\n if (element && !(element instanceof Element)) {\n console.warn('WindowScroller registerChild expects to be passed Element or null');\n }\n _this._child = element;\n _this.updatePosition();\n }, _this._onChildScroll = function (_ref2) {\n var scrollTop = _ref2.scrollTop;\n\n if (_this.state.scrollTop === scrollTop) {\n return;\n }\n\n var scrollElement = _this.props.scrollElement;\n if (scrollElement) {\n if (typeof scrollElement.scrollTo === 'function') {\n scrollElement.scrollTo(0, scrollTop + _this._positionFromTop);\n } else {\n scrollElement.scrollTop = scrollTop + _this._positionFromTop;\n }\n }\n }, _this._registerResizeListener = function (element) {\n if (element === window) {\n window.addEventListener('resize', _this._onResize, false);\n } else {\n _this._detectElementResize.addResizeListener(element, _this._onResize);\n }\n }, _this._unregisterResizeListener = function (element) {\n if (element === window) {\n window.removeEventListener('resize', _this._onResize, false);\n } else if (element) {\n _this._detectElementResize.removeResizeListener(element, _this._onResize);\n }\n }, _this._onResize = function () {\n _this.updatePosition();\n }, _this.__handleWindowScrollEvent = function () {\n if (!_this._isMounted) {\n return;\n }\n\n var onScroll = _this.props.onScroll;\n\n\n var scrollElement = _this.props.scrollElement;\n if (scrollElement) {\n var scrollOffset = getScrollOffset(scrollElement);\n var _scrollLeft = Math.max(0, scrollOffset.left - _this._positionFromLeft);\n var _scrollTop = Math.max(0, scrollOffset.top - _this._positionFromTop);\n\n _this.setState({\n isScrolling: true,\n scrollLeft: _scrollLeft,\n scrollTop: _scrollTop\n });\n\n onScroll({\n scrollLeft: _scrollLeft,\n scrollTop: _scrollTop\n });\n }\n }, _this.__resetIsScrolling = function () {\n _this.setState({\n isScrolling: false\n });\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(WindowScroller, [{\n key: 'updatePosition',\n value: function updatePosition() {\n var scrollElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props.scrollElement;\n var onResize = this.props.onResize;\n var _state = this.state,\n height = _state.height,\n width = _state.width;\n\n\n var thisNode = this._child || ReactDOM.findDOMNode(this);\n if (thisNode instanceof Element && scrollElement) {\n var offset = getPositionOffset(thisNode, scrollElement);\n this._positionFromTop = offset.top;\n this._positionFromLeft = offset.left;\n }\n\n var dimensions = getDimensions(scrollElement, this.props);\n if (height !== dimensions.height || width !== dimensions.width) {\n this.setState({\n height: dimensions.height,\n width: dimensions.width\n });\n onResize({\n height: dimensions.height,\n width: dimensions.width\n });\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var scrollElement = this.props.scrollElement;\n\n this._detectElementResize = createDetectElementResize();\n\n this.updatePosition(scrollElement);\n\n if (scrollElement) {\n registerScrollListener(this, scrollElement);\n this._registerResizeListener(scrollElement);\n }\n\n this._isMounted = true;\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n var scrollElement = this.props.scrollElement;\n var prevScrollElement = prevProps.scrollElement;\n\n\n if (prevScrollElement !== scrollElement && prevScrollElement != null && scrollElement != null) {\n this.updatePosition(scrollElement);\n\n unregisterScrollListener(this, prevScrollElement);\n registerScrollListener(this, scrollElement);\n\n this._unregisterResizeListener(prevScrollElement);\n this._registerResizeListener(scrollElement);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var scrollElement = this.props.scrollElement;\n if (scrollElement) {\n unregisterScrollListener(this, scrollElement);\n this._unregisterResizeListener(scrollElement);\n }\n\n this._isMounted = false;\n }\n }, {\n key: 'render',\n value: function render() {\n var children = this.props.children;\n var _state2 = this.state,\n isScrolling = _state2.isScrolling,\n scrollTop = _state2.scrollTop,\n scrollLeft = _state2.scrollLeft,\n height = _state2.height,\n width = _state2.width;\n\n\n return children({\n onChildScroll: this._onChildScroll,\n registerChild: this._registerChild,\n height: height,\n isScrolling: isScrolling,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n width: width\n });\n }\n\n // Referenced by utils/onScroll\n\n\n // Referenced by utils/onScroll\n\n }]);\n\n return WindowScroller;\n}(React.PureComponent);\n\nWindowScroller.defaultProps = {\n onResize: function onResize() {},\n onScroll: function onScroll() {},\n scrollingResetTimeInterval: IS_SCROLLING_TIMEOUT,\n scrollElement: getWindow(),\n serverHeight: 0,\n serverWidth: 0\n};\nWindowScroller.propTypes = process.env.NODE_ENV === 'production' ? null : {\n /**\n * Function responsible for rendering children.\n * This function should implement the following signature:\n * ({ height, isScrolling, scrollLeft, scrollTop, width }) => PropTypes.element\n */\n children: PropTypes.func.isRequired,\n\n\n /** Callback to be invoked on-resize: ({ height, width }) */\n onResize: PropTypes.func.isRequired,\n\n\n /** Callback to be invoked on-scroll: ({ scrollLeft, scrollTop }) */\n onScroll: PropTypes.func.isRequired,\n\n\n /** Element to attach scroll event listeners. Defaults to window. */\n scrollElement: PropTypes.oneOfType([PropTypes.any, function () {\n return (typeof Element === 'function' ? PropTypes.instanceOf(Element) : PropTypes.any).apply(this, arguments);\n }]),\n\n /**\n * Wait this amount of time after the last scroll event before resetting child `pointer-events`.\n */\n scrollingResetTimeInterval: PropTypes.number.isRequired,\n\n\n /** Height used for server-side rendering */\n serverHeight: PropTypes.number.isRequired,\n\n\n /** Width used for server-side rendering */\n serverWidth: PropTypes.number.isRequired\n};\nexport default WindowScroller;\nimport PropTypes from 'prop-types';","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\n\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\n while (state.flowing && stream.read() !== null) {\n ;\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n'use strict';\n\nmodule.exports = Writable;\n/* */\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports =\n/*#__PURE__*/\nfunction () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\n}();","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","import 'core-js/es6/math';\nimport 'core-js/es6/number';\n/* eslint no-proto: 0 */\n\nvar testObject = {};\n\nif (!(Object.setPrototypeOf || testObject.__proto__)) {\n var nativeGetPrototypeOf = Object.getPrototypeOf;\n\n Object.getPrototypeOf = function (object) {\n if (object.__proto__) {\n return object.__proto__;\n }\n\n return nativeGetPrototypeOf.call(Object, object);\n };\n}","import raf from 'raf';\nexport default function setRafTimeout(callback) {\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var currTime = -1;\n\n var shouldUpdate = function shouldUpdate(now) {\n if (currTime < 0) {\n currTime = now;\n }\n\n if (now - currTime > timeout) {\n callback(now);\n currTime = -1;\n } else {\n raf(shouldUpdate);\n }\n };\n\n raf(shouldUpdate);\n}","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport setRafTimeout from './setRafTimeout';\nexport default function createAnimateManager() {\n var currStyle = {};\n\n var handleChange = function handleChange() {\n return null;\n };\n\n var shouldStop = false;\n\n var setStyle = function setStyle(_style) {\n if (shouldStop) {\n return;\n }\n\n if (Array.isArray(_style)) {\n if (!_style.length) {\n return;\n }\n\n var styles = _style;\n\n var _styles = _toArray(styles),\n curr = _styles[0],\n restStyles = _styles.slice(1);\n\n if (typeof curr === 'number') {\n setRafTimeout(setStyle.bind(null, restStyles), curr);\n return;\n }\n\n setStyle(curr);\n setRafTimeout(setStyle.bind(null, restStyles));\n return;\n }\n\n if (_typeof(_style) === 'object') {\n currStyle = _style;\n handleChange(currStyle);\n }\n\n if (typeof _style === 'function') {\n _style();\n }\n };\n\n return {\n stop: function stop() {\n shouldStop = true;\n },\n start: function start(style) {\n shouldStop = false;\n setStyle(style);\n },\n subscribe: function subscribe(_handleChange) {\n handleChange = _handleChange;\n return function () {\n handleChange = function handleChange() {\n return null;\n };\n };\n }\n };\n}","import _intersection from \"lodash/intersection\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/* eslint no-console: 0 */\nvar PREFIX_LIST = ['Webkit', 'Moz', 'O', 'ms'];\nvar IN_LINE_PREFIX_LIST = ['-webkit-', '-moz-', '-o-', '-ms-'];\nvar IN_COMPATIBLE_PROPERTY = ['transform', 'transformOrigin', 'transition'];\nexport var getIntersectionKeys = function getIntersectionKeys(preObj, nextObj) {\n return _intersection(Object.keys(preObj), Object.keys(nextObj));\n};\nexport var identity = function identity(param) {\n return param;\n};\n/*\n * @description: convert camel case to dash case\n * string => string\n */\n\nexport var getDashCase = function getDashCase(name) {\n return name.replace(/([A-Z])/g, function (v) {\n return \"-\".concat(v.toLowerCase());\n });\n};\n/*\n * @description: add compatible style prefix\n * (string, string) => object\n */\n\nexport var generatePrefixStyle = function generatePrefixStyle(name, value) {\n if (IN_COMPATIBLE_PROPERTY.indexOf(name) === -1) {\n return _defineProperty({}, name, value);\n }\n\n var isTransition = name === 'transition';\n var camelName = name.replace(/(\\w)/, function (v) {\n return v.toUpperCase();\n });\n var styleVal = value;\n return PREFIX_LIST.reduce(function (result, property, i) {\n if (isTransition) {\n styleVal = value.replace(/(transform|transform-origin)/gim, \"\".concat(IN_LINE_PREFIX_LIST[i], \"$1\"));\n }\n\n return _objectSpread({}, result, _defineProperty({}, property + camelName, styleVal));\n }, {});\n};\nexport var log = function log() {\n var _console;\n\n (_console = console).log.apply(_console, arguments);\n};\n/*\n * @description: log the value of a varible\n * string => any => any\n */\n\nexport var debug = function debug(name) {\n return function (item) {\n log(name, item);\n return item;\n };\n};\n/*\n * @description: log name, args, return value of a function\n * function => function\n */\n\nexport var debugf = function debugf(tag, f) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var res = f.apply(void 0, args);\n var name = tag || f.name || 'anonymous function';\n var argNames = \"(\".concat(args.map(JSON.stringify).join(', '), \")\");\n log(\"\".concat(name, \": \").concat(argNames, \" => \").concat(JSON.stringify(res)));\n return res;\n };\n};\n/*\n * @description: map object on every element in this object.\n * (function, object) => object\n */\n\nexport var mapObject = function mapObject(fn, obj) {\n return Object.keys(obj).reduce(function (res, key) {\n return _objectSpread({}, res, _defineProperty({}, key, fn(key, obj[key])));\n }, {});\n};\n/*\n * @description: add compatible prefix to style\n * object => object\n */\n\nexport var translateStyle = function translateStyle(style) {\n return Object.keys(style).reduce(function (res, key) {\n return _objectSpread({}, res, generatePrefixStyle(key, res[key]));\n }, style);\n};\nexport var compose = function compose() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (!args.length) {\n return identity;\n }\n\n var fns = args.reverse(); // first function can receive multiply arguments\n\n var firstFn = fns[0];\n var tailsFn = fns.slice(1);\n return function () {\n return tailsFn.reduce(function (res, fn) {\n return fn(res);\n }, firstFn.apply(void 0, arguments));\n };\n};\nexport var getTransitionVal = function getTransitionVal(props, duration, easing) {\n return props.map(function (prop) {\n return \"\".concat(getDashCase(prop), \" \").concat(duration, \"ms \").concat(easing);\n }).join(',');\n};\nvar isDev = process.env.NODE_ENV !== 'production';\nexport var warn = function warn(condition, format, a, b, c, d, e, f) {\n if (isDev && typeof console !== 'undefined' && console.warn) {\n if (format === undefined) {\n console.warn('LogUtils requires an error message argument');\n }\n\n if (!condition) {\n if (format === undefined) {\n console.warn('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n console.warn(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n }\n }\n }\n};","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nimport { warn } from './util';\nvar ACCURACY = 1e-4;\n\nvar cubicBezierFactor = function cubicBezierFactor(c1, c2) {\n return [0, 3 * c1, 3 * c2 - 6 * c1, 3 * c1 - 3 * c2 + 1];\n};\n\nvar multyTime = function multyTime(params, t) {\n return params.map(function (param, i) {\n return param * Math.pow(t, i);\n }).reduce(function (pre, curr) {\n return pre + curr;\n });\n};\n\nvar cubicBezier = function cubicBezier(c1, c2) {\n return function (t) {\n var params = cubicBezierFactor(c1, c2);\n return multyTime(params, t);\n };\n};\n\nvar derivativeCubicBezier = function derivativeCubicBezier(c1, c2) {\n return function (t) {\n var params = cubicBezierFactor(c1, c2);\n\n var newParams = _toConsumableArray(params.map(function (param, i) {\n return param * i;\n }).slice(1)).concat([0]);\n\n return multyTime(newParams, t);\n };\n}; // calculate cubic-bezier using Newton's method\n\n\nexport var configBezier = function configBezier() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var x1 = args[0],\n y1 = args[1],\n x2 = args[2],\n y2 = args[3];\n\n if (args.length === 1) {\n switch (args[0]) {\n case 'linear':\n x1 = 0.0;\n y1 = 0.0;\n x2 = 1.0;\n y2 = 1.0;\n break;\n\n case 'ease':\n x1 = 0.25;\n y1 = 0.1;\n x2 = 0.25;\n y2 = 1.0;\n break;\n\n case 'ease-in':\n x1 = 0.42;\n y1 = 0.0;\n x2 = 1.0;\n y2 = 1.0;\n break;\n\n case 'ease-out':\n x1 = 0.42;\n y1 = 0.0;\n x2 = 0.58;\n y2 = 1.0;\n break;\n\n case 'ease-in-out':\n x1 = 0.0;\n y1 = 0.0;\n x2 = 0.58;\n y2 = 1.0;\n break;\n\n default:\n {\n var easing = args[0].split('(');\n\n if (easing[0] === 'cubic-bezier' && easing[1].split(')')[0].split(',').length === 4) {\n var _easing$1$split$0$spl = easing[1].split(')')[0].split(',').map(function (x) {\n return parseFloat(x);\n });\n\n var _easing$1$split$0$spl2 = _slicedToArray(_easing$1$split$0$spl, 4);\n\n x1 = _easing$1$split$0$spl2[0];\n y1 = _easing$1$split$0$spl2[1];\n x2 = _easing$1$split$0$spl2[2];\n y2 = _easing$1$split$0$spl2[3];\n } else {\n warn(false, '[configBezier]: arguments should be one of ' + 'oneOf \\'linear\\', \\'ease\\', \\'ease-in\\', \\'ease-out\\', ' + '\\'ease-in-out\\',\\'cubic-bezier(x1,y1,x2,y2)\\', instead received %s', args);\n }\n }\n }\n }\n\n warn([x1, x2, y1, y2].every(function (num) {\n return typeof num === 'number' && num >= 0 && num <= 1;\n }), '[configBezier]: arguments should be x1, y1, x2, y2 of [0, 1] instead received %s', args);\n var curveX = cubicBezier(x1, x2);\n var curveY = cubicBezier(y1, y2);\n var derCurveX = derivativeCubicBezier(x1, x2);\n\n var rangeValue = function rangeValue(value) {\n if (value > 1) {\n return 1;\n } else if (value < 0) {\n return 0;\n }\n\n return value;\n };\n\n var bezier = function bezier(_t) {\n var t = _t > 1 ? 1 : _t;\n var x = t;\n\n for (var i = 0; i < 8; ++i) {\n var evalT = curveX(x) - t;\n var derVal = derCurveX(x);\n\n if (Math.abs(evalT - t) < ACCURACY || derVal < ACCURACY) {\n return curveY(x);\n }\n\n x = rangeValue(x - evalT / derVal);\n }\n\n return curveY(x);\n };\n\n bezier.isStepper = false;\n return bezier;\n};\nexport var configSpring = function configSpring() {\n var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _config$stiff = config.stiff,\n stiff = _config$stiff === void 0 ? 100 : _config$stiff,\n _config$damping = config.damping,\n damping = _config$damping === void 0 ? 8 : _config$damping,\n _config$dt = config.dt,\n dt = _config$dt === void 0 ? 17 : _config$dt;\n\n var stepper = function stepper(currX, destX, currV) {\n var FSpring = -(currX - destX) * stiff;\n var FDamping = currV * damping;\n var newV = currV + (FSpring - FDamping) * dt / 1000;\n var newX = currV * dt / 1000 + currX;\n\n if (Math.abs(newX - destX) < ACCURACY && Math.abs(newV) < ACCURACY) {\n return [destX, 0];\n }\n\n return [newX, newV];\n };\n\n stepper.isStepper = true;\n stepper.dt = dt;\n return stepper;\n};\nexport var configEasing = function configEasing() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var easing = args[0];\n\n if (typeof easing === 'string') {\n switch (easing) {\n case 'ease':\n case 'ease-in-out':\n case 'ease-out':\n case 'ease-in':\n case 'linear':\n return configBezier(easing);\n\n case 'spring':\n return configSpring();\n\n default:\n if (easing.split('(')[0] === 'cubic-bezier') {\n return configBezier(easing);\n }\n\n warn(false, '[configEasing]: first argument should be one of \\'ease\\', \\'ease-in\\', ' + '\\'ease-out\\', \\'ease-in-out\\',\\'cubic-bezier(x1,y1,x2,y2)\\', \\'linear\\' and \\'spring\\', instead received %s', args);\n }\n }\n\n if (typeof easing === 'function') {\n return easing;\n }\n\n warn(false, '[configEasing]: first argument type should be function or ' + 'string, instead received %s', args);\n return null;\n};","import _filter from \"lodash/filter\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport raf, { cancel as caf } from 'raf';\nimport { getIntersectionKeys, mapObject } from './util';\n\nvar alpha = function alpha(begin, end, k) {\n return begin + (end - begin) * k;\n};\n\nvar needContinue = function needContinue(_ref) {\n var from = _ref.from,\n to = _ref.to;\n return from !== to;\n};\n/*\n * @description: cal new from value and velocity in each stepper\n * @return: { [styleProperty]: { from, to, velocity } }\n */\n\n\nvar calStepperVals = function calStepperVals(easing, preVals, steps) {\n var nextStepVals = mapObject(function (key, val) {\n if (needContinue(val)) {\n var _easing = easing(val.from, val.to, val.velocity),\n _easing2 = _slicedToArray(_easing, 2),\n newX = _easing2[0],\n newV = _easing2[1];\n\n return _objectSpread({}, val, {\n from: newX,\n velocity: newV\n });\n }\n\n return val;\n }, preVals);\n\n if (steps < 1) {\n return mapObject(function (key, val) {\n if (needContinue(val)) {\n return _objectSpread({}, val, {\n velocity: alpha(val.velocity, nextStepVals[key].velocity, steps),\n from: alpha(val.from, nextStepVals[key].from, steps)\n });\n }\n\n return val;\n }, preVals);\n }\n\n return calStepperVals(easing, nextStepVals, steps - 1);\n}; // configure update function\n\n\nexport default (function (from, to, easing, duration, render) {\n var interKeys = getIntersectionKeys(from, to);\n var timingStyle = interKeys.reduce(function (res, key) {\n return _objectSpread({}, res, _defineProperty({}, key, [from[key], to[key]]));\n }, {});\n var stepperStyle = interKeys.reduce(function (res, key) {\n return _objectSpread({}, res, _defineProperty({}, key, {\n from: from[key],\n velocity: 0,\n to: to[key]\n }));\n }, {});\n var cafId = -1;\n var preTime;\n var beginTime;\n\n var update = function update() {\n return null;\n };\n\n var getCurrStyle = function getCurrStyle() {\n return mapObject(function (key, val) {\n return val.from;\n }, stepperStyle);\n };\n\n var shouldStopAnimation = function shouldStopAnimation() {\n return !_filter(stepperStyle, needContinue).length;\n }; // stepper timing function like spring\n\n\n var stepperUpdate = function stepperUpdate(now) {\n if (!preTime) {\n preTime = now;\n }\n\n var deltaTime = now - preTime;\n var steps = deltaTime / easing.dt;\n stepperStyle = calStepperVals(easing, stepperStyle, steps); // get union set and add compatible prefix\n\n render(_objectSpread({}, from, to, getCurrStyle(stepperStyle)));\n preTime = now;\n\n if (!shouldStopAnimation()) {\n cafId = raf(update);\n }\n }; // t => val timing function like cubic-bezier\n\n\n var timingUpdate = function timingUpdate(now) {\n if (!beginTime) {\n beginTime = now;\n }\n\n var t = (now - beginTime) / duration;\n var currStyle = mapObject(function (key, val) {\n return alpha.apply(void 0, _toConsumableArray(val).concat([easing(t)]));\n }, timingStyle); // get union set and add compatible prefix\n\n render(_objectSpread({}, from, to, currStyle));\n\n if (t < 1) {\n cafId = raf(update);\n } else {\n var finalStyle = mapObject(function (key, val) {\n return alpha.apply(void 0, _toConsumableArray(val).concat([easing(1)]));\n }, timingStyle);\n render(_objectSpread({}, from, to, finalStyle));\n }\n };\n\n update = easing.isStepper ? stepperUpdate : timingUpdate; // return start animation method\n\n return function () {\n raf(update); // return stop animation method\n\n return function () {\n caf(cafId);\n };\n };\n});","import _isEqual from \"lodash/isEqual\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nimport React, { PureComponent, cloneElement, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport createAnimateManager from './AnimateManager';\nimport { configEasing } from './easing';\nimport configUpdate from './configUpdate';\nimport { getTransitionVal, identity, translateStyle } from './util';\n\nvar Animate =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Animate, _PureComponent);\n\n function Animate(props, context) {\n var _this;\n\n _classCallCheck(this, Animate);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Animate).call(this, props, context));\n var _this$props = _this.props,\n isActive = _this$props.isActive,\n attributeName = _this$props.attributeName,\n from = _this$props.from,\n to = _this$props.to,\n steps = _this$props.steps,\n children = _this$props.children;\n _this.handleStyleChange = _this.handleStyleChange.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n _this.changeStyle = _this.changeStyle.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n\n if (!isActive) {\n _this.state = {\n style: {}\n }; // if children is a function and animation is not active, set style to 'to'\n\n if (typeof children === 'function') {\n _this.state = {\n style: to\n };\n }\n\n return _possibleConstructorReturn(_this);\n }\n\n if (steps && steps.length) {\n _this.state = {\n style: steps[0].style\n };\n } else if (from) {\n if (typeof children === 'function') {\n _this.state = {\n style: from\n };\n return _possibleConstructorReturn(_this);\n }\n\n _this.state = {\n style: attributeName ? _defineProperty({}, attributeName, from) : from\n };\n } else {\n _this.state = {\n style: {}\n };\n }\n\n return _this;\n }\n\n _createClass(Animate, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props2 = this.props,\n isActive = _this$props2.isActive,\n canBegin = _this$props2.canBegin;\n this.mounted = true;\n\n if (!isActive || !canBegin) {\n return;\n }\n\n this.runAnimation(this.props);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props3 = this.props,\n isActive = _this$props3.isActive,\n canBegin = _this$props3.canBegin,\n attributeName = _this$props3.attributeName,\n shouldReAnimate = _this$props3.shouldReAnimate;\n\n if (!canBegin) {\n return;\n }\n\n if (!isActive) {\n var newState = {\n style: attributeName ? _defineProperty({}, attributeName, this.props.to) : this.props.to\n };\n\n if (this.state && this.state.style) {\n if (attributeName && this.state.style[attributeName] !== this.props.to || !attributeName && this.state.style !== this.props.to) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(newState);\n }\n }\n\n return;\n }\n\n if (_isEqual(prevProps.to, this.props.to) && prevProps.canBegin && prevProps.isActive) {\n return;\n }\n\n var isTriggered = !prevProps.canBegin || !prevProps.isActive;\n\n if (this.manager) {\n this.manager.stop();\n }\n\n if (this.stopJSAnimation) {\n this.stopJSAnimation();\n }\n\n var from = isTriggered || shouldReAnimate ? this.props.from : prevProps.to;\n\n if (this.state && this.state.style) {\n var _newState = {\n style: attributeName ? _defineProperty({}, attributeName, from) : from\n };\n\n if (attributeName && this.state.style[attributeName] !== from || !attributeName && this.state.style !== from) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(_newState);\n }\n }\n\n this.runAnimation(_objectSpread({}, this.props, {\n from: from,\n begin: 0\n }));\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false;\n\n if (this.unSubscribe) {\n this.unSubscribe();\n }\n\n if (this.manager) {\n this.manager.stop();\n this.manager = null;\n }\n\n if (this.stopJSAnimation) {\n this.stopJSAnimation();\n }\n }\n }, {\n key: \"runJSAnimation\",\n value: function runJSAnimation(props) {\n var _this2 = this;\n\n var from = props.from,\n to = props.to,\n duration = props.duration,\n easing = props.easing,\n begin = props.begin,\n onAnimationEnd = props.onAnimationEnd,\n onAnimationStart = props.onAnimationStart;\n var startAnimation = configUpdate(from, to, configEasing(easing), duration, this.changeStyle);\n\n var finalStartAnimation = function finalStartAnimation() {\n _this2.stopJSAnimation = startAnimation();\n };\n\n this.manager.start([onAnimationStart, begin, finalStartAnimation, duration, onAnimationEnd]);\n }\n }, {\n key: \"runStepAnimation\",\n value: function runStepAnimation(props) {\n var _this3 = this;\n\n var steps = props.steps,\n begin = props.begin,\n onAnimationStart = props.onAnimationStart;\n var _steps$ = steps[0],\n initialStyle = _steps$.style,\n _steps$$duration = _steps$.duration,\n initialTime = _steps$$duration === void 0 ? 0 : _steps$$duration;\n\n var addStyle = function addStyle(sequence, nextItem, index) {\n if (index === 0) {\n return sequence;\n }\n\n var duration = nextItem.duration,\n _nextItem$easing = nextItem.easing,\n easing = _nextItem$easing === void 0 ? 'ease' : _nextItem$easing,\n style = nextItem.style,\n nextProperties = nextItem.properties,\n onAnimationEnd = nextItem.onAnimationEnd;\n var preItem = index > 0 ? steps[index - 1] : nextItem;\n var properties = nextProperties || Object.keys(style);\n\n if (typeof easing === 'function' || easing === 'spring') {\n return _toConsumableArray(sequence).concat([_this3.runJSAnimation.bind(_this3, {\n from: preItem.style,\n to: style,\n duration: duration,\n easing: easing\n }), duration]);\n }\n\n var transition = getTransitionVal(properties, duration, easing);\n\n var newStyle = _objectSpread({}, preItem.style, style, {\n transition: transition\n });\n\n return _toConsumableArray(sequence).concat([newStyle, duration, onAnimationEnd]).filter(identity);\n };\n\n return this.manager.start([onAnimationStart].concat(_toConsumableArray(steps.reduce(addStyle, [initialStyle, Math.max(initialTime, begin)])), [props.onAnimationEnd]));\n }\n }, {\n key: \"runAnimation\",\n value: function runAnimation(props) {\n if (!this.manager) {\n this.manager = createAnimateManager();\n }\n\n var begin = props.begin,\n duration = props.duration,\n attributeName = props.attributeName,\n propsTo = props.to,\n easing = props.easing,\n onAnimationStart = props.onAnimationStart,\n onAnimationEnd = props.onAnimationEnd,\n steps = props.steps,\n children = props.children;\n var manager = this.manager;\n this.unSubscribe = manager.subscribe(this.handleStyleChange);\n\n if (typeof easing === 'function' || typeof children === 'function' || easing === 'spring') {\n this.runJSAnimation(props);\n return;\n }\n\n if (steps.length > 1) {\n this.runStepAnimation(props);\n return;\n }\n\n var to = attributeName ? _defineProperty({}, attributeName, propsTo) : propsTo;\n var transition = getTransitionVal(Object.keys(to), duration, easing);\n manager.start([onAnimationStart, begin, _objectSpread({}, to, {\n transition: transition\n }), duration, onAnimationEnd]);\n }\n }, {\n key: \"handleStyleChange\",\n value: function handleStyleChange(style) {\n this.changeStyle(style);\n }\n }, {\n key: \"changeStyle\",\n value: function changeStyle(style) {\n if (this.mounted) {\n this.setState({\n style: style\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n children = _this$props4.children,\n begin = _this$props4.begin,\n duration = _this$props4.duration,\n attributeName = _this$props4.attributeName,\n easing = _this$props4.easing,\n isActive = _this$props4.isActive,\n steps = _this$props4.steps,\n from = _this$props4.from,\n to = _this$props4.to,\n canBegin = _this$props4.canBegin,\n onAnimationEnd = _this$props4.onAnimationEnd,\n shouldReAnimate = _this$props4.shouldReAnimate,\n onAnimationReStart = _this$props4.onAnimationReStart,\n others = _objectWithoutProperties(_this$props4, [\"children\", \"begin\", \"duration\", \"attributeName\", \"easing\", \"isActive\", \"steps\", \"from\", \"to\", \"canBegin\", \"onAnimationEnd\", \"shouldReAnimate\", \"onAnimationReStart\"]);\n\n var count = Children.count(children);\n var stateStyle = translateStyle(this.state.style);\n\n if (typeof children === 'function') {\n return children(stateStyle);\n }\n\n if (!isActive || count === 0) {\n return children;\n }\n\n var cloneContainer = function cloneContainer(container) {\n var _container$props = container.props,\n _container$props$styl = _container$props.style,\n style = _container$props$styl === void 0 ? {} : _container$props$styl,\n className = _container$props.className;\n var res = cloneElement(container, _objectSpread({}, others, {\n style: _objectSpread({}, style, stateStyle),\n className: className\n }));\n return res;\n };\n\n if (count === 1) {\n return cloneContainer(Children.only(children));\n }\n\n return React.createElement(\"div\", null, Children.map(children, function (child) {\n return cloneContainer(child);\n }));\n }\n }]);\n\n return Animate;\n}(PureComponent);\n\nAnimate.displayName = 'Animate';\nAnimate.propTypes = {\n from: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n to: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n attributeName: PropTypes.string,\n // animation duration\n duration: PropTypes.number,\n begin: PropTypes.number,\n easing: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n steps: PropTypes.arrayOf(PropTypes.shape({\n duration: PropTypes.number.isRequired,\n style: PropTypes.object.isRequired,\n easing: PropTypes.oneOfType([PropTypes.oneOf(['ease', 'ease-in', 'ease-out', 'ease-in-out', 'linear']), PropTypes.func]),\n // transition css properties(dash case), optional\n properties: PropTypes.arrayOf('string'),\n onAnimationEnd: PropTypes.func\n })),\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n isActive: PropTypes.bool,\n canBegin: PropTypes.bool,\n onAnimationEnd: PropTypes.func,\n // decide if it should reanimate with initial from style when props change\n shouldReAnimate: PropTypes.bool,\n onAnimationStart: PropTypes.func,\n onAnimationReStart: PropTypes.func\n};\nAnimate.defaultProps = {\n begin: 0,\n duration: 1000,\n from: '',\n to: '',\n attributeName: '',\n easing: 'ease',\n isActive: true,\n canBegin: true,\n steps: [],\n onAnimationEnd: function onAnimationEnd() {},\n onAnimationStart: function onAnimationStart() {}\n};\nexport default Animate;","import _isNumber from \"lodash/isNumber\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport React, { Component, Children } from 'react';\nimport { Transition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport Animate from './Animate';\n\nvar parseDurationOfSingleTransition = function parseDurationOfSingleTransition() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var steps = options.steps,\n duration = options.duration;\n\n if (steps && steps.length) {\n return steps.reduce(function (result, entry) {\n return result + (_isNumber(entry.duration) && entry.duration > 0 ? entry.duration : 0);\n }, 0);\n }\n\n if (_isNumber(duration)) {\n return duration;\n }\n\n return 0;\n};\n\nvar AnimateGroupChild =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(AnimateGroupChild, _Component);\n\n function AnimateGroupChild() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, AnimateGroupChild);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(AnimateGroupChild)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n isActive: false\n };\n\n _this.handleEnter = function (node, isAppearing) {\n var _this$props = _this.props,\n appearOptions = _this$props.appearOptions,\n enterOptions = _this$props.enterOptions;\n\n _this.handleStyleActive(isAppearing ? appearOptions : enterOptions);\n };\n\n _this.handleExit = function () {\n _this.handleStyleActive(_this.props.leaveOptions);\n };\n\n return _this;\n }\n\n _createClass(AnimateGroupChild, [{\n key: \"handleStyleActive\",\n value: function handleStyleActive(style) {\n if (style) {\n var onAnimationEnd = style.onAnimationEnd ? function () {\n style.onAnimationEnd();\n } : null;\n this.setState(_objectSpread({}, style, {\n onAnimationEnd: onAnimationEnd,\n isActive: true\n }));\n }\n }\n }, {\n key: \"parseTimeout\",\n value: function parseTimeout() {\n var _this$props2 = this.props,\n appearOptions = _this$props2.appearOptions,\n enterOptions = _this$props2.enterOptions,\n leaveOptions = _this$props2.leaveOptions;\n return parseDurationOfSingleTransition(appearOptions) + parseDurationOfSingleTransition(enterOptions) + parseDurationOfSingleTransition(leaveOptions);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props3 = this.props,\n children = _this$props3.children,\n appearOptions = _this$props3.appearOptions,\n enterOptions = _this$props3.enterOptions,\n leaveOptions = _this$props3.leaveOptions,\n props = _objectWithoutProperties(_this$props3, [\"children\", \"appearOptions\", \"enterOptions\", \"leaveOptions\"]);\n\n return React.createElement(Transition, _extends({}, props, {\n onEnter: this.handleEnter,\n onExit: this.handleExit,\n timeout: this.parseTimeout()\n }), function () {\n return React.createElement(Animate, _this2.state, Children.only(children));\n });\n }\n }]);\n\n return AnimateGroupChild;\n}(Component);\n\nAnimateGroupChild.propTypes = {\n appearOptions: PropTypes.object,\n enterOptions: PropTypes.object,\n leaveOptions: PropTypes.object,\n children: PropTypes.element\n};\nexport default AnimateGroupChild;","import React, { Children } from 'react';\nimport { TransitionGroup } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport AnimateGroupChild from './AnimateGroupChild';\n\nfunction AnimateGroup(props) {\n var component = props.component,\n children = props.children,\n appear = props.appear,\n enter = props.enter,\n leave = props.leave;\n return React.createElement(TransitionGroup, {\n component: component\n }, Children.map(children, function (child, index) {\n return React.createElement(AnimateGroupChild, {\n appearOptions: appear,\n enterOptions: enter,\n leaveOptions: leave,\n key: \"child-\".concat(index)\n }, child);\n }));\n}\n\nAnimateGroup.propTypes = {\n appear: PropTypes.object,\n enter: PropTypes.object,\n leave: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.array, PropTypes.element]),\n component: PropTypes.any\n};\nAnimateGroup.defaultProps = {\n component: 'span'\n};\nexport default AnimateGroup;","import Animate from './Animate';\nimport { configBezier, configSpring } from './easing';\nimport { translateStyle } from './util';\nimport AnimateGroup from './AnimateGroup';\nexport { configSpring, configBezier, AnimateGroup, translateStyle };\nexport default Animate;","import _get from \"lodash/get\";\nimport _isArray from \"lodash/isArray\";\nimport _isNaN from \"lodash/isNaN\";\nimport _isNumber from \"lodash/isNumber\";\nimport _isString from \"lodash/isString\";\nexport var mathSign = function mathSign(value) {\n if (value === 0) {\n return 0;\n }\n\n if (value > 0) {\n return 1;\n }\n\n return -1;\n};\nexport var isPercent = function isPercent(value) {\n return _isString(value) && value.indexOf('%') === value.length - 1;\n};\nexport var isNumber = function isNumber(value) {\n return _isNumber(value) && !_isNaN(value);\n};\nexport var isNumOrStr = function isNumOrStr(value) {\n return isNumber(value) || _isString(value);\n};\nvar idCounter = 0;\nexport var uniqueId = function uniqueId(prefix) {\n var id = ++idCounter;\n return \"\".concat(prefix || '').concat(id);\n};\n/**\n * Get percent value of a total value\n * @param {Number|String} percent A percent\n * @param {Number} totalValue Total value\n * @param {NUmber} defaultValue The value returned when percent is undefined or invalid\n * @param {Boolean} validate If set to be true, the result will be validated\n * @return {Number} value\n */\n\nexport var getPercentValue = function getPercentValue(percent, totalValue) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var validate = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (!isNumber(percent) && !_isString(percent)) {\n return defaultValue;\n }\n\n var value;\n\n if (isPercent(percent)) {\n var index = percent.indexOf('%');\n value = totalValue * parseFloat(percent.slice(0, index)) / 100;\n } else {\n value = +percent;\n }\n\n if (_isNaN(value)) {\n value = defaultValue;\n }\n\n if (validate && value > totalValue) {\n value = totalValue;\n }\n\n return value;\n};\nexport var getAnyElementOfObject = function getAnyElementOfObject(obj) {\n if (!obj) {\n return null;\n }\n\n var keys = Object.keys(obj);\n\n if (keys && keys.length) {\n return obj[keys[0]];\n }\n\n return null;\n};\nexport var hasDuplicate = function hasDuplicate(ary) {\n if (!_isArray(ary)) {\n return false;\n }\n\n var len = ary.length;\n var cache = {};\n\n for (var i = 0; i < len; i++) {\n if (!cache[ary[i]]) {\n cache[ary[i]] = true;\n } else {\n return true;\n }\n }\n\n return false;\n};\nexport var interpolateNumber = function interpolateNumber(numberA, numberB) {\n if (isNumber(numberA) && isNumber(numberB)) {\n return function (t) {\n return numberA + t * (numberB - numberA);\n };\n }\n\n return function () {\n return numberB;\n };\n};\nexport var findEntryInArray = function findEntryInArray(ary, specifiedKey, specifiedValue) {\n if (!ary || !ary.length) {\n return null;\n }\n\n return ary.find(function (entry) {\n return entry && (typeof specifiedKey === 'function' ? specifiedKey(entry) : _get(entry, specifiedKey)) === specifiedValue;\n });\n};\n/**\n * The least square linear regression\n * @param {Array} data The array of points\n * @returns {Object} The domain of x, and the parameter of linear function\n */\n\nexport var getLinearRegression = function getLinearRegression(data) {\n if (!data || !data.length) {\n return null;\n }\n\n var len = data.length;\n var xsum = 0;\n var ysum = 0;\n var xysum = 0;\n var xxsum = 0;\n var xmin = Infinity;\n var xmax = -Infinity;\n\n for (var i = 0; i < len; i++) {\n xsum += data[i].cx;\n ysum += data[i].cy;\n xysum += data[i].cx * data[i].cy;\n xxsum += data[i].cx * data[i].cx;\n xmin = Math.min(xmin, data[i].cx);\n xmax = Math.max(xmax, data[i].cx);\n }\n\n var a = len * xxsum !== xsum * xsum ? (len * xysum - xsum * ysum) / (len * xxsum - xsum * xsum) : 0;\n return {\n xmin: xmin,\n xmax: xmax,\n a: a,\n b: (ysum - a * xsum) / len\n };\n};","import _sortBy from \"lodash/sortBy\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { isNumOrStr } from '../util/DataUtils';\n\nvar defaultFormatter = function defaultFormatter(value) {\n return _isArray(value) && isNumOrStr(value[0]) && isNumOrStr(value[1]) ? value.join(' ~ ') : value;\n};\n\nvar DefaultTooltipContent =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(DefaultTooltipContent, _PureComponent);\n\n function DefaultTooltipContent() {\n _classCallCheck(this, DefaultTooltipContent);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(DefaultTooltipContent).apply(this, arguments));\n }\n\n _createClass(DefaultTooltipContent, [{\n key: \"renderContent\",\n value: function renderContent() {\n var _this$props = this.props,\n payload = _this$props.payload,\n separator = _this$props.separator,\n formatter = _this$props.formatter,\n itemStyle = _this$props.itemStyle,\n itemSorter = _this$props.itemSorter;\n\n if (payload && payload.length) {\n var listStyle = {\n padding: 0,\n margin: 0\n };\n var items = (itemSorter ? _sortBy(payload, itemSorter) : payload).map(function (entry, i) {\n if (entry.type === 'none') {\n return null;\n }\n\n var finalItemStyle = _objectSpread({\n display: 'block',\n paddingTop: 4,\n paddingBottom: 4,\n color: entry.color || '#000'\n }, itemStyle);\n\n var finalFormatter = entry.formatter || formatter || defaultFormatter;\n var name = entry.name,\n value = entry.value;\n\n if (finalFormatter) {\n var formatted = finalFormatter(value, name, entry, i);\n\n if (Array.isArray(formatted)) {\n var _formatted = _slicedToArray(formatted, 2);\n\n value = _formatted[0];\n name = _formatted[1];\n } else {\n value = formatted;\n }\n }\n\n return (// eslint-disable-next-line react/no-array-index-key\n React.createElement(\"li\", {\n className: \"recharts-tooltip-item\",\n key: \"tooltip-item-\".concat(i),\n style: finalItemStyle\n }, isNumOrStr(name) ? React.createElement(\"span\", {\n className: \"recharts-tooltip-item-name\"\n }, name) : null, isNumOrStr(name) ? React.createElement(\"span\", {\n className: \"recharts-tooltip-item-separator\"\n }, separator) : null, React.createElement(\"span\", {\n className: \"recharts-tooltip-item-value\"\n }, value), React.createElement(\"span\", {\n className: \"recharts-tooltip-item-unit\"\n }, entry.unit || ''))\n );\n });\n return React.createElement(\"ul\", {\n className: \"recharts-tooltip-item-list\",\n style: listStyle\n }, items);\n }\n\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n wrapperClassName = _this$props2.wrapperClassName,\n contentStyle = _this$props2.contentStyle,\n labelClassName = _this$props2.labelClassName,\n labelStyle = _this$props2.labelStyle,\n label = _this$props2.label,\n labelFormatter = _this$props2.labelFormatter;\n\n var finalStyle = _objectSpread({\n margin: 0,\n padding: 10,\n backgroundColor: '#fff',\n border: '1px solid #ccc',\n whiteSpace: 'nowrap'\n }, contentStyle);\n\n var finalLabelStyle = _objectSpread({\n margin: 0\n }, labelStyle);\n\n var hasLabel = isNumOrStr(label);\n var finalLabel = hasLabel ? label : '';\n var wrapperCN = classNames('recharts-default-tooltip', wrapperClassName);\n var labelCN = classNames('recharts-tooltip-label', labelClassName);\n\n if (hasLabel && labelFormatter) {\n finalLabel = labelFormatter(label);\n }\n\n return React.createElement(\"div\", {\n className: wrapperCN,\n style: finalStyle\n }, React.createElement(\"p\", {\n className: labelCN,\n style: finalLabelStyle\n }, finalLabel), this.renderContent());\n }\n }]);\n\n return DefaultTooltipContent;\n}(PureComponent);\n\nDefaultTooltipContent.displayName = 'DefaultTooltipContent';\nDefaultTooltipContent.propTypes = {\n separator: PropTypes.string,\n wrapperClassName: PropTypes.string,\n labelClassName: PropTypes.string,\n formatter: PropTypes.func,\n contentStyle: PropTypes.object,\n itemStyle: PropTypes.object,\n labelStyle: PropTypes.object,\n labelFormatter: PropTypes.func,\n label: PropTypes.any,\n payload: PropTypes.arrayOf(PropTypes.shape({\n name: PropTypes.any,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.array]),\n unit: PropTypes.any\n })),\n itemSorter: PropTypes.func\n};\nDefaultTooltipContent.defaultProps = {\n separator: ' : ',\n contentStyle: {},\n itemStyle: {},\n labelStyle: {}\n};\nexport default DefaultTooltipContent;","export function shallowEqual(a, b) {\n /* eslint-disable no-restricted-syntax */\n for (var key in a) {\n if ({}.hasOwnProperty.call(a, key) && (!{}.hasOwnProperty.call(b, key) || a[key] !== b[key])) {\n return false;\n }\n }\n\n for (var _key in b) {\n if ({}.hasOwnProperty.call(b, _key) && !{}.hasOwnProperty.call(a, _key)) {\n return false;\n }\n }\n\n return true;\n}","import _isNil from \"lodash/isNil\";\nimport _isString from \"lodash/isString\";\nimport _isObject from \"lodash/isObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { isNumber } from './DataUtils';\nimport { shallowEqual } from './ShallowEqual';\nexport var PRESENTATION_ATTRIBUTES = {\n 'aria-current': PropTypes.string,\n // state\n 'aria-details': PropTypes.any,\n 'aria-disabled': PropTypes.any,\n // state\n 'aria-hidden': PropTypes.any,\n // state\n 'aria-invalid': PropTypes.any,\n // state\n 'aria-keyshortcuts': PropTypes.any,\n 'aria-label': PropTypes.any,\n 'aria-roledescription': PropTypes.any,\n // Widget Attributes\n 'aria-autocomplete': PropTypes.any,\n 'aria-checked': PropTypes.any,\n 'aria-expanded': PropTypes.any,\n 'aria-haspopup': PropTypes.any,\n 'aria-level': PropTypes.any,\n 'aria-modal': PropTypes.any,\n 'aria-multiline': PropTypes.any,\n 'aria-multiselectable': PropTypes.any,\n 'aria-orientation': PropTypes.any,\n 'aria-placeholder': PropTypes.any,\n 'aria-pressed': PropTypes.any,\n 'aria-readonly': PropTypes.any,\n 'aria-required': PropTypes.any,\n 'aria-selected': PropTypes.any,\n 'aria-sort': PropTypes.any,\n 'aria-valuemax': PropTypes.any,\n 'aria-valuemin': PropTypes.any,\n 'aria-valuenow': PropTypes.any,\n 'aria-valuetext': PropTypes.any,\n // Live Region Attributes\n 'aria-atomic': PropTypes.any,\n 'aria-busy': PropTypes.any,\n 'aria-live': PropTypes.any,\n 'aria-relevant': PropTypes.any,\n // Drag-and-Drop Attributes\n 'aria-dropeffect': PropTypes.any,\n 'aria-grabbed': PropTypes.any,\n // Relationship Attributes\n 'aria-activedescendant': PropTypes.any,\n 'aria-colcount': PropTypes.any,\n 'aria-colindex': PropTypes.any,\n 'aria-colspan': PropTypes.any,\n 'aria-controls': PropTypes.any,\n 'aria-describedby': PropTypes.any,\n 'aria-errormessage': PropTypes.any,\n 'aria-flowto': PropTypes.any,\n 'aria-labelledby': PropTypes.any,\n 'aria-owns': PropTypes.any,\n 'aria-posinset': PropTypes.any,\n 'aria-rowcount': PropTypes.any,\n 'aria-rowindex': PropTypes.any,\n 'aria-rowspan': PropTypes.any,\n 'aria-setsize': PropTypes.any,\n alignmentBaseline: PropTypes.string,\n angle: PropTypes.number,\n baselineShift: PropTypes.string,\n clip: PropTypes.string,\n clipPath: PropTypes.string,\n clipRule: PropTypes.string,\n color: PropTypes.string,\n colorInterpolation: PropTypes.string,\n colorInterpolationFilters: PropTypes.string,\n colorProfile: PropTypes.string,\n colorRendering: PropTypes.string,\n cursor: PropTypes.string,\n direction: PropTypes.oneOf(['ltr', 'rtl', 'inherit']),\n display: PropTypes.string,\n dominantBaseline: PropTypes.string,\n enableBackground: PropTypes.string,\n fill: PropTypes.string,\n fillOpacity: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n fillRule: PropTypes.oneOf(['nonzero', 'evenodd', 'inherit']),\n filter: PropTypes.string,\n floodColor: PropTypes.string,\n floodOpacity: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n font: PropTypes.string,\n fontFamily: PropTypes.string,\n fontSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n fontSizeAdjust: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n fontStretch: PropTypes.oneOf(['normal', 'wider', 'narrower', 'ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', 'inherit']),\n fontStyle: PropTypes.oneOf(['normal', 'italic', 'oblique', 'inherit']),\n fontVariant: PropTypes.oneOf(['normal', 'small-caps', 'inherit']),\n fontWeight: PropTypes.oneOf(['normal', 'bold', 'bolder', 'lighter', 100, 200, 300, 400, 500, 600, 700, 800, 900, 'inherit']),\n glyphOrientationHorizontal: PropTypes.string,\n glyphOrientationVertical: PropTypes.string,\n imageRendering: PropTypes.oneOf(['auto', 'optimizeSpeed', 'optimizeQuality', 'inherit']),\n kerning: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n letterSpacing: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n lightingColor: PropTypes.string,\n lineHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n markerEnd: PropTypes.string,\n markerMid: PropTypes.string,\n markerStart: PropTypes.string,\n mask: PropTypes.string,\n opacity: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n overflow: PropTypes.oneOf(['visible', 'hidden', 'scroll', 'auto', 'inherit']),\n pointerEvents: PropTypes.oneOf(['visiblePainted', 'visibleFill', 'visibleStroke', 'visible', 'painted', 'fill', 'stroke', 'all', 'none', 'inherit']),\n shapeRendering: PropTypes.oneOf(['auto', 'optimizeSpeed', 'crispEdges', 'geometricPrecision', 'inherit']),\n stopColor: PropTypes.string,\n stopOpacity: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n stroke: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n strokeDasharray: PropTypes.string,\n strokeDashoffset: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n strokeLinecap: PropTypes.oneOf(['butt', 'round', 'square', 'inherit']),\n strokeLinejoin: PropTypes.oneOf(['miter', 'round', 'bevel', 'inherit']),\n strokeMiterlimit: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n strokeOpacity: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n strokeWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n textAnchor: PropTypes.oneOf(['start', 'middle', 'end', 'inherit']),\n textDecoration: PropTypes.oneOf(['none', 'underline', 'overline', 'line-through', 'blink', 'inherit']),\n textRendering: PropTypes.oneOf(['auto', 'optimizeSpeed', 'optimizeLegibility', 'geometricPrecision', 'inherit']),\n unicodeBidi: PropTypes.oneOf(['normal', 'embed', 'bidi-override', 'inherit']),\n visibility: PropTypes.oneOf(['visible', 'hidden', 'collapse', 'inherit']),\n wordSpacing: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n writingMode: PropTypes.oneOf(['lr-tb', 'rl-tb', 'tb-rl', 'lr', 'rl', 'tb', 'inherit']),\n transform: PropTypes.string,\n role: PropTypes.string,\n focusable: PropTypes.string,\n tabIndex: PropTypes.string,\n style: PropTypes.object,\n width: PropTypes.number,\n height: PropTypes.number,\n dx: PropTypes.number,\n dy: PropTypes.number,\n x: PropTypes.number,\n y: PropTypes.number,\n r: PropTypes.number,\n // The radius of Rectangle\n radius: PropTypes.oneOfType([PropTypes.number, PropTypes.array])\n};\nexport var EVENT_ATTRIBUTES = {\n onClick: PropTypes.func,\n onMouseDown: PropTypes.func,\n onMouseUp: PropTypes.func,\n onMouseOver: PropTypes.func,\n onMouseMove: PropTypes.func,\n onMouseOut: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onTouchEnd: PropTypes.func,\n onTouchMove: PropTypes.func,\n onTouchStart: PropTypes.func,\n onTouchCancel: PropTypes.func\n};\nvar REACT_BROWSER_EVENT_MAP = {\n click: 'onClick',\n mousedown: 'onMouseDown',\n mouseup: 'onMouseUp',\n mouseover: 'onMouseOver',\n mousemove: 'onMouseMove',\n mouseout: 'onMouseOut',\n mouseenter: 'onMouseEnter',\n mouseleave: 'onMouseLeave',\n touchcancel: 'onTouchCancel',\n touchend: 'onTouchEnd',\n touchmove: 'onTouchMove',\n touchstart: 'onTouchStart'\n};\nexport var SCALE_TYPES = ['auto', 'linear', 'pow', 'sqrt', 'log', 'identity', 'time', 'band', 'point', 'ordinal', 'quantile', 'quantize', 'utc', 'sequential', 'threshold'];\nexport var LEGEND_TYPES = ['plainline', 'line', 'square', 'rect', 'circle', 'cross', 'diamond', 'star', 'triangle', 'wye', 'none'];\nexport var TOOLTIP_TYPES = ['none'];\n/**\n * Get the display name of a component\n * @param {Object} Comp Specified Component\n * @return {String} Display name of Component\n */\n\nexport var getDisplayName = function getDisplayName(Comp) {\n if (typeof Comp === 'string') {\n return Comp;\n }\n\n if (!Comp) {\n return '';\n }\n\n return Comp.displayName || Comp.name || 'Component';\n};\n/*\n * Find and return all matched children by type. `type` can be a React element class or\n * string\n */\n\nexport var findAllByType = function findAllByType(children, type) {\n var result = [];\n var types = [];\n\n if (_isArray(type)) {\n types = type.map(function (t) {\n return getDisplayName(t);\n });\n } else {\n types = [getDisplayName(type)];\n }\n\n React.Children.forEach(children, function (child) {\n var childType = child && child.type && (child.type.displayName || child.type.name);\n\n if (types.indexOf(childType) !== -1) {\n result.push(child);\n }\n });\n return result;\n};\n/*\n * Return the first matched child by type, return null otherwise.\n * `type` can be a React element class or string.\n */\n\nexport var findChildByType = function findChildByType(children, type) {\n var result = findAllByType(children, type);\n return result && result[0];\n};\n/*\n * Create a new array of children excluding the ones matched the type\n */\n\nexport var withoutType = function withoutType(children, type) {\n var newChildren = [];\n var types;\n\n if (_isArray(type)) {\n types = type.map(function (t) {\n return getDisplayName(t);\n });\n } else {\n types = [getDisplayName(type)];\n }\n\n React.Children.forEach(children, function (child) {\n if (child && child.type && child.type.displayName && types.indexOf(child.type.displayName) !== -1) {\n return;\n }\n\n newChildren.push(child);\n });\n return newChildren;\n};\n/**\n * get all the presentation attribute of svg element\n * @param {Object} el A react element or the props of a react element\n * @return {Object} attributes or null\n */\n\nexport var getPresentationAttributes = function getPresentationAttributes(el) {\n if (!el || _isFunction(el)) {\n return null;\n }\n\n var props = React.isValidElement(el) ? el.props : el;\n\n if (!_isObject(props)) {\n return null;\n }\n\n var out = null; // eslint-disable-next-line no-restricted-syntax\n\n for (var i in props) {\n if ({}.hasOwnProperty.call(props, i) && PRESENTATION_ATTRIBUTES[i]) {\n if (!out) out = {};\n out[i] = props[i];\n }\n }\n\n return out;\n};\n\nvar getEventHandlerOfElement = function getEventHandlerOfElement(originalHandler, props) {\n return function (e) {\n originalHandler(props, e);\n return null;\n };\n};\n/**\n * get all the event attribute of svg element\n * @param {Object} el A react element or the props of a react element\n * @param {Function} newHandler New handler of event\n * @param {Boolean} wrapCallback Wrap callback and return more parameters or not\n * @return {Object} attributes or null\n */\n\n\nexport var filterEventAttributes = function filterEventAttributes(el, newHandler) {\n var wrapCallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (!el || _isFunction(el)) {\n return null;\n }\n\n var props = React.isValidElement(el) ? el.props : el;\n\n if (!_isObject(props)) {\n return null;\n }\n\n var out = null; // eslint-disable-next-line no-restricted-syntax\n\n for (var i in props) {\n if ({}.hasOwnProperty.call(props, i) && EVENT_ATTRIBUTES[i]) {\n if (!out) out = {};\n out[i] = newHandler || (wrapCallback ? getEventHandlerOfElement(props[i], props) : props[i]);\n }\n }\n\n return out;\n};\n\nvar getEventHandlerOfChild = function getEventHandlerOfChild(originalHandler, data, index) {\n return function (e) {\n originalHandler(data, index, e);\n return null;\n };\n};\n\nexport var filterEventsOfChild = function filterEventsOfChild(props, data, index) {\n if (!_isObject(props)) {\n return null;\n }\n\n var out = null; // eslint-disable-next-line no-restricted-syntax\n\n for (var i in props) {\n if ({}.hasOwnProperty.call(props, i) && EVENT_ATTRIBUTES[i] && _isFunction(props[i])) {\n if (!out) out = {};\n out[i] = getEventHandlerOfChild(props[i], data, index);\n }\n }\n\n return out;\n};\n/**\n * validate the width and height props of a chart element\n * @param {Object} el A chart element\n * @return {Boolean} true If the props width and height are number, and greater than 0\n */\n\nexport var validateWidthHeight = function validateWidthHeight(el) {\n if (!el || !el.props) {\n return false;\n }\n\n var _el$props = el.props,\n width = _el$props.width,\n height = _el$props.height;\n\n if (!isNumber(width) || width <= 0 || !isNumber(height) || height <= 0) {\n return false;\n }\n\n return true;\n};\nexport var isSsr = function isSsr() {\n return !(typeof window !== 'undefined' && window.document && window.document.createElement && window.setTimeout);\n};\nvar SVG_TAGS = ['a', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', 'animateMotion', 'animateTransform', 'circle', 'clipPath', 'color-profile', 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColormatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter', 'font', 'font-face', 'font-face-format', 'font-face-name', 'font-face-url', 'foreignObject', 'g', 'glyph', 'glyphRef', 'hkern', 'image', 'line', 'lineGradient', 'marker', 'mask', 'metadata', 'missing-glyph', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'script', 'set', 'stop', 'style', 'svg', 'switch', 'symbol', 'text', 'textPath', 'title', 'tref', 'tspan', 'use', 'view', 'vkern'];\n\nvar isSvgElement = function isSvgElement(child) {\n return child && child.type && _isString(child.type) && SVG_TAGS.indexOf(child.type) >= 0;\n};\n/**\n * Filter all the svg elements of children\n * @param {Array} children The children of a react element\n * @return {Array} All the svg elements\n */\n\n\nexport var filterSvgElements = function filterSvgElements(children) {\n var svgElements = [];\n React.Children.forEach(children, function (entry) {\n if (entry && entry.type && _isString(entry.type) && SVG_TAGS.indexOf(entry.type) >= 0) {\n svgElements.push(entry);\n }\n });\n return svgElements;\n};\nexport var isSingleChildEqual = function isSingleChildEqual(nextChild, prevChild) {\n if (_isNil(nextChild) && _isNil(prevChild)) {\n return true;\n }\n\n if (!_isNil(nextChild) && !_isNil(prevChild)) {\n var _ref = nextChild.props || {},\n nextChildren = _ref.children,\n nextProps = _objectWithoutProperties(_ref, [\"children\"]);\n\n var _ref2 = prevChild.props || {},\n prevChildren = _ref2.children,\n prevProps = _objectWithoutProperties(_ref2, [\"children\"]);\n\n if (nextChildren && prevChildren) {\n // eslint-disable-next-line no-use-before-define\n return shallowEqual(nextProps, prevProps) && isChildrenEqual(nextChildren, prevChildren);\n }\n\n if (!nextChildren && !prevChildren) {\n return shallowEqual(nextProps, prevProps);\n }\n\n return false;\n }\n\n return false;\n};\n/**\n * Wether props of children changed\n * @param {Object} nextChildren The latest children\n * @param {Object} prevChildren The prev children\n * @return {Boolean} equal or not\n */\n\nexport var isChildrenEqual = function isChildrenEqual(nextChildren, prevChildren) {\n if (nextChildren === prevChildren) {\n return true;\n }\n\n if (Children.count(nextChildren) !== Children.count(prevChildren)) {\n return false;\n }\n\n var count = Children.count(nextChildren);\n\n if (count === 0) {\n return true;\n }\n\n if (count === 1) {\n return isSingleChildEqual(_isArray(nextChildren) ? nextChildren[0] : nextChildren, _isArray(prevChildren) ? prevChildren[0] : prevChildren);\n }\n\n for (var _i = 0; _i < count; _i++) {\n var nextChild = nextChildren[_i];\n var prevChild = prevChildren[_i];\n\n if (_isArray(nextChild) || _isArray(prevChild)) {\n if (!isChildrenEqual(nextChild, prevChild)) {\n return false;\n }\n } else if (!isSingleChildEqual(nextChild, prevChild)) {\n return false;\n }\n }\n\n return true;\n};\nexport var renderByOrder = function renderByOrder(children, renderMap) {\n var elements = [];\n var record = {};\n Children.forEach(children, function (child, index) {\n if (child && isSvgElement(child)) {\n elements.push(child);\n } else if (child && renderMap[getDisplayName(child.type)]) {\n var displayName = getDisplayName(child.type);\n var _renderMap$displayNam = renderMap[displayName],\n handler = _renderMap$displayNam.handler,\n once = _renderMap$displayNam.once;\n\n if (once && !record[displayName] || !once) {\n var results = handler(child, displayName, index);\n\n if (_isArray(results)) {\n elements = [elements].concat(_toConsumableArray(results));\n } else {\n elements.push(results);\n }\n\n record[displayName] = true;\n }\n }\n });\n return elements;\n};\nexport var getReactEventByType = function getReactEventByType(e) {\n var type = e && e.type;\n\n if (type && REACT_BROWSER_EVENT_MAP[type]) {\n return REACT_BROWSER_EVENT_MAP[type];\n }\n\n return null;\n};\nexport var parseChildIndex = function parseChildIndex(child, children) {\n var result = -1;\n Children.forEach(children, function (entry, index) {\n if (entry === child) {\n result = index;\n }\n });\n return result;\n};","import _isNil from \"lodash/isNil\";\nimport _isFunction from \"lodash/isFunction\";\nimport _uniqBy from \"lodash/uniqBy\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Tooltip\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { translateStyle } from 'react-smooth';\nimport classNames from 'classnames';\nimport DefaultTooltipContent from './DefaultTooltipContent';\nimport { TOOLTIP_TYPES, isSsr } from '../util/ReactUtils';\nimport { isNumber } from '../util/DataUtils';\nvar CLS_PREFIX = 'recharts-tooltip-wrapper';\nvar EPS = 1;\n\nvar defaultUniqBy = function defaultUniqBy(entry) {\n return entry.dataKey;\n};\n\nvar getUniqPaylod = function getUniqPaylod(option, payload) {\n if (option === true) {\n return _uniqBy(payload, defaultUniqBy);\n }\n\n if (_isFunction(option)) {\n return _uniqBy(payload, option);\n }\n\n return payload;\n};\n\nvar propTypes = {\n allowEscapeViewBox: PropTypes.shape({\n x: PropTypes[\"boolean\"],\n y: PropTypes[\"boolean\"]\n }),\n content: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),\n viewBox: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number,\n width: PropTypes.number,\n height: PropTypes.number\n }),\n active: PropTypes.bool,\n separator: PropTypes.string,\n formatter: PropTypes.func,\n offset: PropTypes.number,\n itemStyle: PropTypes.object,\n labelStyle: PropTypes.object,\n wrapperStyle: PropTypes.object,\n contentStyle: PropTypes.object,\n cursor: PropTypes.oneOfType([PropTypes.bool, PropTypes.element, PropTypes.object]),\n coordinate: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n position: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n label: PropTypes.any,\n payload: PropTypes.arrayOf(PropTypes.shape({\n name: PropTypes.any,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.array]),\n unit: PropTypes.any,\n type: PropTypes.oneOf(TOOLTIP_TYPES)\n })),\n paylodUniqBy: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n isAnimationActive: PropTypes.bool,\n animationDuration: PropTypes.number,\n animationEasing: PropTypes.oneOf(['ease', 'ease-in', 'ease-out', 'ease-in-out', 'linear']),\n itemSorter: PropTypes.func,\n filterNull: PropTypes.bool,\n useTranslate3d: PropTypes.bool\n};\nvar defaultProps = {\n active: false,\n allowEscapeViewBox: {\n x: false,\n y: false\n },\n offset: 10,\n viewBox: {\n x1: 0,\n x2: 0,\n y1: 0,\n y2: 0\n },\n coordinate: {\n x: 0,\n y: 0\n },\n cursorStyle: {},\n separator: ' : ',\n wrapperStyle: {},\n contentStyle: {},\n itemStyle: {},\n labelStyle: {},\n cursor: true,\n isAnimationActive: !isSsr(),\n animationEasing: 'ease',\n animationDuration: 400,\n filterNull: true,\n useTranslate3d: false\n};\n\nvar renderContent = function renderContent(content, props) {\n if (React.isValidElement(content)) {\n return React.cloneElement(content, props);\n }\n\n if (_isFunction(content)) {\n return content(props);\n }\n\n return React.createElement(DefaultTooltipContent, props);\n};\n\nvar Tooltip =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Tooltip, _PureComponent);\n\n function Tooltip() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Tooltip);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Tooltip)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n boxWidth: -1,\n boxHeight: -1\n };\n\n _this.getTranslate = function (_ref) {\n var key = _ref.key,\n tooltipDimension = _ref.tooltipDimension,\n viewBoxDimension = _ref.viewBoxDimension;\n var _this$props = _this.props,\n allowEscapeViewBox = _this$props.allowEscapeViewBox,\n coordinate = _this$props.coordinate,\n offset = _this$props.offset,\n position = _this$props.position,\n viewBox = _this$props.viewBox;\n\n if (position && isNumber(position[key])) {\n return position[key];\n }\n\n var restricted = coordinate[key] - tooltipDimension - offset;\n var unrestricted = coordinate[key] + offset;\n\n if (allowEscapeViewBox[key]) {\n return unrestricted;\n }\n\n var tooltipBoundary = coordinate[key] + tooltipDimension + offset;\n var viewBoxBoundary = viewBox[key] + viewBoxDimension;\n\n if (tooltipBoundary > viewBoxBoundary) {\n return Math.max(restricted, viewBox[key]);\n }\n\n return Math.max(unrestricted, viewBox[key]);\n };\n\n return _this;\n }\n\n _createClass(Tooltip, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.updateBBox();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateBBox();\n }\n }, {\n key: \"updateBBox\",\n value: function updateBBox() {\n var _this$state = this.state,\n boxWidth = _this$state.boxWidth,\n boxHeight = _this$state.boxHeight;\n\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n var box = this.wrapperNode.getBoundingClientRect();\n\n if (Math.abs(box.width - boxWidth) > EPS || Math.abs(box.height - boxHeight) > EPS) {\n this.setState({\n boxWidth: box.width,\n boxHeight: box.height\n });\n }\n } else if (boxWidth !== -1 || boxHeight !== -1) {\n this.setState({\n boxWidth: -1,\n boxHeight: -1\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _classNames,\n _this2 = this;\n\n var _this$props2 = this.props,\n payload = _this$props2.payload,\n isAnimationActive = _this$props2.isAnimationActive,\n animationDuration = _this$props2.animationDuration,\n animationEasing = _this$props2.animationEasing,\n filterNull = _this$props2.filterNull,\n paylodUniqBy = _this$props2.paylodUniqBy;\n var finalPayload = getUniqPaylod(paylodUniqBy, filterNull && payload && payload.length ? payload.filter(function (entry) {\n return !_isNil(entry.value);\n }) : payload);\n var hasPayload = finalPayload && finalPayload.length;\n var _this$props3 = this.props,\n content = _this$props3.content,\n viewBox = _this$props3.viewBox,\n coordinate = _this$props3.coordinate,\n position = _this$props3.position,\n active = _this$props3.active,\n wrapperStyle = _this$props3.wrapperStyle;\n\n var outerStyle = _objectSpread({\n pointerEvents: 'none',\n visibility: active && hasPayload ? 'visible' : 'hidden',\n position: 'absolute',\n top: 0\n }, wrapperStyle);\n\n var translateX, translateY;\n\n if (position && isNumber(position.x) && isNumber(position.y)) {\n translateX = position.x;\n translateY = position.y;\n } else {\n var _this$state2 = this.state,\n boxWidth = _this$state2.boxWidth,\n boxHeight = _this$state2.boxHeight;\n\n if (boxWidth > 0 && boxHeight > 0 && coordinate) {\n translateX = this.getTranslate({\n key: 'x',\n tooltipDimension: boxWidth,\n viewBoxDimension: viewBox.width\n });\n translateY = this.getTranslate({\n key: 'y',\n tooltipDimension: boxHeight,\n viewBoxDimension: viewBox.height\n });\n } else {\n outerStyle.visibility = 'hidden';\n }\n }\n\n outerStyle = _objectSpread({}, translateStyle({\n transform: this.props.useTranslate3d ? \"translate3d(\".concat(translateX, \"px, \").concat(translateY, \"px, 0)\") : \"translate(\".concat(translateX, \"px, \").concat(translateY, \"px)\")\n }), {}, outerStyle);\n\n if (isAnimationActive && active) {\n outerStyle = _objectSpread({}, translateStyle({\n transition: \"transform \".concat(animationDuration, \"ms \").concat(animationEasing)\n }), {}, outerStyle);\n }\n\n var cls = classNames(CLS_PREFIX, (_classNames = {}, _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-right\"), isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX >= coordinate.x), _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-left\"), isNumber(translateX) && coordinate && isNumber(coordinate.x) && translateX < coordinate.x), _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-bottom\"), isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY >= coordinate.y), _defineProperty(_classNames, \"\".concat(CLS_PREFIX, \"-top\"), isNumber(translateY) && coordinate && isNumber(coordinate.y) && translateY < coordinate.y), _classNames));\n return React.createElement(\"div\", {\n className: cls,\n style: outerStyle,\n ref: function ref(node) {\n _this2.wrapperNode = node;\n }\n }, renderContent(content, _objectSpread({}, this.props, {\n payload: finalPayload\n })));\n }\n }]);\n\n return Tooltip;\n}(PureComponent);\n\nTooltip.displayName = 'Tooltip';\nTooltip.propTypes = propTypes;\nTooltip.defaultProps = defaultProps;\nexport default Tooltip;","import _debounce from \"lodash/debounce\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Wrapper component to make charts adapt to the size of parent * DOM\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport ReactResizeDetector from 'react-resize-detector';\nimport { isPercent } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\n\nvar ResponsiveContainer =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ResponsiveContainer, _Component);\n\n function ResponsiveContainer(props) {\n var _this;\n\n _classCallCheck(this, ResponsiveContainer);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ResponsiveContainer).call(this, props));\n\n _this.updateDimensionsImmediate = function () {\n if (!_this.mounted) {\n return;\n }\n\n var newSize = _this.getContainerSize();\n\n if (newSize) {\n var _this$state = _this.state,\n oldWidth = _this$state.containerWidth,\n oldHeight = _this$state.containerHeight;\n var containerWidth = newSize.containerWidth,\n containerHeight = newSize.containerHeight;\n\n if (containerWidth !== oldWidth || containerHeight !== oldHeight) {\n _this.setState({\n containerWidth: containerWidth,\n containerHeight: containerHeight\n });\n }\n }\n };\n\n _this.state = {\n containerWidth: -1,\n containerHeight: -1\n };\n _this.handleResize = props.debounce > 0 ? _debounce(_this.updateDimensionsImmediate, props.debounce) : _this.updateDimensionsImmediate;\n return _this;\n }\n /* eslint-disable react/no-did-mount-set-state */\n\n\n _createClass(ResponsiveContainer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.mounted = true;\n var size = this.getContainerSize();\n\n if (size) {\n this.setState(size);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.mounted = false;\n }\n }, {\n key: \"getContainerSize\",\n value: function getContainerSize() {\n if (!this.container) {\n return null;\n }\n\n return {\n containerWidth: this.container.clientWidth,\n containerHeight: this.container.clientHeight\n };\n }\n }, {\n key: \"renderChart\",\n value: function renderChart() {\n var _this$state2 = this.state,\n containerWidth = _this$state2.containerWidth,\n containerHeight = _this$state2.containerHeight;\n\n if (containerWidth < 0 || containerHeight < 0) {\n return null;\n }\n\n var _this$props = this.props,\n aspect = _this$props.aspect,\n width = _this$props.width,\n height = _this$props.height,\n minWidth = _this$props.minWidth,\n minHeight = _this$props.minHeight,\n maxHeight = _this$props.maxHeight,\n children = _this$props.children;\n warn(isPercent(width) || isPercent(height), \"The width(%s) and height(%s) are both fixed numbers,\\n maybe you don't need to use a ResponsiveContainer.\", width, height);\n warn(!aspect || aspect > 0, 'The aspect(%s) must be greater than zero.', aspect);\n var calculatedWidth = isPercent(width) ? containerWidth : width;\n var calculatedHeight = isPercent(height) ? containerHeight : height;\n\n if (aspect && aspect > 0) {\n // Preserve the desired aspect ratio\n if (calculatedWidth) {\n // Will default to using width for aspect ratio\n calculatedHeight = calculatedWidth / aspect;\n } else if (calculatedHeight) {\n // But we should also take height into consideration\n calculatedWidth = calculatedHeight * aspect;\n } // if maxHeight is set, overwrite if calculatedHeight is greater than maxHeight\n\n\n if (maxHeight && calculatedHeight > maxHeight) {\n calculatedHeight = maxHeight;\n }\n }\n\n warn(calculatedWidth > 0 || calculatedHeight > 0, \"The width(%s) and height(%s) of chart should be greater than 0,\\n please check the style of container, or the props width(%s) and height(%s),\\n or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the\\n height and width.\", calculatedWidth, calculatedHeight, width, height, minWidth, minHeight, aspect);\n return React.cloneElement(children, {\n width: calculatedWidth,\n height: calculatedHeight\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n minWidth = _this$props2.minWidth,\n minHeight = _this$props2.minHeight,\n width = _this$props2.width,\n height = _this$props2.height,\n maxHeight = _this$props2.maxHeight,\n id = _this$props2.id,\n className = _this$props2.className;\n var style = {\n width: width,\n height: height,\n minWidth: minWidth,\n minHeight: minHeight,\n maxHeight: maxHeight\n };\n return React.createElement(\"div\", {\n id: id,\n className: classNames('recharts-responsive-container', className),\n style: style,\n ref: function ref(node) {\n _this2.container = node;\n }\n }, this.renderChart(), React.createElement(ReactResizeDetector, {\n handleWidth: true,\n handleHeight: true,\n onResize: this.handleResize\n }));\n }\n }]);\n\n return ResponsiveContainer;\n}(Component);\n\nResponsiveContainer.displayName = 'ResponsiveContainer';\nResponsiveContainer.propTypes = {\n aspect: PropTypes.number,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n children: PropTypes.node.isRequired,\n debounce: PropTypes.number,\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nResponsiveContainer.defaultProps = {\n width: '100%',\n height: '100%',\n debounce: 0\n};\nexport default ResponsiveContainer;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/**\n * @fileOverview Layer\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nvar propTypes = {\n className: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nfunction Layer(props) {\n var children = props.children,\n className = props.className,\n others = _objectWithoutProperties(props, [\"children\", \"className\"]);\n\n var layerClass = classNames('recharts-layer', className);\n return React.createElement(\"g\", _extends({\n className: layerClass\n }, others), children);\n}\n\nLayer.propTypes = propTypes;\nexport default Layer;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nimport { isSsr } from './ReactUtils';\nvar stringCache = {\n widthCache: {},\n cacheCount: 0\n};\nvar MAX_CACHE_NUM = 2000;\nvar SPAN_STYLE = {\n position: 'absolute',\n top: '-20000px',\n left: 0,\n padding: 0,\n margin: 0,\n border: 'none',\n whiteSpace: 'pre'\n};\nvar STYLE_LIST = ['minWidth', 'maxWidth', 'width', 'minHeight', 'maxHeight', 'height', 'top', 'left', 'fontSize', 'lineHeight', 'padding', 'margin', 'paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom'];\nvar MEASUREMENT_SPAN_ID = 'recharts_measurement_span';\n\nfunction autoCompleteStyle(name, value) {\n if (STYLE_LIST.indexOf(name) >= 0 && value === +value) {\n return \"\".concat(value, \"px\");\n }\n\n return value;\n}\n\nfunction camelToMiddleLine(text) {\n var strs = text.split('');\n var formatStrs = strs.reduce(function (result, entry) {\n if (entry === entry.toUpperCase()) {\n return [].concat(_toConsumableArray(result), ['-', entry.toLowerCase()]);\n }\n\n return [].concat(_toConsumableArray(result), [entry]);\n }, []);\n return formatStrs.join('');\n}\n\nexport var getStyleString = function getStyleString(style) {\n return Object.keys(style).reduce(function (result, s) {\n return \"\".concat(result).concat(camelToMiddleLine(s), \":\").concat(autoCompleteStyle(s, style[s]), \";\");\n }, '');\n};\nexport var getStringSize = function getStringSize(text) {\n var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (text === undefined || text === null || isSsr()) {\n return {\n width: 0,\n height: 0\n };\n }\n\n var str = \"\".concat(text);\n var styleString = getStyleString(style);\n var cacheKey = \"\".concat(str, \"-\").concat(styleString);\n\n if (stringCache.widthCache[cacheKey]) {\n return stringCache.widthCache[cacheKey];\n }\n\n try {\n var measurementSpan = document.getElementById(MEASUREMENT_SPAN_ID);\n\n if (!measurementSpan) {\n measurementSpan = document.createElement('span');\n measurementSpan.setAttribute('id', MEASUREMENT_SPAN_ID);\n document.body.appendChild(measurementSpan);\n } // Need to use CSS Object Model (CSSOM) to be able to comply with Content Security Policy (CSP)\n // https://en.wikipedia.org/wiki/Content_Security_Policy\n\n\n var measurementSpanStyle = _objectSpread({}, SPAN_STYLE, {}, style);\n\n Object.keys(measurementSpanStyle).map(function (styleKey) {\n measurementSpan.style[styleKey] = measurementSpanStyle[styleKey];\n return styleKey;\n });\n measurementSpan.textContent = str;\n var rect = measurementSpan.getBoundingClientRect();\n var result = {\n width: rect.width,\n height: rect.height\n };\n stringCache.widthCache[cacheKey] = result;\n\n if (++stringCache.cacheCount > MAX_CACHE_NUM) {\n stringCache.cacheCount = 0;\n stringCache.widthCache = {};\n }\n\n return result;\n } catch (e) {\n return {\n width: 0,\n height: 0\n };\n }\n};\nexport var getOffset = function getOffset(el) {\n var html = el.ownerDocument.documentElement;\n var box = {\n top: 0,\n left: 0\n }; // If we don't have gBCR, just use 0,0 rather than error\n // BlackBerry 5, iOS 3 (original iPhone)\n\n if (typeof el.getBoundingClientRect !== 'undefined') {\n box = el.getBoundingClientRect();\n }\n\n return {\n top: box.top + window.pageYOffset - html.clientTop,\n left: box.left + window.pageXOffset - html.clientLeft\n };\n};\n/**\n * Calculate coordinate of cursor in chart\n * @param {Object} event Event object\n * @param {Object} offset The offset of main part in the svg element\n * @return {Object} {chartX, chartY}\n */\n\nexport var calculateChartCoordinate = function calculateChartCoordinate(event, offset) {\n return {\n chartX: Math.round(event.pageX - offset.left),\n chartY: Math.round(event.pageY - offset.top)\n };\n};","import _isNil from \"lodash/isNil\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport reduceCSSCalc from 'reduce-css-calc';\nimport classNames from 'classnames';\nimport { isNumber, isNumOrStr } from '../util/DataUtils';\nimport { PRESENTATION_ATTRIBUTES, getPresentationAttributes, isSsr, filterEventAttributes } from '../util/ReactUtils';\nimport { getStringSize } from '../util/DOMUtils';\nvar BREAKING_SPACES = /[ \\f\\n\\r\\t\\v\\u2028\\u2029]+/;\n\nvar calculateWordWidths = function calculateWordWidths(props) {\n try {\n var words = !_isNil(props.children) ? props.children.toString().split(BREAKING_SPACES) : [];\n var wordsWithComputedWidth = words.map(function (word) {\n return {\n word: word,\n width: getStringSize(word, props.style).width\n };\n });\n var spaceWidth = getStringSize(\"\\xA0\", props.style).width;\n return {\n wordsWithComputedWidth: wordsWithComputedWidth,\n spaceWidth: spaceWidth\n };\n } catch (e) {\n return null;\n }\n};\n\nvar Text =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Text, _Component);\n\n function Text(_props) {\n var _this;\n\n _classCallCheck(this, Text);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Text).call(this, _props));\n\n _this.getWordsWithoutCalculate = function (props) {\n var words = !_isNil(props.children) ? props.children.toString().split(BREAKING_SPACES) : [];\n return [{\n words: words\n }];\n };\n\n _this.state = {\n wordsByLines: _this.getWordsByLines(_props, true)\n };\n return _this;\n }\n\n _createClass(Text, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.updateWordsByLines(this.props, true);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (prevProps.width !== this.props.width || prevProps.scaleToFit !== this.props.scaleToFit || prevProps.children !== this.props.children || prevProps.style !== this.props.style) {\n var needCalculate = this.props.children !== prevProps.children || this.props.style !== prevProps.style;\n this.updateWordsByLines(this.props, needCalculate);\n }\n }\n }, {\n key: \"updateWordsByLines\",\n value: function updateWordsByLines(props, needCalculate) {\n this.setState({\n wordsByLines: this.getWordsByLines(props, needCalculate)\n });\n }\n }, {\n key: \"getWordsByLines\",\n value: function getWordsByLines(props, needCalculate) {\n // Only perform calculations if using features that require them (multiline, scaleToFit)\n if ((props.width || props.scaleToFit) && !isSsr()) {\n if (needCalculate) {\n var wordWidths = calculateWordWidths(props);\n\n if (wordWidths) {\n var wordsWithComputedWidth = wordWidths.wordsWithComputedWidth,\n spaceWidth = wordWidths.spaceWidth;\n this.wordsWithComputedWidth = wordsWithComputedWidth;\n this.spaceWidth = spaceWidth;\n } else {\n return this.getWordsWithoutCalculate(props);\n }\n }\n\n return this.calculateWordsByLines(this.wordsWithComputedWidth, this.spaceWidth, props.width);\n }\n\n return this.getWordsWithoutCalculate(props);\n }\n }, {\n key: \"calculateWordsByLines\",\n value: function calculateWordsByLines(wordsWithComputedWidth, spaceWidth, lineWidth) {\n var scaleToFit = this.props.scaleToFit;\n return (wordsWithComputedWidth || []).reduce(function (result, _ref) {\n var word = _ref.word,\n width = _ref.width;\n var currentLine = result[result.length - 1];\n\n if (currentLine && (lineWidth == null || scaleToFit || currentLine.width + width + spaceWidth < lineWidth)) {\n // Word can be added to an existing line\n currentLine.words.push(word);\n currentLine.width += width + spaceWidth;\n } else {\n // Add first word to line or word is too long to scaleToFit on existing line\n var newLine = {\n words: [word],\n width: width\n };\n result.push(newLine);\n }\n\n return result;\n }, []);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n dx = _this$props.dx,\n dy = _this$props.dy,\n textAnchor = _this$props.textAnchor,\n verticalAnchor = _this$props.verticalAnchor,\n scaleToFit = _this$props.scaleToFit,\n angle = _this$props.angle,\n lineHeight = _this$props.lineHeight,\n capHeight = _this$props.capHeight,\n className = _this$props.className,\n textProps = _objectWithoutProperties(_this$props, [\"dx\", \"dy\", \"textAnchor\", \"verticalAnchor\", \"scaleToFit\", \"angle\", \"lineHeight\", \"capHeight\", \"className\"]);\n\n var wordsByLines = this.state.wordsByLines;\n\n if (!isNumOrStr(textProps.x) || !isNumOrStr(textProps.y)) {\n return null;\n }\n\n var x = textProps.x + (isNumber(dx) ? dx : 0);\n var y = textProps.y + (isNumber(dy) ? dy : 0);\n var startDy;\n\n switch (verticalAnchor) {\n case 'start':\n startDy = reduceCSSCalc(\"calc(\".concat(capHeight, \")\"));\n break;\n\n case 'middle':\n startDy = reduceCSSCalc(\"calc(\".concat((wordsByLines.length - 1) / 2, \" * -\").concat(lineHeight, \" + (\").concat(capHeight, \" / 2))\"));\n break;\n\n default:\n startDy = reduceCSSCalc(\"calc(\".concat(wordsByLines.length - 1, \" * -\").concat(lineHeight, \")\"));\n break;\n }\n\n var transforms = [];\n\n if (scaleToFit) {\n var lineWidth = wordsByLines[0].width;\n transforms.push(\"scale(\".concat(this.props.width / lineWidth, \")\"));\n }\n\n if (angle) {\n transforms.push(\"rotate(\".concat(angle, \", \").concat(x, \", \").concat(y, \")\"));\n }\n\n if (transforms.length) {\n textProps.transform = transforms.join(' ');\n }\n\n return React.createElement(\"text\", _extends({}, getPresentationAttributes(textProps), filterEventAttributes(textProps), {\n x: x,\n y: y,\n className: classNames('recharts-text', className),\n textAnchor: textAnchor\n }), wordsByLines.map(function (line, index) {\n return (// eslint-disable-next-line react/no-array-index-key\n React.createElement(\"tspan\", {\n x: x,\n dy: index === 0 ? startDy : lineHeight,\n key: index\n }, line.words.join(' '))\n );\n }));\n }\n }]);\n\n return Text;\n}(Component);\n\nText.propTypes = _objectSpread({}, PRESENTATION_ATTRIBUTES, {\n scaleToFit: PropTypes.bool,\n angle: PropTypes.number,\n textAnchor: PropTypes.oneOf(['start', 'middle', 'end', 'inherit']),\n verticalAnchor: PropTypes.oneOf(['start', 'middle', 'end']),\n style: PropTypes.object\n});\nText.defaultProps = {\n x: 0,\n y: 0,\n lineHeight: '1em',\n capHeight: '0.71em',\n // Magic number from d3\n scaleToFit: false,\n textAnchor: 'start',\n verticalAnchor: 'end' // Maintain compat with existing charts / default SVG behavior\n\n};\nexport default Text;","import _isNil from \"lodash/isNil\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { getPercentValue } from './DataUtils';\nimport { parseScale, checkDomainOfScale, getTicksOfScale } from './ChartUtils';\nexport var RADIAN = Math.PI / 180;\nexport var degreeToRadian = function degreeToRadian(angle) {\n return angle * Math.PI / 180;\n};\nexport var radianToDegree = function radianToDegree(angleInRadian) {\n return angleInRadian * 180 / Math.PI;\n};\nexport var polarToCartesian = function polarToCartesian(cx, cy, radius, angle) {\n return {\n x: cx + Math.cos(-RADIAN * angle) * radius,\n y: cy + Math.sin(-RADIAN * angle) * radius\n };\n};\nexport var getMaxRadius = function getMaxRadius(width, height) {\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n return Math.min(Math.abs(width - (offset.left || 0) - (offset.right || 0)), Math.abs(height - (offset.top || 0) - (offset.bottom || 0))) / 2;\n};\n/**\n * Calculate the scale function, position, width, height of axes\n * @param {Object} props Latest props\n * @param {Object} axisMap The configuration of axes\n * @param {Object} offset The offset of main part in the svg element\n * @param {Object} axisType The type of axes, radius-axis or angle-axis\n * @param {String} chartName The name of chart\n * @return {Object} Configuration\n */\n\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width,\n height = props.height;\n var startAngle = props.startAngle,\n endAngle = props.endAngle;\n var cx = getPercentValue(props.cx, width, width / 2);\n var cy = getPercentValue(props.cy, height, height / 2);\n var maxRadius = getMaxRadius(width, height, offset);\n var innerRadius = getPercentValue(props.innerRadius, maxRadius, 0);\n var outerRadius = getPercentValue(props.outerRadius, maxRadius, maxRadius * 0.8);\n var ids = Object.keys(axisMap);\n return ids.reduce(function (result, id) {\n var axis = axisMap[id];\n var domain = axis.domain,\n reversed = axis.reversed;\n var range;\n\n if (_isNil(axis.range)) {\n if (axisType === 'angleAxis') {\n range = [startAngle, endAngle];\n } else if (axisType === 'radiusAxis') {\n range = [innerRadius, outerRadius];\n }\n\n if (reversed) {\n range = [range[1], range[0]];\n }\n } else {\n range = axis.range;\n var _range = range;\n\n var _range2 = _slicedToArray(_range, 2);\n\n startAngle = _range2[0];\n endAngle = _range2[1];\n }\n\n var _parseScale = parseScale(axis, chartName),\n realScaleType = _parseScale.realScaleType,\n scale = _parseScale.scale;\n\n scale.domain(domain).range(range);\n checkDomainOfScale(scale);\n var ticks = getTicksOfScale(scale, _objectSpread({}, axis, {\n realScaleType: realScaleType\n }));\n\n var finalAxis = _objectSpread({}, axis, {}, ticks, {\n range: range,\n radius: outerRadius,\n realScaleType: realScaleType,\n scale: scale,\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n\n return _objectSpread({}, result, _defineProperty({}, id, finalAxis));\n }, {});\n};\nexport var distanceBetweenPoints = function distanceBetweenPoints(point, anotherPoint) {\n var x1 = point.x,\n y1 = point.y;\n var x2 = anotherPoint.x,\n y2 = anotherPoint.y;\n return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));\n};\nexport var getAngleOfPoint = function getAngleOfPoint(_ref, _ref2) {\n var x = _ref.x,\n y = _ref.y;\n var cx = _ref2.cx,\n cy = _ref2.cy;\n var radius = distanceBetweenPoints({\n x: x,\n y: y\n }, {\n x: cx,\n y: cy\n });\n\n if (radius <= 0) {\n return {\n radius: radius\n };\n }\n\n var cos = (x - cx) / radius;\n var angleInRadian = Math.acos(cos);\n\n if (y > cy) {\n angleInRadian = 2 * Math.PI - angleInRadian;\n }\n\n return {\n radius: radius,\n angle: radianToDegree(angleInRadian),\n angleInRadian: angleInRadian\n };\n};\nexport var formatAngleOfSector = function formatAngleOfSector(_ref3) {\n var startAngle = _ref3.startAngle,\n endAngle = _ref3.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return {\n startAngle: startAngle - min * 360,\n endAngle: endAngle - min * 360\n };\n};\n\nvar reverseFormatAngleOfSetor = function reverseFormatAngleOfSetor(angle, _ref4) {\n var startAngle = _ref4.startAngle,\n endAngle = _ref4.endAngle;\n var startCnt = Math.floor(startAngle / 360);\n var endCnt = Math.floor(endAngle / 360);\n var min = Math.min(startCnt, endCnt);\n return angle + min * 360;\n};\n\nexport var inRangeOfSector = function inRangeOfSector(_ref5, sector) {\n var x = _ref5.x,\n y = _ref5.y;\n\n var _getAngleOfPoint = getAngleOfPoint({\n x: x,\n y: y\n }, sector),\n radius = _getAngleOfPoint.radius,\n angle = _getAngleOfPoint.angle;\n\n var innerRadius = sector.innerRadius,\n outerRadius = sector.outerRadius;\n\n if (radius < innerRadius || radius > outerRadius) {\n return false;\n }\n\n if (radius === 0) {\n return true;\n }\n\n var _formatAngleOfSector = formatAngleOfSector(sector),\n startAngle = _formatAngleOfSector.startAngle,\n endAngle = _formatAngleOfSector.endAngle;\n\n var formatAngle = angle;\n var inRange;\n\n if (startAngle <= endAngle) {\n while (formatAngle > endAngle) {\n formatAngle -= 360;\n }\n\n while (formatAngle < startAngle) {\n formatAngle += 360;\n }\n\n inRange = formatAngle >= startAngle && formatAngle <= endAngle;\n } else {\n while (formatAngle > startAngle) {\n formatAngle -= 360;\n }\n\n while (formatAngle < endAngle) {\n formatAngle += 360;\n }\n\n inRange = formatAngle >= endAngle && formatAngle <= startAngle;\n }\n\n if (inRange) {\n return _objectSpread({}, sector, {\n radius: radius,\n angle: reverseFormatAngleOfSetor(formatAngle, sector)\n });\n }\n\n return null;\n};","import _isObject from \"lodash/isObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { cloneElement, isValidElement } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Text from './Text';\nimport { PRESENTATION_ATTRIBUTES, getPresentationAttributes, findAllByType, filterEventAttributes } from '../util/ReactUtils';\nimport { isNumOrStr, isNumber, isPercent, getPercentValue, uniqueId, mathSign } from '../util/DataUtils';\nimport { polarToCartesian } from '../util/PolarUtils';\nvar cartesianViewBoxShape = PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number,\n width: PropTypes.number,\n height: PropTypes.number\n});\nvar polarViewBoxShape = PropTypes.shape({\n cx: PropTypes.number,\n cy: PropTypes.number,\n innerRadius: PropTypes.number,\n outerRadius: PropTypes.number,\n startAngle: PropTypes.number,\n endAngle: PropTypes.number\n});\n\nvar propTypes = _objectSpread({}, PRESENTATION_ATTRIBUTES, {\n viewBox: PropTypes.oneOfType([cartesianViewBoxShape, polarViewBoxShape]),\n formatter: PropTypes.func,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n offset: PropTypes.number,\n position: PropTypes.oneOf(['top', 'left', 'right', 'bottom', 'inside', 'outside', 'insideLeft', 'insideRight', 'insideTop', 'insideBottom', 'insideTopLeft', 'insideBottomLeft', 'insideTopRight', 'insideBottomRight', 'insideStart', 'insideEnd', 'end', 'center', 'centerTop', 'centerBottom']),\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n className: PropTypes.string,\n content: PropTypes.oneOfType([PropTypes.element, PropTypes.func])\n});\n\nvar defaultProps = {\n offset: 5\n};\n\nvar getLabel = function getLabel(props) {\n var value = props.value,\n formatter = props.formatter;\n var label = _isNil(props.children) ? value : props.children;\n\n if (_isFunction(formatter)) {\n return formatter(label);\n }\n\n return label;\n};\n\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);\n return sign * deltaAngle;\n};\n\nvar renderRadialLabel = function renderRadialLabel(labelProps, label, attrs) {\n var position = labelProps.position,\n viewBox = labelProps.viewBox,\n offset = labelProps.offset,\n className = labelProps.className;\n var cx = viewBox.cx,\n cy = viewBox.cy,\n innerRadius = viewBox.innerRadius,\n outerRadius = viewBox.outerRadius,\n startAngle = viewBox.startAngle,\n endAngle = viewBox.endAngle,\n clockWise = viewBox.clockWise;\n var radius = (innerRadius + outerRadius) / 2;\n var deltaAngle = getDeltaAngle(startAngle, endAngle);\n var sign = deltaAngle >= 0 ? 1 : -1;\n var labelAngle, direction;\n\n if (position === 'insideStart') {\n labelAngle = startAngle + sign * offset;\n direction = clockWise;\n } else if (position === 'insideEnd') {\n labelAngle = endAngle - sign * offset;\n direction = !clockWise;\n } else if (position === 'end') {\n labelAngle = endAngle + sign * offset;\n direction = clockWise;\n }\n\n direction = deltaAngle <= 0 ? direction : !direction;\n var startPoint = polarToCartesian(cx, cy, radius, labelAngle);\n var endPoint = polarToCartesian(cx, cy, radius, labelAngle + (direction ? 1 : -1) * 359);\n var path = \"M\".concat(startPoint.x, \",\").concat(startPoint.y, \"\\n A\").concat(radius, \",\").concat(radius, \",0,1,\").concat(direction ? 0 : 1, \",\\n \").concat(endPoint.x, \",\").concat(endPoint.y);\n var id = _isNil(labelProps.id) ? uniqueId('recharts-radial-line-') : labelProps.id;\n return React.createElement(\"text\", _extends({}, attrs, {\n dominantBaseline: \"central\",\n className: classNames('recharts-radial-bar-label', className)\n }), React.createElement(\"defs\", null, React.createElement(\"path\", {\n id: id,\n d: path\n })), React.createElement(\"textPath\", {\n xlinkHref: \"#\".concat(id)\n }, label));\n};\n\nvar getAttrsOfPolarLabel = function getAttrsOfPolarLabel(props) {\n var viewBox = props.viewBox,\n offset = props.offset,\n position = props.position;\n var cx = viewBox.cx,\n cy = viewBox.cy,\n innerRadius = viewBox.innerRadius,\n outerRadius = viewBox.outerRadius,\n startAngle = viewBox.startAngle,\n endAngle = viewBox.endAngle;\n var midAngle = (startAngle + endAngle) / 2;\n\n if (position === 'outside') {\n var _polarToCartesian = polarToCartesian(cx, cy, outerRadius + offset, midAngle),\n _x = _polarToCartesian.x,\n _y = _polarToCartesian.y;\n\n return {\n x: _x,\n y: _y,\n textAnchor: _x >= cx ? 'start' : 'end',\n verticalAnchor: 'middle'\n };\n }\n\n if (position === 'center') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n }\n\n if (position === 'centerTop') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'start'\n };\n }\n\n if (position === 'centerBottom') {\n return {\n x: cx,\n y: cy,\n textAnchor: 'middle',\n verticalAnchor: 'end'\n };\n }\n\n var r = (innerRadius + outerRadius) / 2;\n\n var _polarToCartesian2 = polarToCartesian(cx, cy, r, midAngle),\n x = _polarToCartesian2.x,\n y = _polarToCartesian2.y;\n\n return {\n x: x,\n y: y,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n};\n\nvar getAttrsOfCartesianLabel = function getAttrsOfCartesianLabel(props) {\n var viewBox = props.viewBox,\n offset = props.offset,\n position = props.position;\n var x = viewBox.x,\n y = viewBox.y,\n width = viewBox.width,\n height = viewBox.height;\n var sign = height >= 0 ? 1 : -1;\n\n if (position === 'top') {\n return {\n x: x + width / 2,\n y: y - sign * offset,\n textAnchor: 'middle',\n verticalAnchor: sign > 0 ? 'end' : 'start'\n };\n }\n\n if (position === 'bottom') {\n return {\n x: x + width / 2,\n y: y + height + sign * offset,\n textAnchor: 'middle',\n verticalAnchor: 'start'\n };\n }\n\n if (position === 'left') {\n return {\n x: x - offset,\n y: y + height / 2,\n textAnchor: 'end',\n verticalAnchor: 'middle'\n };\n }\n\n if (position === 'right') {\n return {\n x: x + width + offset,\n y: y + height / 2,\n textAnchor: 'start',\n verticalAnchor: 'middle'\n };\n }\n\n if (position === 'insideLeft') {\n return {\n x: x + offset,\n y: y + height / 2,\n textAnchor: 'start',\n verticalAnchor: 'middle'\n };\n }\n\n if (position === 'insideRight') {\n return {\n x: x + width - offset,\n y: y + height / 2,\n textAnchor: 'end',\n verticalAnchor: 'middle'\n };\n }\n\n if (position === 'insideTop') {\n return {\n x: x + width / 2,\n y: y + sign * offset,\n textAnchor: 'middle',\n verticalAnchor: 'start'\n };\n }\n\n if (position === 'insideBottom') {\n return {\n x: x + width / 2,\n y: y + height - sign * offset,\n textAnchor: 'middle',\n verticalAnchor: 'end'\n };\n }\n\n if (position === 'insideTopLeft') {\n return {\n x: x + offset,\n y: y + sign * offset,\n textAnchor: 'start',\n verticalAnchor: 'start'\n };\n }\n\n if (position === 'insideTopRight') {\n return {\n x: x + width - offset,\n y: y + sign * offset,\n textAnchor: 'end',\n verticalAnchor: 'start'\n };\n }\n\n if (position === 'insideBottomLeft') {\n return {\n x: x + offset,\n y: y + height - sign * offset,\n textAnchor: 'start',\n verticalAnchor: 'end'\n };\n }\n\n if (position === 'insideBottomRight') {\n return {\n x: x + width - offset,\n y: y + height - sign * offset,\n textAnchor: 'end',\n verticalAnchor: 'end'\n };\n }\n\n if (_isObject(position) && (isNumber(position.x) || isPercent(position.x)) && (isNumber(position.y) || isPercent(position.y))) {\n return {\n x: x + getPercentValue(position.x, width),\n y: y + getPercentValue(position.y, height),\n textAnchor: 'end',\n verticalAnchor: 'end'\n };\n }\n\n return {\n x: x + width / 2,\n y: y + height / 2,\n textAnchor: 'middle',\n verticalAnchor: 'middle'\n };\n};\n\nvar isPolar = function isPolar(viewBox) {\n return isNumber(viewBox.cx);\n};\n\nfunction Label(props) {\n var viewBox = props.viewBox,\n position = props.position,\n value = props.value,\n children = props.children,\n content = props.content,\n _props$className = props.className,\n className = _props$className === void 0 ? '' : _props$className;\n\n if (!viewBox || _isNil(value) && _isNil(children) && !isValidElement(content) && !_isFunction(content)) {\n return null;\n }\n\n if (isValidElement(content)) {\n return cloneElement(content, props);\n }\n\n var label;\n\n if (_isFunction(content)) {\n label = content(props);\n\n if (isValidElement(label)) {\n return label;\n }\n } else {\n label = getLabel(props);\n }\n\n var isPolarLabel = isPolar(viewBox);\n var attrs = getPresentationAttributes(props);\n var events = filterEventAttributes(props);\n\n if (isPolarLabel && (position === 'insideStart' || position === 'insideEnd' || position === 'end')) {\n return renderRadialLabel(props, label, attrs);\n }\n\n var positionAttrs = isPolarLabel ? getAttrsOfPolarLabel(props) : getAttrsOfCartesianLabel(props);\n return React.createElement(Text, _extends({\n className: classNames('recharts-label', className)\n }, attrs, positionAttrs, events), label);\n}\n\nLabel.displayName = 'Label';\nLabel.defaultProps = defaultProps;\nLabel.propTypes = propTypes;\n\nvar parseViewBox = function parseViewBox(props) {\n var cx = props.cx,\n cy = props.cy,\n angle = props.angle,\n startAngle = props.startAngle,\n endAngle = props.endAngle,\n r = props.r,\n radius = props.radius,\n innerRadius = props.innerRadius,\n outerRadius = props.outerRadius,\n x = props.x,\n y = props.y,\n top = props.top,\n left = props.left,\n width = props.width,\n height = props.height,\n clockWise = props.clockWise;\n\n if (isNumber(width) && isNumber(height)) {\n if (isNumber(x) && isNumber(y)) {\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n }\n\n if (isNumber(top) && isNumber(left)) {\n return {\n x: top,\n y: left,\n width: width,\n height: height\n };\n }\n }\n\n if (isNumber(x) && isNumber(y)) {\n return {\n x: x,\n y: y,\n width: 0,\n height: 0\n };\n }\n\n if (isNumber(cx) && isNumber(cy)) {\n return {\n cx: cx,\n cy: cy,\n startAngle: startAngle || angle || 0,\n endAngle: endAngle || angle || 0,\n innerRadius: innerRadius || 0,\n outerRadius: outerRadius || radius || r || 0,\n clockWise: clockWise\n };\n }\n\n if (props.viewBox) {\n return props.viewBox;\n }\n\n return {};\n};\n\nvar parseLabel = function parseLabel(label, viewBox) {\n if (!label) {\n return null;\n }\n\n if (label === true) {\n return React.createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox\n });\n }\n\n if (isNumOrStr(label)) {\n return React.createElement(Label, {\n key: \"label-implicit\",\n viewBox: viewBox,\n value: label\n });\n }\n\n if (isValidElement(label)) {\n if (label.type === Label) {\n return cloneElement(label, {\n key: 'label-implicit',\n viewBox: viewBox\n });\n }\n\n return React.createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n\n if (_isFunction(label)) {\n return React.createElement(Label, {\n key: \"label-implicit\",\n content: label,\n viewBox: viewBox\n });\n }\n\n if (_isObject(label)) {\n return React.createElement(Label, _extends({\n viewBox: viewBox\n }, label, {\n key: \"label-implicit\"\n }));\n }\n\n return null;\n};\n\nvar renderCallByParent = function renderCallByParent(parentProps, viewBox) {\n var ckeckPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (!parentProps || !parentProps.children && ckeckPropsLabel && !parentProps.label) {\n return null;\n }\n\n var children = parentProps.children;\n var parentViewBox = parseViewBox(parentProps);\n var explicitChilren = findAllByType(children, Label).map(function (child, index) {\n return cloneElement(child, {\n viewBox: viewBox || parentViewBox,\n key: \"label-\".concat(index)\n });\n });\n\n if (!ckeckPropsLabel) {\n return explicitChilren;\n }\n\n var implicitLabel = parseLabel(parentProps.label, viewBox || parentViewBox);\n return [implicitLabel].concat(_toConsumableArray(explicitChilren));\n};\n\nLabel.parseViewBox = parseViewBox;\nLabel.renderCallByParent = renderCallByParent;\nexport default Label;","export var ifOverflowMatches = function ifOverflowMatches(props, value) {\n var alwaysShow = props.alwaysShow;\n var ifOverflow = props.ifOverflow;\n\n if (alwaysShow) {\n ifOverflow = 'extendDomain';\n }\n\n return ifOverflow === value;\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar identity = function identity(i) {\n return i;\n};\n\nexport var PLACE_HOLDER = {\n '@@functional/placeholder': true\n};\n\nvar isPlaceHolder = function isPlaceHolder(val) {\n return val === PLACE_HOLDER;\n};\n\nvar curry0 = function curry0(fn) {\n return function _curried() {\n if (arguments.length === 0 || arguments.length === 1 && isPlaceHolder(arguments.length <= 0 ? undefined : arguments[0])) {\n return _curried;\n }\n\n return fn.apply(void 0, arguments);\n };\n};\n\nvar curryN = function curryN(n, fn) {\n if (n === 1) {\n return fn;\n }\n\n return curry0(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var argsLength = args.filter(function (arg) {\n return arg !== PLACE_HOLDER;\n }).length;\n\n if (argsLength >= n) {\n return fn.apply(void 0, args);\n }\n\n return curryN(n - argsLength, curry0(function () {\n for (var _len2 = arguments.length, restArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n restArgs[_key2] = arguments[_key2];\n }\n\n var newArgs = args.map(function (arg) {\n return isPlaceHolder(arg) ? restArgs.shift() : arg;\n });\n return fn.apply(void 0, _toConsumableArray(newArgs).concat(restArgs));\n }));\n });\n};\n\nexport var curry = function curry(fn) {\n return curryN(fn.length, fn);\n};\nexport var range = function range(begin, end) {\n var arr = [];\n\n for (var i = begin; i < end; ++i) {\n arr[i - begin] = i;\n }\n\n return arr;\n};\nexport var map = curry(function (fn, arr) {\n if (Array.isArray(arr)) {\n return arr.map(fn);\n }\n\n return Object.keys(arr).map(function (key) {\n return arr[key];\n }).map(fn);\n});\nexport var compose = function compose() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n if (!args.length) {\n return identity;\n }\n\n var fns = args.reverse(); // first function can receive multiply arguments\n\n var firstFn = fns[0];\n var tailsFn = fns.slice(1);\n return function () {\n return tailsFn.reduce(function (res, fn) {\n return fn(res);\n }, firstFn.apply(void 0, arguments));\n };\n};\nexport var reverse = function reverse(arr) {\n if (Array.isArray(arr)) {\n return arr.reverse();\n } // can be string\n\n\n return arr.split('').reverse.join('');\n};\nexport var memoize = function memoize(fn) {\n var lastArgs = null;\n var lastResult = null;\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n if (lastArgs && args.every(function (val, i) {\n return val === lastArgs[i];\n })) {\n return lastResult;\n }\n\n lastArgs = args;\n lastResult = fn.apply(void 0, args);\n return lastResult;\n };\n};","/**\n * @fileOverview 一些公用的运算方法\n * @author xile611\n * @date 2015-09-17\n */\nimport Decimal from 'decimal.js-light';\nimport { curry } from './utils';\n/**\n * 获取数值的位数\n * 其中绝对值属于区间[0.1, 1), 得到的值为0\n * 绝对值属于区间[0.01, 0.1),得到的位数为 -1\n * 绝对值属于区间[0.001, 0.01),得到的位数为 -2\n *\n * @param {Number} value 数值\n * @return {Integer} 位数\n */\n\nfunction getDigitCount(value) {\n var result;\n\n if (value === 0) {\n result = 1;\n } else {\n result = Math.floor(new Decimal(value).abs().log(10).toNumber()) + 1;\n }\n\n return result;\n}\n/**\n * 按照固定的步长获取[start, end)这个区间的数据\n * 并且需要处理js计算精度的问题\n *\n * @param {Decimal} start 起点\n * @param {Decimal} end 终点,不包含该值\n * @param {Decimal} step 步长\n * @return {Array} 若干数值\n */\n\n\nfunction rangeStep(start, end, step) {\n var num = new Decimal(start);\n var i = 0;\n var result = []; // magic number to prevent infinite loop\n\n while (num.lt(end) && i < 100000) {\n result.push(num.toNumber());\n num = num.add(step);\n i++;\n }\n\n return result;\n}\n/**\n * 对数值进行线性插值\n *\n * @param {Number} a 定义域的极点\n * @param {Number} b 定义域的极点\n * @param {Number} t [0, 1]内的某个值\n * @return {Number} 定义域内的某个值\n */\n\n\nvar interpolateNumber = curry(function (a, b, t) {\n var newA = +a;\n var newB = +b;\n return newA + t * (newB - newA);\n});\n/**\n * 线性插值的逆运算\n *\n * @param {Number} a 定义域的极点\n * @param {Number} b 定义域的极点\n * @param {Number} x 可以认为是插值后的一个输出值\n * @return {Number} 当x在 a ~ b这个范围内时,返回值属于[0, 1]\n */\n\nvar uninterpolateNumber = curry(function (a, b, x) {\n var diff = b - +a;\n diff = diff || Infinity;\n return (x - a) / diff;\n});\n/**\n * 线性插值的逆运算,并且有截断的操作\n *\n * @param {Number} a 定义域的极点\n * @param {Number} b 定义域的极点\n * @param {Number} x 可以认为是插值后的一个输出值\n * @return {Number} 当x在 a ~ b这个区间内时,返回值属于[0, 1],\n * 当x不在 a ~ b这个区间时,会截断到 a ~ b 这个区间\n */\n\nvar uninterpolateTruncation = curry(function (a, b, x) {\n var diff = b - +a;\n diff = diff || Infinity;\n return Math.max(0, Math.min(1, (x - a) / diff));\n});\nexport default {\n rangeStep: rangeStep,\n getDigitCount: getDigitCount,\n interpolateNumber: interpolateNumber,\n uninterpolateNumber: uninterpolateNumber,\n uninterpolateTruncation: uninterpolateTruncation\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/**\n * @fileOverview calculate tick values of scale\n * @author xile611, arcthur\n * @date 2015-09-17\n */\nimport Decimal from 'decimal.js-light';\nimport { compose, range, memoize, map, reverse } from './util/utils';\nimport Arithmetic from './util/arithmetic';\n/**\n * Calculate a interval of a minimum value and a maximum value\n *\n * @param {Number} min The minimum value\n * @param {Number} max The maximum value\n * @return {Array} An interval\n */\n\nfunction getValidInterval(_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n min = _ref2[0],\n max = _ref2[1];\n\n var validMin = min,\n validMax = max; // exchange\n\n if (min > max) {\n validMin = max;\n validMax = min;\n }\n\n return [validMin, validMax];\n}\n/**\n * Calculate the step which is easy to understand between ticks, like 10, 20, 25\n *\n * @param {Decimal} roughStep The rough step calculated by deviding the\n * difference by the tickCount\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @param {Integer} correctionFactor A correction factor\n * @return {Decimal} The step which is easy to understand between two ticks\n */\n\n\nfunction getFormatStep(roughStep, allowDecimals, correctionFactor) {\n if (roughStep.lte(0)) {\n return new Decimal(0);\n }\n\n var digitCount = Arithmetic.getDigitCount(roughStep.toNumber()); // The ratio between the rough step and the smallest number which has a bigger\n // order of magnitudes than the rough step\n\n var digitCountValue = new Decimal(10).pow(digitCount);\n var stepRatio = roughStep.div(digitCountValue); // When an integer and a float multiplied, the accuracy of result may be wrong\n\n var stepRatioScale = digitCount !== 1 ? 0.05 : 0.1;\n var amendStepRatio = new Decimal(Math.ceil(stepRatio.div(stepRatioScale).toNumber())).add(correctionFactor).mul(stepRatioScale);\n var formatStep = amendStepRatio.mul(digitCountValue);\n return allowDecimals ? formatStep : new Decimal(Math.ceil(formatStep));\n}\n/**\n * calculate the ticks when the minimum value equals to the maximum value\n *\n * @param {Number} value The minimum valuue which is also the maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickOfSingleValue(value, tickCount, allowDecimals) {\n var step = 1; // calculate the middle value of ticks\n\n var middle = new Decimal(value);\n\n if (!middle.isint() && allowDecimals) {\n var absVal = Math.abs(value);\n\n if (absVal < 1) {\n // The step should be a float number when the difference is smaller than 1\n step = new Decimal(10).pow(Arithmetic.getDigitCount(value) - 1);\n middle = new Decimal(Math.floor(middle.div(step).toNumber())).mul(step);\n } else if (absVal > 1) {\n // Return the maximum integer which is smaller than 'value' when 'value' is greater than 1\n middle = new Decimal(Math.floor(value));\n }\n } else if (value === 0) {\n middle = new Decimal(Math.floor((tickCount - 1) / 2));\n } else if (!allowDecimals) {\n middle = new Decimal(Math.floor(value));\n }\n\n var middleIndex = Math.floor((tickCount - 1) / 2);\n var fn = compose(map(function (n) {\n return middle.add(new Decimal(n - middleIndex).mul(step)).toNumber();\n }), range);\n return fn(0, tickCount);\n}\n/**\n * Calculate the step\n *\n * @param {Number} min The minimum value of an interval\n * @param {Number} max The maximum value of an interval\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @param {Number} correctionFactor A correction factor\n * @return {Object} The step, minimum value of ticks, maximum value of ticks\n */\n\n\nfunction calculateStep(min, max, tickCount, allowDecimals) {\n var correctionFactor = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n\n // dirty hack (for recharts' test)\n if (!Number.isFinite((max - min) / (tickCount - 1))) {\n return {\n step: new Decimal(0),\n tickMin: new Decimal(0),\n tickMax: new Decimal(0)\n };\n } // The step which is easy to understand between two ticks\n\n\n var step = getFormatStep(new Decimal(max).sub(min).div(tickCount - 1), allowDecimals, correctionFactor); // A medial value of ticks\n\n var middle; // When 0 is inside the interval, 0 should be a tick\n\n if (min <= 0 && max >= 0) {\n middle = new Decimal(0);\n } else {\n // calculate the middle value\n middle = new Decimal(min).add(max).div(2); // minus modulo value\n\n middle = middle.sub(new Decimal(middle).mod(step));\n }\n\n var belowCount = Math.ceil(middle.sub(min).div(step).toNumber());\n var upCount = Math.ceil(new Decimal(max).sub(middle).div(step).toNumber());\n var scaleCount = belowCount + upCount + 1;\n\n if (scaleCount > tickCount) {\n // When more ticks need to cover the interval, step should be bigger.\n return calculateStep(min, max, tickCount, allowDecimals, correctionFactor + 1);\n }\n\n if (scaleCount < tickCount) {\n // When less ticks can cover the interval, we should add some additional ticks\n upCount = max > 0 ? upCount + (tickCount - scaleCount) : upCount;\n belowCount = max > 0 ? belowCount : belowCount + (tickCount - scaleCount);\n }\n\n return {\n step: step,\n tickMin: middle.sub(new Decimal(belowCount).mul(step)),\n tickMax: middle.add(new Decimal(upCount).mul(step))\n };\n}\n/**\n * Calculate the ticks of an interval, the count of ticks will be guraranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getNiceTickValuesFn(_ref3) {\n var _ref4 = _slicedToArray(_ref3, 2),\n min = _ref4[0],\n max = _ref4[1];\n\n var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // More than two ticks should be return\n var count = Math.max(tickCount, 2);\n\n var _getValidInterval = getValidInterval([min, max]),\n _getValidInterval2 = _slicedToArray(_getValidInterval, 2),\n cormin = _getValidInterval2[0],\n cormax = _getValidInterval2[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n var _values = cormax === Infinity ? [cormin].concat(_toConsumableArray(range(0, tickCount - 1).map(function () {\n return Infinity;\n }))) : [].concat(_toConsumableArray(range(0, tickCount - 1).map(function () {\n return -Infinity;\n })), [cormax]);\n\n return min > max ? reverse(_values) : _values;\n }\n\n if (cormin === cormax) {\n return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n } // Get the step between two ticks\n\n\n var _calculateStep = calculateStep(cormin, cormax, count, allowDecimals),\n step = _calculateStep.step,\n tickMin = _calculateStep.tickMin,\n tickMax = _calculateStep.tickMax;\n\n var values = Arithmetic.rangeStep(tickMin, tickMax.add(new Decimal(0.1).mul(step)), step);\n return min > max ? reverse(values) : values;\n}\n/**\n * Calculate the ticks of an interval, the count of ticks won't be guraranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickValuesFn(_ref5) {\n var _ref6 = _slicedToArray(_ref5, 2),\n min = _ref6[0],\n max = _ref6[1];\n\n var tickCount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 6;\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n // More than two ticks should be return\n var count = Math.max(tickCount, 2);\n\n var _getValidInterval3 = getValidInterval([min, max]),\n _getValidInterval4 = _slicedToArray(_getValidInterval3, 2),\n cormin = _getValidInterval4[0],\n cormax = _getValidInterval4[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n return [min, max];\n }\n\n if (cormin === cormax) {\n return getTickOfSingleValue(cormin, tickCount, allowDecimals);\n }\n\n var step = getFormatStep(new Decimal(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n var fn = compose(map(function (n) {\n return new Decimal(cormin).add(new Decimal(n).mul(step)).toNumber();\n }), range);\n var values = fn(0, count).filter(function (entry) {\n return entry >= cormin && entry <= cormax;\n });\n return min > max ? reverse(values) : values;\n}\n/**\n * Calculate the ticks of an interval, the count of ticks won't be guraranteed,\n * but the domain will be guaranteed\n *\n * @param {Number} min, max min: The minimum value, max: The maximum value\n * @param {Integer} tickCount The count of ticks\n * @param {Boolean} allowDecimals Allow the ticks to be decimals or not\n * @return {Array} ticks\n */\n\n\nfunction getTickValuesFixedDomainFn(_ref7, tickCount) {\n var _ref8 = _slicedToArray(_ref7, 2),\n min = _ref8[0],\n max = _ref8[1];\n\n var allowDecimals = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n // More than two ticks should be return\n var _getValidInterval5 = getValidInterval([min, max]),\n _getValidInterval6 = _slicedToArray(_getValidInterval5, 2),\n cormin = _getValidInterval6[0],\n cormax = _getValidInterval6[1];\n\n if (cormin === -Infinity || cormax === Infinity) {\n return [min, max];\n }\n\n if (cormin === cormax) {\n return [cormin];\n }\n\n var count = Math.max(tickCount, 2);\n var step = getFormatStep(new Decimal(cormax).sub(cormin).div(count - 1), allowDecimals, 0);\n var values = [].concat(_toConsumableArray(Arithmetic.rangeStep(new Decimal(cormin), new Decimal(cormax).sub(new Decimal(0.99).mul(step)), step)), [cormax]);\n return min > max ? reverse(values) : values;\n}\n\nexport var getNiceTickValues = memoize(getNiceTickValuesFn);\nexport var getTickValues = memoize(getTickValuesFn);\nexport var getTickValuesFixedDomain = memoize(getTickValuesFixedDomainFn);","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n var index = map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? map.call(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\nimport {initRange} from \"./init\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect} from \"d3-array\";\nimport {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (!isNaN(x = +x)) return interpolator((bisect(domain, x) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {copy} from \"./sequential\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","export var slice = Array.prototype.slice;\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = order(sz); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Render a group of error bar\n*/\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Layer from '../container/Layer';\nimport { getPresentationAttributes } from '../util/ReactUtils';\n\nvar ErrorBar =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ErrorBar, _Component);\n\n function ErrorBar() {\n _classCallCheck(this, ErrorBar);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ErrorBar).apply(this, arguments));\n }\n\n _createClass(ErrorBar, [{\n key: \"renderErrorBars\",\n value: function renderErrorBars() {\n var _this$props = this.props,\n offset = _this$props.offset,\n layout = _this$props.layout,\n width = _this$props.width,\n dataKey = _this$props.dataKey,\n data = _this$props.data,\n dataPointFormatter = _this$props.dataPointFormatter,\n xAxis = _this$props.xAxis,\n yAxis = _this$props.yAxis,\n others = _objectWithoutProperties(_this$props, [\"offset\", \"layout\", \"width\", \"dataKey\", \"data\", \"dataPointFormatter\", \"xAxis\", \"yAxis\"]);\n\n var props = getPresentationAttributes(others);\n return data.map(function (entry, i) {\n var _dataPointFormatter = dataPointFormatter(entry, dataKey),\n x = _dataPointFormatter.x,\n y = _dataPointFormatter.y,\n value = _dataPointFormatter.value,\n errorVal = _dataPointFormatter.errorVal;\n\n if (!errorVal) {\n return null;\n }\n\n var xMid, yMid, xMin, yMin, xMax, yMax, scale, coordsTop, coordsMid, coordsBot, lowBound, highBound;\n\n if (Array.isArray(errorVal)) {\n var _errorVal = _slicedToArray(errorVal, 2);\n\n lowBound = _errorVal[0];\n highBound = _errorVal[1];\n } else {\n lowBound = highBound = errorVal;\n }\n\n if (layout === 'vertical') {\n scale = xAxis.scale;\n xMid = value;\n yMid = y + offset;\n xMin = scale(xMid - lowBound);\n yMin = yMid + width;\n xMax = scale(xMid + highBound);\n yMax = yMid - width;\n coordsTop = {\n x1: xMax,\n y1: yMin,\n x2: xMax,\n y2: yMax\n };\n coordsMid = {\n x1: xMin,\n y1: yMid,\n x2: xMax,\n y2: yMid\n };\n coordsBot = {\n x1: xMin,\n y1: yMin,\n x2: xMin,\n y2: yMax\n };\n } else if (layout === 'horizontal') {\n scale = yAxis.scale;\n xMid = x + offset;\n yMid = value;\n xMin = xMid - width;\n xMax = xMid + width;\n yMin = scale(yMid - lowBound);\n yMax = scale(yMid + highBound);\n coordsTop = {\n x1: xMin,\n y1: yMax,\n x2: xMax,\n y2: yMax\n };\n coordsMid = {\n x1: xMid,\n y1: yMin,\n x2: xMid,\n y2: yMax\n };\n coordsBot = {\n x1: xMin,\n y1: yMin,\n x2: xMax,\n y2: yMin\n };\n }\n\n return (// eslint-disable-next-line react/no-array-index-key\n React.createElement(Layer, _extends({\n className: \"recharts-errorBar\",\n key: \"bar-\".concat(i)\n }, props), React.createElement(\"line\", coordsTop), React.createElement(\"line\", coordsMid), React.createElement(\"line\", coordsBot))\n );\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n return React.createElement(Layer, {\n className: \"recharts-errorBars\"\n }, this.renderErrorBars());\n }\n }]);\n\n return ErrorBar;\n}(Component);\n\nErrorBar.propTypes = {\n dataKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.func]).isRequired,\n data: PropTypes.array,\n xAxis: PropTypes.object,\n yAxis: PropTypes.object,\n layout: PropTypes.string,\n dataPointFormatter: PropTypes.func,\n stroke: PropTypes.string,\n strokeWidth: PropTypes.number,\n width: PropTypes.number,\n offset: PropTypes.number\n};\nErrorBar.defaultProps = {\n stroke: 'black',\n strokeWidth: 1.5,\n width: 5,\n offset: 0,\n layout: 'horizontal'\n};\nexport default ErrorBar;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/**\n * @fileOverview Surface\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { getPresentationAttributes } from '../util/ReactUtils';\nvar propTypes = {\n width: PropTypes.number.isRequired,\n height: PropTypes.number.isRequired,\n viewBox: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number,\n width: PropTypes.number,\n height: PropTypes.number\n }),\n className: PropTypes.string,\n style: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node])\n};\n\nfunction Surface(props) {\n var children = props.children,\n width = props.width,\n height = props.height,\n viewBox = props.viewBox,\n className = props.className,\n style = props.style,\n others = _objectWithoutProperties(props, [\"children\", \"width\", \"height\", \"viewBox\", \"className\", \"style\"]);\n\n var svgView = viewBox || {\n width: width,\n height: height,\n x: 0,\n y: 0\n };\n var layerClass = classNames('recharts-surface', className);\n var attrs = getPresentationAttributes(others);\n return React.createElement(\"svg\", _extends({}, attrs, {\n className: layerClass,\n width: width,\n height: height,\n style: style,\n viewBox: \"\".concat(svgView.x, \" \").concat(svgView.y, \" \").concat(svgView.width, \" \").concat(svgView.height),\n version: \"1.1\"\n }), children);\n}\n\nSurface.propTypes = propTypes;\nexport default Surface;","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Curve\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { symbol as shapeSymbol, symbolCircle, symbolCross, symbolDiamond, symbolSquare, symbolStar, symbolTriangle, symbolWye } from 'd3-shape';\nimport classNames from 'classnames';\nimport { PRESENTATION_ATTRIBUTES, getPresentationAttributes, filterEventAttributes } from '../util/ReactUtils';\nvar SYMBOL_FACTORIES = {\n symbolCircle: symbolCircle,\n symbolCross: symbolCross,\n symbolDiamond: symbolDiamond,\n symbolSquare: symbolSquare,\n symbolStar: symbolStar,\n symbolTriangle: symbolTriangle,\n symbolWye: symbolWye\n};\nvar RADIAN = Math.PI / 180;\n\nvar getSymbolFactory = function getSymbolFactory(type) {\n var name = \"symbol\".concat(type.slice(0, 1).toUpperCase()).concat(type.slice(1));\n return SYMBOL_FACTORIES[name] || symbolCircle;\n};\n\nvar calculateAreaSize = function calculateAreaSize(size, sizeType, type) {\n if (sizeType === 'area') {\n return size;\n }\n\n switch (type) {\n case 'cross':\n return 5 * size * size / 9;\n\n case 'diamond':\n return 0.5 * size * size / Math.sqrt(3);\n\n case 'square':\n return size * size;\n\n case 'star':\n {\n var angle = 18 * RADIAN;\n return 1.25 * size * size * (Math.tan(angle) - Math.tan(angle * 2) * Math.pow(Math.tan(angle), 2));\n }\n\n case 'triangle':\n return Math.sqrt(3) * size * size / 4;\n\n case 'wye':\n return (21 - 10 * Math.sqrt(3)) * size * size / 8;\n\n default:\n return Math.PI * size * size / 4;\n }\n};\n\nvar Symbols =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Symbols, _PureComponent);\n\n function Symbols() {\n _classCallCheck(this, Symbols);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Symbols).apply(this, arguments));\n }\n\n _createClass(Symbols, [{\n key: \"getPath\",\n\n /**\n * Calculate the path of curve\n * @return {String} path\n */\n value: function getPath() {\n var _this$props = this.props,\n size = _this$props.size,\n sizeType = _this$props.sizeType,\n type = _this$props.type;\n var symbolFactory = getSymbolFactory(type);\n var symbol = shapeSymbol().type(symbolFactory).size(calculateAreaSize(size, sizeType, type));\n return symbol();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n className = _this$props2.className,\n cx = _this$props2.cx,\n cy = _this$props2.cy,\n size = _this$props2.size;\n\n if (cx === +cx && cy === +cy && size === +size) {\n return React.createElement(\"path\", _extends({}, getPresentationAttributes(this.props), filterEventAttributes(this.props), {\n className: classNames('recharts-symbols', className),\n transform: \"translate(\".concat(cx, \", \").concat(cy, \")\"),\n d: this.getPath()\n }));\n }\n\n return null;\n }\n }]);\n\n return Symbols;\n}(PureComponent);\n\nSymbols.displayName = 'Symbols';\nSymbols.propTypes = _objectSpread({}, PRESENTATION_ATTRIBUTES, {\n className: PropTypes.string,\n type: PropTypes.oneOf(['circle', 'cross', 'diamond', 'square', 'star', 'triangle', 'wye']),\n cx: PropTypes.number,\n cy: PropTypes.number,\n size: PropTypes.number,\n sizeType: PropTypes.oneOf(['area', 'diameter'])\n});\nSymbols.defaultProps = {\n type: 'circle',\n size: 64,\n sizeType: 'area'\n};\nexport default Symbols;","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Default Legend Content\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Surface from '../container/Surface';\nimport Symbols from '../shape/Symbols';\nimport { filterEventsOfChild, LEGEND_TYPES } from '../util/ReactUtils';\nvar SIZE = 32;\nvar ICON_TYPES = LEGEND_TYPES.filter(function (type) {\n return type !== 'none';\n});\n\nvar DefaultLegendContent =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(DefaultLegendContent, _PureComponent);\n\n function DefaultLegendContent() {\n _classCallCheck(this, DefaultLegendContent);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(DefaultLegendContent).apply(this, arguments));\n }\n\n _createClass(DefaultLegendContent, [{\n key: \"renderIcon\",\n\n /**\n * Render the path of icon\n * @param {Object} data Data of each legend item\n * @return {String} Path element\n */\n value: function renderIcon(data) {\n var inactiveColor = this.props.inactiveColor;\n var halfSize = SIZE / 2;\n var sixthSize = SIZE / 6;\n var thirdSize = SIZE / 3;\n var color = data.inactive ? inactiveColor : data.color;\n\n if (data.type === 'plainline') {\n return React.createElement(\"line\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n strokeDasharray: data.payload.strokeDasharray,\n x1: 0,\n y1: halfSize,\n x2: SIZE,\n y2: halfSize,\n className: \"recharts-legend-icon\"\n });\n }\n\n if (data.type === 'line') {\n return React.createElement(\"path\", {\n strokeWidth: 4,\n fill: \"none\",\n stroke: color,\n d: \"M0,\".concat(halfSize, \"h\").concat(thirdSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n H\").concat(SIZE, \"M\").concat(2 * thirdSize, \",\").concat(halfSize, \"\\n A\").concat(sixthSize, \",\").concat(sixthSize, \",0,1,1,\").concat(thirdSize, \",\").concat(halfSize),\n className: \"recharts-legend-icon\"\n });\n }\n\n if (data.type === 'rect') {\n return React.createElement(\"path\", {\n stroke: \"none\",\n fill: color,\n d: \"M0,\".concat(SIZE / 8, \"h\").concat(SIZE, \"v\").concat(SIZE * 3 / 4, \"h\").concat(-SIZE, \"z\"),\n className: \"recharts-legend-icon\"\n });\n }\n\n return React.createElement(Symbols, {\n fill: color,\n cx: halfSize,\n cy: halfSize,\n size: SIZE,\n sizeType: \"diameter\",\n type: data.type\n });\n }\n /**\n * Draw items of legend\n * @return {ReactElement} Items\n */\n\n }, {\n key: \"renderItems\",\n value: function renderItems() {\n var _this = this;\n\n var _this$props = this.props,\n payload = _this$props.payload,\n iconSize = _this$props.iconSize,\n layout = _this$props.layout,\n formatter = _this$props.formatter;\n var viewBox = {\n x: 0,\n y: 0,\n width: SIZE,\n height: SIZE\n };\n var itemStyle = {\n display: layout === 'horizontal' ? 'inline-block' : 'block',\n marginRight: 10\n };\n var svgStyle = {\n display: 'inline-block',\n verticalAlign: 'middle',\n marginRight: 4\n };\n return payload.map(function (entry, i) {\n var _classNames;\n\n var finalFormatter = entry.formatter || formatter;\n var className = classNames((_classNames = {\n 'recharts-legend-item': true\n }, _defineProperty(_classNames, \"legend-item-\".concat(i), true), _defineProperty(_classNames, \"inactive\", entry.inactive), _classNames));\n\n if (entry.type === 'none') {\n return null;\n }\n\n return React.createElement(\"li\", _extends({\n className: className,\n style: itemStyle,\n key: \"legend-item-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n }, filterEventsOfChild(_this.props, entry, i)), React.createElement(Surface, {\n width: iconSize,\n height: iconSize,\n viewBox: viewBox,\n style: svgStyle\n }, _this.renderIcon(entry)), React.createElement(\"span\", {\n className: \"recharts-legend-item-text\"\n }, finalFormatter ? finalFormatter(entry.value, entry, i) : entry.value));\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n payload = _this$props2.payload,\n layout = _this$props2.layout,\n align = _this$props2.align;\n\n if (!payload || !payload.length) {\n return null;\n }\n\n var finalStyle = {\n padding: 0,\n margin: 0,\n textAlign: layout === 'horizontal' ? align : 'left'\n };\n return React.createElement(\"ul\", {\n className: \"recharts-default-legend\",\n style: finalStyle\n }, this.renderItems());\n }\n }]);\n\n return DefaultLegendContent;\n}(PureComponent);\n\nDefaultLegendContent.displayName = 'Legend';\nDefaultLegendContent.propTypes = {\n content: PropTypes.element,\n iconSize: PropTypes.number,\n iconType: PropTypes.oneOf(ICON_TYPES),\n layout: PropTypes.oneOf(['horizontal', 'vertical']),\n align: PropTypes.oneOf(['center', 'left', 'right']),\n verticalAlign: PropTypes.oneOf(['top', 'bottom', 'middle']),\n payload: PropTypes.arrayOf(PropTypes.shape({\n value: PropTypes.any,\n id: PropTypes.any,\n type: PropTypes.oneOf(LEGEND_TYPES)\n })),\n inactiveColor: PropTypes.string,\n formatter: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onClick: PropTypes.func\n};\nDefaultLegendContent.defaultProps = {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'middle',\n inactiveColor: '#ccc'\n};\nexport default DefaultLegendContent;","import _isFunction from \"lodash/isFunction\";\nimport _uniqBy from \"lodash/uniqBy\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Legend\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport DefaultLegendContent from './DefaultLegendContent';\nimport { isNumber } from '../util/DataUtils';\nimport { LEGEND_TYPES } from '../util/ReactUtils';\n\nvar defaultUniqBy = function defaultUniqBy(entry) {\n return entry.value;\n};\n\nvar getUniqPaylod = function getUniqPaylod(option, payload) {\n if (option === true) {\n return _uniqBy(payload, defaultUniqBy);\n }\n\n if (_isFunction(option)) {\n return _uniqBy(payload, option);\n }\n\n return payload;\n};\n\nvar renderContent = function renderContent(content, props) {\n if (React.isValidElement(content)) {\n return React.cloneElement(content, props);\n }\n\n if (_isFunction(content)) {\n return content(props);\n }\n\n return React.createElement(DefaultLegendContent, props);\n};\n\nvar EPS = 1;\nvar ICON_TYPES = LEGEND_TYPES.filter(function (type) {\n return type !== 'none';\n});\n\nvar Legend =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Legend, _PureComponent);\n\n function Legend() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Legend);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Legend)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n boxWidth: -1,\n boxHeight: -1\n };\n return _this;\n }\n\n _createClass(Legend, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.updateBBox();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateBBox();\n }\n }, {\n key: \"getBBox\",\n value: function getBBox() {\n var _this$state = this.state,\n boxWidth = _this$state.boxWidth,\n boxHeight = _this$state.boxHeight;\n\n if (boxWidth >= 0 && boxHeight >= 0) {\n return {\n width: boxWidth,\n height: boxHeight\n };\n }\n\n return null;\n }\n }, {\n key: \"getDefaultPosition\",\n value: function getDefaultPosition(style) {\n var _this$props = this.props,\n layout = _this$props.layout,\n align = _this$props.align,\n verticalAlign = _this$props.verticalAlign,\n margin = _this$props.margin,\n chartWidth = _this$props.chartWidth,\n chartHeight = _this$props.chartHeight;\n var hPos, vPos;\n\n if (!style || (style.left === undefined || style.left === null) && (style.right === undefined || style.right === null)) {\n if (align === 'center' && layout === 'vertical') {\n var box = this.getBBox() || {\n width: 0\n };\n hPos = {\n left: ((chartWidth || 0) - box.width) / 2\n };\n } else {\n hPos = align === 'right' ? {\n right: margin && margin.right || 0\n } : {\n left: margin && margin.left || 0\n };\n }\n }\n\n if (!style || (style.top === undefined || style.top === null) && (style.bottom === undefined || style.bottom === null)) {\n if (verticalAlign === 'middle') {\n var _box = this.getBBox() || {\n height: 0\n };\n\n vPos = {\n top: ((chartHeight || 0) - _box.height) / 2\n };\n } else {\n vPos = verticalAlign === 'bottom' ? {\n bottom: margin && margin.bottom || 0\n } : {\n top: margin && margin.top || 0\n };\n }\n }\n\n return _objectSpread({}, hPos, {}, vPos);\n }\n }, {\n key: \"updateBBox\",\n value: function updateBBox() {\n var _this$state2 = this.state,\n boxWidth = _this$state2.boxWidth,\n boxHeight = _this$state2.boxHeight;\n var onBBoxUpdate = this.props.onBBoxUpdate;\n\n if (this.wrapperNode && this.wrapperNode.getBoundingClientRect) {\n var box = this.wrapperNode.getBoundingClientRect();\n\n if (Math.abs(box.width - boxWidth) > EPS || Math.abs(box.height - boxHeight) > EPS) {\n this.setState({\n boxWidth: box.width,\n boxHeight: box.height\n }, function () {\n if (onBBoxUpdate) {\n onBBoxUpdate(box);\n }\n });\n }\n } else if (boxWidth !== -1 || boxHeight !== -1) {\n this.setState({\n boxWidth: -1,\n boxHeight: -1\n }, function () {\n if (onBBoxUpdate) {\n onBBoxUpdate(null);\n }\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n content = _this$props2.content,\n width = _this$props2.width,\n height = _this$props2.height,\n wrapperStyle = _this$props2.wrapperStyle,\n paylodUniqBy = _this$props2.paylodUniqBy,\n payload = _this$props2.payload;\n\n var outerStyle = _objectSpread({\n position: 'absolute',\n width: width || 'auto',\n height: height || 'auto'\n }, this.getDefaultPosition(wrapperStyle), {}, wrapperStyle);\n\n return React.createElement(\"div\", {\n className: \"recharts-legend-wrapper\",\n style: outerStyle,\n ref: function ref(node) {\n _this2.wrapperNode = node;\n }\n }, renderContent(content, _objectSpread({}, this.props, {\n payload: getUniqPaylod(paylodUniqBy, payload)\n })));\n }\n }], [{\n key: \"getWithHeight\",\n value: function getWithHeight(item, chartWidth) {\n var layout = item.props.layout;\n\n if (layout === 'vertical' && isNumber(item.props.height)) {\n return {\n height: item.props.height\n };\n }\n\n if (layout === 'horizontal') {\n return {\n width: item.props.width || chartWidth\n };\n }\n\n return null;\n }\n }]);\n\n return Legend;\n}(PureComponent);\n\nLegend.displayName = 'Legend';\nLegend.propTypes = {\n content: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),\n wrapperStyle: PropTypes.object,\n chartWidth: PropTypes.number,\n chartHeight: PropTypes.number,\n width: PropTypes.number,\n height: PropTypes.number,\n iconSize: PropTypes.number,\n iconType: PropTypes.oneOf(ICON_TYPES),\n layout: PropTypes.oneOf(['horizontal', 'vertical']),\n align: PropTypes.oneOf(['center', 'left', 'right']),\n verticalAlign: PropTypes.oneOf(['top', 'bottom', 'middle']),\n margin: PropTypes.shape({\n top: PropTypes.number,\n left: PropTypes.number,\n bottom: PropTypes.number,\n right: PropTypes.number\n }),\n payload: PropTypes.arrayOf(PropTypes.shape({\n value: PropTypes.any,\n id: PropTypes.any,\n type: PropTypes.oneOf(LEGEND_TYPES)\n })),\n paylodUniqBy: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n formatter: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onClick: PropTypes.func,\n onBBoxUpdate: PropTypes.func\n};\nLegend.defaultProps = {\n iconSize: 14,\n layout: 'horizontal',\n align: 'center',\n verticalAlign: 'bottom'\n};\nexport default Legend;","import _isEqual from \"lodash/isEqual\";\nimport _sortBy from \"lodash/sortBy\";\nimport _isNaN from \"lodash/isNaN\";\nimport _isString from \"lodash/isString\";\nimport _isArray from \"lodash/isArray\";\nimport _max from \"lodash/max\";\nimport _min from \"lodash/min\";\nimport _flatMap from \"lodash/flatMap\";\nimport _isFunction from \"lodash/isFunction\";\nimport _get from \"lodash/get\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { getNiceTickValues, getTickValuesFixedDomain } from 'recharts-scale';\nimport * as d3Scales from 'd3-scale';\nimport { stack as shapeStack, stackOrderNone, stackOffsetExpand, stackOffsetNone, stackOffsetSilhouette, stackOffsetWiggle } from 'd3-shape';\nimport { isNumOrStr, uniqueId, isNumber, getPercentValue, mathSign, findEntryInArray } from './DataUtils';\nimport ErrorBar from '../cartesian/ErrorBar';\nimport Legend from '../component/Legend';\nimport { findAllByType, findChildByType, getDisplayName } from './ReactUtils';\nexport var getValueByDataKey = function getValueByDataKey(obj, dataKey, defaultValue) {\n if (_isNil(obj) || _isNil(dataKey)) {\n return defaultValue;\n }\n\n if (isNumOrStr(dataKey)) {\n return _get(obj, dataKey, defaultValue);\n }\n\n if (_isFunction(dataKey)) {\n return dataKey(obj);\n }\n\n return defaultValue;\n};\n/**\n * Get domain of data by key\n * @param {Array} data The data displayed in the chart\n * @param {String} key The unique key of a group of data\n * @param {String} type The type of axis\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain of data\n */\n\nexport var getDomainOfDataByKey = function getDomainOfDataByKey(data, key, type, filterNil) {\n var flattenData = _flatMap(data, function (entry) {\n return getValueByDataKey(entry, key);\n });\n\n if (type === 'number') {\n var domain = flattenData.filter(function (entry) {\n return isNumber(entry) || parseFloat(entry, 10);\n });\n return domain.length ? [_min(domain), _max(domain)] : [Infinity, -Infinity];\n }\n\n var validateData = filterNil ? flattenData.filter(function (entry) {\n return !_isNil(entry);\n }) : flattenData;\n return validateData.map(function (entry) {\n return isNumOrStr(entry) ? entry : '';\n });\n};\nexport var calculateActiveTickIndex = function calculateActiveTickIndex(coordinate, ticks, unsortedTicks, axis) {\n var index = -1;\n var len = ticks.length;\n\n if (len > 1) {\n if (axis && axis.axisType === 'angleAxis' && Math.abs(Math.abs(axis.range[1] - axis.range[0]) - 360) <= 1e-6) {\n var range = axis.range; // ticks are distributed in a circle\n\n for (var i = 0; i < len; i++) {\n var before = i > 0 ? unsortedTicks[i - 1].coordinate : unsortedTicks[len - 1].coordinate;\n var cur = unsortedTicks[i].coordinate;\n var after = i >= len - 1 ? unsortedTicks[0].coordinate : unsortedTicks[i + 1].coordinate;\n var sameDirectionCoord = void 0;\n\n if (mathSign(cur - before) !== mathSign(after - cur)) {\n var diffInterval = [];\n\n if (mathSign(after - cur) === mathSign(range[1] - range[0])) {\n sameDirectionCoord = after;\n var curInRange = cur + range[1] - range[0];\n diffInterval[0] = Math.min(curInRange, (curInRange + before) / 2);\n diffInterval[1] = Math.max(curInRange, (curInRange + before) / 2);\n } else {\n sameDirectionCoord = before;\n var afterInRange = after + range[1] - range[0];\n diffInterval[0] = Math.min(cur, (afterInRange + cur) / 2);\n diffInterval[1] = Math.max(cur, (afterInRange + cur) / 2);\n }\n\n var sameInterval = [Math.min(cur, (sameDirectionCoord + cur) / 2), Math.max(cur, (sameDirectionCoord + cur) / 2)];\n\n if (coordinate > sameInterval[0] && coordinate <= sameInterval[1] || coordinate >= diffInterval[0] && coordinate <= diffInterval[1]) {\n index = unsortedTicks[i].index;\n break;\n }\n } else {\n var min = Math.min(before, after);\n var max = Math.max(before, after);\n\n if (coordinate > (min + cur) / 2 && coordinate <= (max + cur) / 2) {\n index = unsortedTicks[i].index;\n break;\n }\n }\n }\n } else {\n // ticks are distributed in a single direction\n for (var _i = 0; _i < len; _i++) {\n if (_i === 0 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i > 0 && _i < len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2 && coordinate <= (ticks[_i].coordinate + ticks[_i + 1].coordinate) / 2 || _i === len - 1 && coordinate > (ticks[_i].coordinate + ticks[_i - 1].coordinate) / 2) {\n index = ticks[_i].index;\n break;\n }\n }\n }\n } else {\n index = 0;\n }\n\n return index;\n};\n/**\n * Get the main color of each graphic item\n * @param {ReactElement} item A graphic item\n * @return {String} Color\n */\n\nexport var getMainColorOfGraphicItem = function getMainColorOfGraphicItem(item) {\n var displayName = item.type.displayName;\n var _item$props = item.props,\n stroke = _item$props.stroke,\n fill = _item$props.fill;\n var result;\n\n switch (displayName) {\n case 'Line':\n result = stroke;\n break;\n\n case 'Area':\n case 'Radar':\n result = stroke && stroke !== 'none' ? stroke : fill;\n break;\n\n default:\n result = fill;\n break;\n }\n\n return result;\n};\nexport var getLegendProps = function getLegendProps(_ref) {\n var children = _ref.children,\n formatedGraphicalItems = _ref.formatedGraphicalItems,\n legendWidth = _ref.legendWidth,\n legendContent = _ref.legendContent;\n var legendItem = findChildByType(children, Legend);\n\n if (!legendItem) {\n return null;\n }\n\n var legendData;\n\n if (legendItem.props && legendItem.props.payload) {\n legendData = legendItem.props && legendItem.props.payload;\n } else if (legendContent === 'children') {\n legendData = (formatedGraphicalItems || []).reduce(function (result, _ref2) {\n var item = _ref2.item,\n props = _ref2.props;\n var data = props.sectors || props.data || [];\n return result.concat(data.map(function (entry) {\n return {\n type: legendItem.props.iconType || item.props.legendType,\n value: entry.name,\n color: entry.fill,\n payload: entry\n };\n }));\n }, []);\n } else {\n legendData = (formatedGraphicalItems || []).map(function (_ref3) {\n var item = _ref3.item;\n var _item$props2 = item.props,\n dataKey = _item$props2.dataKey,\n name = _item$props2.name,\n legendType = _item$props2.legendType,\n hide = _item$props2.hide;\n return {\n inactive: hide,\n dataKey: dataKey,\n type: legendItem.props.iconType || legendType || 'square',\n color: getMainColorOfGraphicItem(item),\n value: name || dataKey,\n payload: item.props\n };\n });\n }\n\n return _objectSpread({}, legendItem.props, {}, Legend.getWithHeight(legendItem, legendWidth), {\n payload: legendData,\n item: legendItem\n });\n};\n/**\n * Calculate the size of all groups for stacked bar graph\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @return {Object} The size of all groups\n */\n\nexport var getBarSizeList = function getBarSizeList(_ref4) {\n var globalSize = _ref4.barSize,\n _ref4$stackGroups = _ref4.stackGroups,\n stackGroups = _ref4$stackGroups === void 0 ? {} : _ref4$stackGroups;\n\n if (!stackGroups) {\n return {};\n }\n\n var result = {};\n var numericAxisIds = Object.keys(stackGroups);\n\n for (var i = 0, len = numericAxisIds.length; i < len; i++) {\n var sgs = stackGroups[numericAxisIds[i]].stackGroups;\n var stackIds = Object.keys(sgs);\n\n for (var j = 0, sLen = stackIds.length; j < sLen; j++) {\n var _sgs$stackIds$j = sgs[stackIds[j]],\n items = _sgs$stackIds$j.items,\n cateAxisId = _sgs$stackIds$j.cateAxisId;\n var barItems = items.filter(function (item) {\n return getDisplayName(item.type).indexOf('Bar') >= 0;\n });\n\n if (barItems && barItems.length) {\n var selfSize = barItems[0].props.barSize;\n var cateId = barItems[0].props[cateAxisId];\n\n if (!result[cateId]) {\n result[cateId] = [];\n }\n\n result[cateId].push({\n item: barItems[0],\n stackList: barItems.slice(1),\n barSize: _isNil(selfSize) ? globalSize : selfSize\n });\n }\n }\n }\n\n return result;\n};\n/**\n * Calculate the size of each bar and the gap between two bars\n * @param {Number} bandSize The size of each category\n * @param {sizeList} sizeList The size of all groups\n * @param {maxBarSize} maxBarSize The maximum size of bar\n * @return {Number} The size of each bar and the gap between two bars\n */\n\nexport var getBarPosition = function getBarPosition(_ref5) {\n var barGap = _ref5.barGap,\n barCategoryGap = _ref5.barCategoryGap,\n bandSize = _ref5.bandSize,\n _ref5$sizeList = _ref5.sizeList,\n sizeList = _ref5$sizeList === void 0 ? [] : _ref5$sizeList,\n maxBarSize = _ref5.maxBarSize;\n var len = sizeList.length;\n if (len < 1) return null;\n var realBarGap = getPercentValue(barGap, bandSize, 0, true);\n var result; // whether or not is barSize setted by user\n\n if (sizeList[0].barSize === +sizeList[0].barSize) {\n var useFull = false;\n var fullBarSize = bandSize / len;\n var sum = sizeList.reduce(function (res, entry) {\n return res + entry.barSize || 0;\n }, 0);\n sum += (len - 1) * realBarGap;\n\n if (sum >= bandSize) {\n sum -= (len - 1) * realBarGap;\n realBarGap = 0;\n }\n\n if (sum >= bandSize && fullBarSize > 0) {\n useFull = true;\n fullBarSize *= 0.9;\n sum = len * fullBarSize;\n }\n\n var offset = (bandSize - sum) / 2 >> 0;\n var prev = {\n offset: offset - realBarGap,\n size: 0\n };\n result = sizeList.reduce(function (res, entry) {\n var newRes = [].concat(_toConsumableArray(res), [{\n item: entry.item,\n position: {\n offset: prev.offset + prev.size + realBarGap,\n size: useFull ? fullBarSize : entry.barSize\n }\n }]);\n prev = newRes[newRes.length - 1].position;\n\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function (item) {\n newRes.push({\n item: item,\n position: prev\n });\n });\n }\n\n return newRes;\n }, []);\n } else {\n var _offset = getPercentValue(barCategoryGap, bandSize, 0, true);\n\n if (bandSize - 2 * _offset - (len - 1) * realBarGap <= 0) {\n realBarGap = 0;\n }\n\n var originalSize = (bandSize - 2 * _offset - (len - 1) * realBarGap) / len;\n\n if (originalSize > 1) {\n originalSize >>= 0;\n }\n\n var size = maxBarSize === +maxBarSize ? Math.min(originalSize, maxBarSize) : originalSize;\n result = sizeList.reduce(function (res, entry, i) {\n var newRes = [].concat(_toConsumableArray(res), [{\n item: entry.item,\n position: {\n offset: _offset + (originalSize + realBarGap) * i + (originalSize - size) / 2,\n size: size\n }\n }]);\n\n if (entry.stackList && entry.stackList.length) {\n entry.stackList.forEach(function (item) {\n newRes.push({\n item: item,\n position: newRes[newRes.length - 1].position\n });\n });\n }\n\n return newRes;\n }, []);\n }\n\n return result;\n};\nexport var appendOffsetOfLegend = function appendOffsetOfLegend(offset, items, props, legendBox) {\n var children = props.children,\n width = props.width,\n height = props.height,\n margin = props.margin;\n var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n var legendHeight = height - (margin.top || 0) - (margin.bottom || 0);\n var legendProps = getLegendProps({\n children: children,\n items: items,\n legendWidth: legendWidth,\n legendHeight: legendHeight\n });\n var newOffset = offset;\n\n if (legendProps) {\n var box = legendBox || {};\n var align = legendProps.align,\n verticalAlign = legendProps.verticalAlign,\n layout = legendProps.layout;\n\n if ((layout === 'vertical' || layout === 'horizontal' && verticalAlign === 'center') && isNumber(offset[align])) {\n newOffset = _objectSpread({}, offset, _defineProperty({}, align, newOffset[align] + (box.width || 0)));\n }\n\n if ((layout === 'horizontal' || layout === 'vertical' && align === 'center') && isNumber(offset[verticalAlign])) {\n newOffset = _objectSpread({}, offset, _defineProperty({}, verticalAlign, newOffset[verticalAlign] + (box.height || 0)));\n }\n }\n\n return newOffset;\n};\nexport var getDomainOfErrorBars = function getDomainOfErrorBars(data, item, dataKey, axisType) {\n var children = item.props.children;\n var errorBars = findAllByType(children, ErrorBar).filter(function (errorBarChild) {\n var direction = errorBarChild.props.direction;\n return _isNil(direction) || _isNil(axisType) ? true : axisType.indexOf(direction) >= 0;\n });\n\n if (errorBars && errorBars.length) {\n var keys = errorBars.map(function (errorBarChild) {\n return errorBarChild.props.dataKey;\n });\n return data.reduce(function (result, entry) {\n var entryValue = getValueByDataKey(entry, dataKey, 0);\n var mainValue = _isArray(entryValue) ? [_min(entryValue), _max(entryValue)] : [entryValue, entryValue];\n var errorDomain = keys.reduce(function (prevErrorArr, k) {\n var errorValue = getValueByDataKey(entry, k, 0);\n var lowerValue = mainValue[0] - Math.abs(_isArray(errorValue) ? errorValue[0] : errorValue);\n var upperValue = mainValue[1] + Math.abs(_isArray(errorValue) ? errorValue[1] : errorValue);\n return [Math.min(lowerValue, prevErrorArr[0]), Math.max(upperValue, prevErrorArr[1])];\n }, [Infinity, -Infinity]);\n return [Math.min(errorDomain[0], result[0]), Math.max(errorDomain[1], result[1])];\n }, [Infinity, -Infinity]);\n }\n\n return null;\n};\nexport var parseErrorBarsOfAxis = function parseErrorBarsOfAxis(data, items, dataKey, axisType) {\n var domains = items.map(function (item) {\n return getDomainOfErrorBars(data, item, dataKey, axisType);\n }).filter(function (entry) {\n return !_isNil(entry);\n });\n\n if (domains && domains.length) {\n return domains.reduce(function (result, entry) {\n return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n }, [Infinity, -Infinity]);\n }\n\n return null;\n};\n/**\n * Get domain of data by the configuration of item element\n * @param {Array} data The data displayed in the chart\n * @param {Array} items The instances of item\n * @param {String} type The type of axis, number - Number Axis, category - Category Axis\n * @param {Boolean} filterNil Whether or not filter nil values\n * @return {Array} Domain\n */\n\nexport var getDomainOfItemsWithSameAxis = function getDomainOfItemsWithSameAxis(data, items, type, filterNil) {\n var domains = items.map(function (item) {\n var dataKey = item.props.dataKey;\n\n if (type === 'number' && dataKey) {\n return getDomainOfErrorBars(data, item, dataKey) || getDomainOfDataByKey(data, dataKey, type, filterNil);\n }\n\n return getDomainOfDataByKey(data, dataKey, type, filterNil);\n });\n\n if (type === 'number') {\n // Calculate the domain of number axis\n return domains.reduce(function (result, entry) {\n return [Math.min(result[0], entry[0]), Math.max(result[1], entry[1])];\n }, [Infinity, -Infinity]);\n }\n\n var tag = {}; // Get the union set of category axis\n\n return domains.reduce(function (result, entry) {\n for (var i = 0, len = entry.length; i < len; i++) {\n if (!tag[entry[i]]) {\n tag[entry[i]] = true;\n result.push(entry[i]);\n }\n }\n\n return result;\n }, []);\n};\nexport var isCategorialAxis = function isCategorialAxis(layout, axisType) {\n return layout === 'horizontal' && axisType === 'xAxis' || layout === 'vertical' && axisType === 'yAxis' || layout === 'centric' && axisType === 'angleAxis' || layout === 'radial' && axisType === 'radiusAxis';\n};\n/**\n * Calculate the Coordinates of grid\n * @param {Array} ticks The ticks in axis\n * @param {Number} min The minimun value of axis\n * @param {Number} max The maximun value of axis\n * @return {Array} Coordinates\n */\n\nexport var getCoordinatesOfGrid = function getCoordinatesOfGrid(ticks, min, max) {\n var hasMin, hasMax;\n var values = ticks.map(function (entry) {\n if (entry.coordinate === min) {\n hasMin = true;\n }\n\n if (entry.coordinate === max) {\n hasMax = true;\n }\n\n return entry.coordinate;\n });\n\n if (!hasMin) {\n values.push(min);\n }\n\n if (!hasMax) {\n values.push(max);\n }\n\n return values;\n};\n/**\n * Get the ticks of an axis\n * @param {Object} axis The configuration of an axis\n * @param {Boolean} isGrid Whether or not are the ticks in grid\n * @param {Boolean} isAll Return the ticks of all the points or not\n * @return {Array} Ticks\n */\n\nexport var getTicksOfAxis = function getTicksOfAxis(axis, isGrid, isAll) {\n if (!axis) return null;\n var scale = axis.scale;\n var duplicateDomain = axis.duplicateDomain,\n type = axis.type,\n range = axis.range;\n var offset = (isGrid || isAll) && type === 'category' && scale.bandwidth ? scale.bandwidth() / 2 : 0;\n offset = axis.axisType === 'angleAxis' ? mathSign(range[0] - range[1]) * 2 * offset : offset; // The ticks setted by user should only affect the ticks adjacent to axis line\n\n if (isGrid && (axis.ticks || axis.niceTicks)) {\n return (axis.ticks || axis.niceTicks).map(function (entry) {\n var scaleContent = duplicateDomain ? duplicateDomain.indexOf(entry) : entry;\n return {\n coordinate: scale(scaleContent) + offset,\n value: entry,\n offset: offset\n };\n });\n }\n\n if (axis.isCategorial && axis.categoricalDomain) {\n return axis.categoricalDomain.map(function (entry, index) {\n return {\n coordinate: scale(entry),\n value: entry,\n index: index,\n offset: offset\n };\n });\n }\n\n if (scale.ticks && !isAll) {\n return scale.ticks(axis.tickCount).map(function (entry) {\n return {\n coordinate: scale(entry) + offset,\n value: entry,\n offset: offset\n };\n });\n } // When axis has duplicated text, serial numbers are used to generate scale\n\n\n return scale.domain().map(function (entry, index) {\n return {\n coordinate: scale(entry) + offset,\n value: duplicateDomain ? duplicateDomain[entry] : entry,\n index: index,\n offset: offset\n };\n });\n};\n/**\n * combine the handlers\n * @param {Function} defaultHandler Internal private handler\n * @param {Function} parentHandler Handler function specified in parent component\n * @param {Function} childHandler Handler function specified in child component\n * @return {Function} The combined handler\n */\n\nexport var combineEventHandlers = function combineEventHandlers(defaultHandler, parentHandler, childHandler) {\n var customizedHandler;\n\n if (_isFunction(childHandler)) {\n customizedHandler = childHandler;\n } else if (_isFunction(parentHandler)) {\n customizedHandler = parentHandler;\n }\n\n if (_isFunction(defaultHandler) || customizedHandler) {\n return function (arg1, arg2, arg3, arg4) {\n if (_isFunction(defaultHandler)) {\n defaultHandler(arg1, arg2, arg3, arg4);\n }\n\n if (_isFunction(customizedHandler)) {\n customizedHandler(arg1, arg2, arg3, arg4);\n }\n };\n }\n\n return null;\n};\n/**\n * Parse the scale function of axis\n * @param {Object} axis The option of axis\n * @param {String} chartType The displayName of chart\n * @return {Function} The scale funcion\n */\n\nexport var parseScale = function parseScale(axis, chartType) {\n var scale = axis.scale,\n type = axis.type,\n layout = axis.layout,\n axisType = axis.axisType;\n\n if (scale === 'auto') {\n if (layout === 'radial' && axisType === 'radiusAxis') {\n return {\n scale: d3Scales.scaleBand(),\n realScaleType: 'band'\n };\n }\n\n if (layout === 'radial' && axisType === 'angleAxis') {\n return {\n scale: d3Scales.scaleLinear(),\n realScaleType: 'linear'\n };\n }\n\n if (type === 'category' && chartType && (chartType.indexOf('LineChart') >= 0 || chartType.indexOf('AreaChart') >= 0)) {\n return {\n scale: d3Scales.scalePoint(),\n realScaleType: 'point'\n };\n }\n\n if (type === 'category') {\n return {\n scale: d3Scales.scaleBand(),\n realScaleType: 'band'\n };\n }\n\n return {\n scale: d3Scales.scaleLinear(),\n realScaleType: 'linear'\n };\n }\n\n if (_isString(scale)) {\n var name = \"scale\".concat(scale.slice(0, 1).toUpperCase()).concat(scale.slice(1));\n return {\n scale: (d3Scales[name] || d3Scales.scalePoint)(),\n realScaleType: d3Scales[name] ? name : 'point'\n };\n }\n\n return _isFunction(scale) ? {\n scale: scale\n } : {\n scale: d3Scales.scalePoint(),\n realScaleType: 'point'\n };\n};\nvar EPS = 1e-4;\nexport var checkDomainOfScale = function checkDomainOfScale(scale) {\n var domain = scale.domain();\n\n if (!domain || domain.length <= 2) {\n return;\n }\n\n var len = domain.length;\n var range = scale.range();\n var min = Math.min(range[0], range[1]) - EPS;\n var max = Math.max(range[0], range[1]) + EPS;\n var first = scale(domain[0]);\n var last = scale(domain[len - 1]);\n\n if (first < min || first > max || last < min || last > max) {\n scale.domain([domain[0], domain[len - 1]]);\n }\n};\nexport var findPositionOfBar = function findPositionOfBar(barPosition, child) {\n if (!barPosition) {\n return null;\n }\n\n for (var i = 0, len = barPosition.length; i < len; i++) {\n if (barPosition[i].item === child) {\n return barPosition[i].position;\n }\n }\n\n return null;\n};\nexport var truncateByDomain = function truncateByDomain(value, domain) {\n if (!domain || domain.length !== 2 || !isNumber(domain[0]) || !isNumber(domain[1])) {\n return value;\n }\n\n var min = Math.min(domain[0], domain[1]);\n var max = Math.max(domain[0], domain[1]);\n var result = [value[0], value[1]];\n\n if (!isNumber(value[0]) || value[0] < min) {\n result[0] = min;\n }\n\n if (!isNumber(value[1]) || value[1] > max) {\n result[1] = max;\n }\n\n if (result[0] > max) {\n result[0] = max;\n }\n\n if (result[1] < min) {\n result[1] = min;\n }\n\n return result;\n};\n/* eslint no-param-reassign: 0 */\n\nexport var offsetSign = function offsetSign(series) {\n var n = series.length;\n\n if (n <= 0) {\n return;\n }\n\n for (var j = 0, m = series[0].length; j < m; ++j) {\n var positive = 0;\n var negative = 0;\n\n for (var i = 0; i < n; ++i) {\n var value = _isNaN(series[i][j][1]) ? series[i][j][0] : series[i][j][1];\n /* eslint-disable prefer-destructuring */\n\n if (value >= 0) {\n series[i][j][0] = positive;\n series[i][j][1] = positive + value;\n positive = series[i][j][1];\n } else {\n series[i][j][0] = negative;\n series[i][j][1] = negative + value;\n negative = series[i][j][1];\n }\n /* eslint-enable prefer-destructuring */\n\n }\n }\n};\nvar STACK_OFFSET_MAP = {\n sign: offsetSign,\n expand: stackOffsetExpand,\n none: stackOffsetNone,\n silhouette: stackOffsetSilhouette,\n wiggle: stackOffsetWiggle\n};\nexport var getStackedData = function getStackedData(data, stackItems, offsetType) {\n var dataKeys = stackItems.map(function (item) {\n return item.props.dataKey;\n });\n var stack = shapeStack().keys(dataKeys).value(function (d, key) {\n return +getValueByDataKey(d, key, 0);\n }).order(stackOrderNone).offset(STACK_OFFSET_MAP[offsetType]);\n return stack(data);\n};\nexport var getStackGroupsByAxisId = function getStackGroupsByAxisId(data, _items, numericAxisId, cateAxisId, offsetType, reverseStackOrder) {\n if (!data) {\n return null;\n } // reversing items to affect render order (for layering)\n\n\n var items = reverseStackOrder ? _items.reverse() : _items;\n var stackGroups = items.reduce(function (result, item) {\n var _item$props3 = item.props,\n stackId = _item$props3.stackId,\n hide = _item$props3.hide;\n\n if (hide) {\n return result;\n }\n\n var axisId = item.props[numericAxisId];\n var parentGroup = result[axisId] || {\n hasStack: false,\n stackGroups: {}\n };\n\n if (isNumOrStr(stackId)) {\n var childGroup = parentGroup.stackGroups[stackId] || {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: []\n };\n childGroup.items.push(item);\n parentGroup.hasStack = true;\n parentGroup.stackGroups[stackId] = childGroup;\n } else {\n parentGroup.stackGroups[uniqueId('_stackId_')] = {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: [item]\n };\n }\n\n return _objectSpread({}, result, _defineProperty({}, axisId, parentGroup));\n }, {});\n return Object.keys(stackGroups).reduce(function (result, axisId) {\n var group = stackGroups[axisId];\n\n if (group.hasStack) {\n group.stackGroups = Object.keys(group.stackGroups).reduce(function (res, stackId) {\n var g = group.stackGroups[stackId];\n return _objectSpread({}, res, _defineProperty({}, stackId, {\n numericAxisId: numericAxisId,\n cateAxisId: cateAxisId,\n items: g.items,\n stackedData: getStackedData(data, g.items, offsetType)\n }));\n }, {});\n }\n\n return _objectSpread({}, result, _defineProperty({}, axisId, group));\n }, {});\n};\n/**\n * get domain of ticks\n * @param {Array} ticks Ticks of axis\n * @param {String} type The type of axis\n * @return {Array} domain\n */\n\nexport var calculateDomainOfTicks = function calculateDomainOfTicks(ticks, type) {\n if (type === 'number') {\n return [_min(ticks), _max(ticks)];\n }\n\n return ticks;\n};\n/**\n * Configure the scale function of axis\n * @param {Object} scale The scale function\n * @param {Object} opts The configuration of axis\n * @return {Object} null\n */\n\nexport var getTicksOfScale = function getTicksOfScale(scale, opts) {\n var realScaleType = opts.realScaleType,\n type = opts.type,\n tickCount = opts.tickCount,\n originalDomain = opts.originalDomain,\n allowDecimals = opts.allowDecimals;\n var scaleType = realScaleType || opts.scale;\n\n if (scaleType !== 'auto' && scaleType !== 'linear') {\n return null;\n }\n\n if (tickCount && type === 'number' && originalDomain && (originalDomain[0] === 'auto' || originalDomain[1] === 'auto')) {\n // Calculate the ticks by the number of grid when the axis is a number axis\n var domain = scale.domain();\n var tickValues = getNiceTickValues(domain, tickCount, allowDecimals);\n scale.domain(calculateDomainOfTicks(tickValues, type));\n return {\n niceTicks: tickValues\n };\n }\n\n if (tickCount && type === 'number') {\n var _domain = scale.domain();\n\n var _tickValues = getTickValuesFixedDomain(_domain, tickCount, allowDecimals);\n\n return {\n niceTicks: _tickValues\n };\n }\n\n return null;\n};\nexport var getCateCoordinateOfLine = function getCateCoordinateOfLine(_ref6) {\n var axis = _ref6.axis,\n ticks = _ref6.ticks,\n bandSize = _ref6.bandSize,\n entry = _ref6.entry,\n index = _ref6.index,\n dataKey = _ref6.dataKey;\n\n if (axis.type === 'category') {\n // find coordinate of category axis by the value of category\n if (!axis.allowDuplicatedCategory && axis.dataKey && !_isNil(entry[axis.dataKey])) {\n var matchedTick = findEntryInArray(ticks, 'value', entry[axis.dataKey]);\n\n if (matchedTick) {\n return matchedTick.coordinate + bandSize / 2;\n }\n }\n\n return ticks[index] ? ticks[index].coordinate + bandSize / 2 : null;\n }\n\n var value = getValueByDataKey(entry, !_isNil(dataKey) ? dataKey : axis.dataKey);\n return !_isNil(value) ? axis.scale(value) : null;\n};\nexport var getCateCoordinateOfBar = function getCateCoordinateOfBar(_ref7) {\n var axis = _ref7.axis,\n ticks = _ref7.ticks,\n offset = _ref7.offset,\n bandSize = _ref7.bandSize,\n entry = _ref7.entry,\n index = _ref7.index;\n\n if (axis.type === 'category') {\n return ticks[index] ? ticks[index].coordinate + offset : null;\n }\n\n var value = getValueByDataKey(entry, axis.dataKey, axis.domain[index]);\n return !_isNil(value) ? axis.scale(value) - bandSize / 2 + offset : null;\n};\nexport var getBaseValueOfBar = function getBaseValueOfBar(_ref8) {\n var numericAxis = _ref8.numericAxis;\n var domain = numericAxis.scale.domain();\n\n if (numericAxis.type === 'number') {\n var min = Math.min(domain[0], domain[1]);\n var max = Math.max(domain[0], domain[1]);\n\n if (min <= 0 && max >= 0) {\n return 0;\n }\n\n if (max < 0) {\n return max;\n }\n\n return min;\n }\n\n return domain[0];\n};\nexport var getStackedDataOfItem = function getStackedDataOfItem(item, stackGroups) {\n var stackId = item.props.stackId;\n\n if (isNumOrStr(stackId)) {\n var group = stackGroups[stackId];\n\n if (group && group.items.length) {\n var itemIndex = -1;\n\n for (var i = 0, len = group.items.length; i < len; i++) {\n if (group.items[i] === item) {\n itemIndex = i;\n break;\n }\n }\n\n return itemIndex >= 0 ? group.stackedData[itemIndex] : null;\n }\n }\n\n return null;\n};\n\nvar getDomainOfSingle = function getDomainOfSingle(data) {\n return data.reduce(function (result, entry) {\n return [_min(entry.concat([result[0]]).filter(isNumber)), _max(entry.concat([result[1]]).filter(isNumber))];\n }, [Infinity, -Infinity]);\n};\n\nexport var getDomainOfStackGroups = function getDomainOfStackGroups(stackGroups, startIndex, endIndex) {\n return Object.keys(stackGroups).reduce(function (result, stackId) {\n var group = stackGroups[stackId];\n var stackedData = group.stackedData;\n var domain = stackedData.reduce(function (res, entry) {\n var s = getDomainOfSingle(entry.slice(startIndex, endIndex + 1));\n return [Math.min(res[0], s[0]), Math.max(res[1], s[1])];\n }, [Infinity, -Infinity]);\n return [Math.min(domain[0], result[0]), Math.max(domain[1], result[1])];\n }, [Infinity, -Infinity]).map(function (result) {\n return result === Infinity || result === -Infinity ? 0 : result;\n });\n};\nexport var MIN_VALUE_REG = /^dataMin[\\s]*-[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var MAX_VALUE_REG = /^dataMax[\\s]*\\+[\\s]*([0-9]+([.]{1}[0-9]+){0,1})$/;\nexport var parseSpecifiedDomain = function parseSpecifiedDomain(specifiedDomain, dataDomain, allowDataOverflow) {\n if (!_isArray(specifiedDomain)) {\n return dataDomain;\n }\n\n var domain = [];\n /* eslint-disable prefer-destructuring */\n\n if (isNumber(specifiedDomain[0])) {\n domain[0] = allowDataOverflow ? specifiedDomain[0] : Math.min(specifiedDomain[0], dataDomain[0]);\n } else if (MIN_VALUE_REG.test(specifiedDomain[0])) {\n var value = +MIN_VALUE_REG.exec(specifiedDomain[0])[1];\n domain[0] = dataDomain[0] - value;\n } else if (_isFunction(specifiedDomain[0])) {\n domain[0] = specifiedDomain[0](dataDomain[0]);\n } else {\n domain[0] = dataDomain[0];\n }\n\n if (isNumber(specifiedDomain[1])) {\n domain[1] = allowDataOverflow ? specifiedDomain[1] : Math.max(specifiedDomain[1], dataDomain[1]);\n } else if (MAX_VALUE_REG.test(specifiedDomain[1])) {\n var _value = +MAX_VALUE_REG.exec(specifiedDomain[1])[1];\n\n domain[1] = dataDomain[1] + _value;\n } else if (_isFunction(specifiedDomain[1])) {\n domain[1] = specifiedDomain[1](dataDomain[1]);\n } else {\n domain[1] = dataDomain[1];\n }\n /* eslint-enable prefer-destructuring */\n\n\n return domain;\n};\n/**\n * Calculate the size between two category\n * @param {Object} axis The options of axis\n * @param {Array} ticks The ticks of axis\n * @return {Number} Size\n */\n\nexport var getBandSizeOfAxis = function getBandSizeOfAxis(axis, ticks) {\n if (axis && axis.scale && axis.scale.bandwidth) {\n return axis.scale.bandwidth();\n }\n\n if (axis && ticks && ticks.length >= 2) {\n var orderedTicks = _sortBy(ticks, function (o) {\n return o.coordinate;\n });\n\n var bandSize = Infinity;\n\n for (var i = 1, len = orderedTicks.length; i < len; i++) {\n var cur = orderedTicks[i];\n var prev = orderedTicks[i - 1];\n bandSize = Math.min((cur.coordinate || 0) - (prev.coordinate || 0), bandSize);\n }\n\n return bandSize === Infinity ? 0 : bandSize;\n }\n\n return 0;\n};\n/**\n * parse the domain of a category axis when a domain is specified\n * @param {Array} specifiedDomain The domain specified by users\n * @param {Array} calculatedDomain The domain calculated by dateKey\n * @param {ReactElement} axisChild The axis element\n * @returns {Array} domains\n */\n\nexport var parseDomainOfCategoryAxis = function parseDomainOfCategoryAxis(specifiedDomain, calculatedDomain, axisChild) {\n if (!specifiedDomain || !specifiedDomain.length) {\n return calculatedDomain;\n }\n\n if (_isEqual(specifiedDomain, _get(axisChild, 'type.defaultProps.domain'))) {\n return calculatedDomain;\n }\n\n return specifiedDomain;\n};","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import _every from \"lodash/every\";\nimport _mapValues from \"lodash/mapValues\";\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { getTicksOfScale, parseScale, checkDomainOfScale, getBandSizeOfAxis } from './ChartUtils';\n/**\n * Calculate the scale function, position, width, height of axes\n * @param {Object} props Latest props\n * @param {Object} axisMap The configuration of axes\n * @param {Object} offset The offset of main part in the svg element\n * @param {String} axisType The type of axes, x-axis or y-axis\n * @param {String} chartName The name of chart\n * @return {Object} Configuration\n */\n\nexport var formatAxisMap = function formatAxisMap(props, axisMap, offset, axisType, chartName) {\n var width = props.width,\n height = props.height,\n layout = props.layout;\n var ids = Object.keys(axisMap);\n var steps = {\n left: offset.left,\n leftMirror: offset.left,\n right: width - offset.right,\n rightMirror: width - offset.right,\n top: offset.top,\n topMirror: offset.top,\n bottom: height - offset.bottom,\n bottomMirror: height - offset.bottom\n };\n return ids.reduce(function (result, id) {\n var axis = axisMap[id];\n var orientation = axis.orientation,\n domain = axis.domain,\n _axis$padding = axis.padding,\n padding = _axis$padding === void 0 ? {} : _axis$padding,\n mirror = axis.mirror,\n reversed = axis.reversed;\n var offsetKey = \"\".concat(orientation).concat(mirror ? 'Mirror' : '');\n var range, x, y, needSpace;\n\n if (axisType === 'xAxis') {\n range = [offset.left + (padding.left || 0), offset.left + offset.width - (padding.right || 0)];\n } else if (axisType === 'yAxis') {\n range = layout === 'horizontal' ? [offset.top + offset.height - (padding.bottom || 0), offset.top + (padding.top || 0)] : [offset.top + (padding.top || 0), offset.top + offset.height - (padding.bottom || 0)];\n } else {\n range = axis.range;\n }\n\n if (reversed) {\n range = [range[1], range[0]];\n }\n\n var _parseScale = parseScale(axis, chartName),\n scale = _parseScale.scale,\n realScaleType = _parseScale.realScaleType;\n\n scale.domain(domain).range(range);\n checkDomainOfScale(scale);\n var ticks = getTicksOfScale(scale, _objectSpread({}, axis, {\n realScaleType: realScaleType\n }));\n\n if (axisType === 'xAxis') {\n needSpace = orientation === 'top' && !mirror || orientation === 'bottom' && mirror;\n x = offset.left;\n y = steps[offsetKey] - needSpace * axis.height;\n } else if (axisType === 'yAxis') {\n needSpace = orientation === 'left' && !mirror || orientation === 'right' && mirror;\n x = steps[offsetKey] - needSpace * axis.width;\n y = offset.top;\n }\n\n var finalAxis = _objectSpread({}, axis, {}, ticks, {\n realScaleType: realScaleType,\n x: x,\n y: y,\n scale: scale,\n width: axisType === 'xAxis' ? offset.width : axis.width,\n height: axisType === 'yAxis' ? offset.height : axis.height\n });\n\n finalAxis.bandSize = getBandSizeOfAxis(finalAxis, ticks);\n\n if (!axis.hide && axisType === 'xAxis') {\n steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.height;\n } else if (!axis.hide) {\n steps[offsetKey] += (needSpace ? -1 : 1) * finalAxis.width;\n }\n\n return _objectSpread({}, result, _defineProperty({}, id, finalAxis));\n }, {});\n};\nexport var rectWithPoints = function rectWithPoints(_ref, _ref2) {\n var x1 = _ref.x,\n y1 = _ref.y;\n var x2 = _ref2.x,\n y2 = _ref2.y;\n return {\n x: Math.min(x1, x2),\n y: Math.min(y1, y2),\n width: Math.abs(x2 - x1),\n height: Math.abs(y2 - y1)\n };\n};\n/**\n * Compute the x, y, width, and height of a box from two reference points.\n * @param {Object} coords x1, x2, y1, and y2\n * @return {Object} object\n */\n\nexport var rectWithCoords = function rectWithCoords(_ref3) {\n var x1 = _ref3.x1,\n y1 = _ref3.y1,\n x2 = _ref3.x2,\n y2 = _ref3.y2;\n return rectWithPoints({\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n });\n};\nexport var ScaleHelper =\n/*#__PURE__*/\nfunction () {\n _createClass(ScaleHelper, null, [{\n key: \"create\",\n value: function create(obj) {\n return new ScaleHelper(obj);\n }\n }]);\n\n function ScaleHelper(scale) {\n _classCallCheck(this, ScaleHelper);\n\n this.scale = scale;\n }\n\n _createClass(ScaleHelper, [{\n key: \"apply\",\n value: function apply(value) {\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n bandAware = _ref4.bandAware,\n position = _ref4.position;\n\n if (value === undefined) {\n return undefined;\n }\n\n if (position) {\n switch (position) {\n case 'start':\n {\n return this.scale(value);\n }\n\n case 'middle':\n {\n var offset = this.bandwidth ? this.bandwidth() / 2 : 0;\n return this.scale(value) + offset;\n }\n\n case 'end':\n {\n var _offset = this.bandwidth ? this.bandwidth() : 0;\n\n return this.scale(value) + _offset;\n }\n\n default:\n {\n return this.scale(value);\n }\n }\n }\n\n if (bandAware) {\n var _offset2 = this.bandwidth ? this.bandwidth() / 2 : 0;\n\n return this.scale(value) + _offset2;\n }\n\n return this.scale(value);\n }\n }, {\n key: \"isInRange\",\n value: function isInRange(value) {\n var range = this.range();\n var first = range[0];\n var last = range[range.length - 1];\n return first <= last ? value >= first && value <= last : value >= last && value <= first;\n }\n }, {\n key: \"domain\",\n get: function get() {\n return this.scale.domain;\n }\n }, {\n key: \"range\",\n get: function get() {\n return this.scale.range;\n }\n }, {\n key: \"rangeMin\",\n get: function get() {\n return this.range()[0];\n }\n }, {\n key: \"rangeMax\",\n get: function get() {\n return this.range()[1];\n }\n }, {\n key: \"bandwidth\",\n get: function get() {\n return this.scale.bandwidth;\n }\n }]);\n\n return ScaleHelper;\n}();\nScaleHelper.EPS = 1e-4;\nexport var LabeledScaleHelper =\n/*#__PURE__*/\nfunction () {\n _createClass(LabeledScaleHelper, null, [{\n key: \"create\",\n value: function create(obj) {\n return new this(obj);\n }\n }]);\n\n function LabeledScaleHelper(scales) {\n _classCallCheck(this, LabeledScaleHelper);\n\n this.scales = _mapValues(scales, ScaleHelper.create);\n Object.assign(this, this.scales);\n }\n\n _createClass(LabeledScaleHelper, [{\n key: \"apply\",\n value: function apply(coords) {\n var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n bandAware = _ref5.bandAware;\n\n var scales = this.scales;\n return _mapValues(coords, function (value, label) {\n return scales[label].apply(value, {\n bandAware: bandAware\n });\n });\n }\n }, {\n key: \"isInRange\",\n value: function isInRange(coords) {\n var scales = this.scales;\n return _every(coords, function (value, label) {\n return scales[label].isInRange(value);\n });\n }\n }]);\n\n return LabeledScaleHelper;\n}();","import _some from \"lodash/some\";\nimport _isFunction from \"lodash/isFunction\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n/**\n * @fileOverview Reference Line\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Layer from '../container/Layer';\nimport { PRESENTATION_ATTRIBUTES, getPresentationAttributes, filterEventAttributes } from '../util/ReactUtils';\nimport Label from '../component/Label';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { LabeledScaleHelper, rectWithCoords } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\n\nvar renderLine = function renderLine(option, props) {\n var line;\n\n if (React.isValidElement(option)) {\n line = React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n line = option(props);\n } else {\n line = React.createElement(\"line\", _extends({}, props, {\n className: \"recharts-reference-line-line\"\n }));\n }\n\n return line;\n};\n\nvar ReferenceLine =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ReferenceLine, _PureComponent);\n\n function ReferenceLine() {\n _classCallCheck(this, ReferenceLine);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ReferenceLine).apply(this, arguments));\n }\n\n _createClass(ReferenceLine, [{\n key: \"getEndPoints\",\n value: function getEndPoints(scales, isFixedX, isFixedY, isSegment) {\n var _this$props = this.props,\n _this$props$viewBox = _this$props.viewBox,\n x = _this$props$viewBox.x,\n y = _this$props$viewBox.y,\n width = _this$props$viewBox.width,\n height = _this$props$viewBox.height,\n position = _this$props.position;\n\n if (isFixedY) {\n var _this$props2 = this.props,\n yCoord = _this$props2.y,\n orientation = _this$props2.yAxis.orientation;\n var coord = scales.y.apply(yCoord, {\n position: position\n });\n\n if (ifOverflowMatches(this.props, 'discard') && !scales.y.isInRange(coord)) {\n return null;\n }\n\n var points = [{\n x: x + width,\n y: coord\n }, {\n x: x,\n y: coord\n }];\n return orientation === 'left' ? points.reverse() : points;\n }\n\n if (isFixedX) {\n var _this$props3 = this.props,\n xCoord = _this$props3.x,\n _orientation = _this$props3.xAxis.orientation;\n\n var _coord = scales.x.apply(xCoord, {\n position: position\n });\n\n if (ifOverflowMatches(this.props, 'discard') && !scales.x.isInRange(_coord)) {\n return null;\n }\n\n var _points = [{\n x: _coord,\n y: y + height\n }, {\n x: _coord,\n y: y\n }];\n return _orientation === 'top' ? _points.reverse() : _points;\n }\n\n if (isSegment) {\n var segment = this.props.segment;\n\n var _points2 = segment.map(function (p) {\n return scales.apply(p, {\n position: position\n });\n });\n\n if (ifOverflowMatches(this.props, 'discard') && _some(_points2, function (p) {\n return !scales.isInRange(p);\n })) {\n return null;\n }\n\n return _points2;\n }\n\n return null;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n fixedX = _this$props4.x,\n fixedY = _this$props4.y,\n segment = _this$props4.segment,\n xAxis = _this$props4.xAxis,\n yAxis = _this$props4.yAxis,\n shape = _this$props4.shape,\n className = _this$props4.className,\n alwaysShow = _this$props4.alwaysShow,\n clipPathId = _this$props4.clipPathId;\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n var scales = LabeledScaleHelper.create({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var isX = isNumOrStr(fixedX);\n var isY = isNumOrStr(fixedY);\n var isSegment = segment && segment.length === 2;\n var endPoints = this.getEndPoints(scales, isX, isY, isSegment);\n\n if (!endPoints) {\n return null;\n }\n\n var _endPoints = _slicedToArray(endPoints, 2),\n _endPoints$ = _endPoints[0],\n x1 = _endPoints$.x,\n y1 = _endPoints$.y,\n _endPoints$2 = _endPoints[1],\n x2 = _endPoints$2.x,\n y2 = _endPoints$2.y;\n\n var clipPath = ifOverflowMatches(this.props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n\n var props = _objectSpread({\n clipPath: clipPath\n }, getPresentationAttributes(this.props), {}, filterEventAttributes(this.props), {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n });\n\n return React.createElement(Layer, {\n className: classNames('recharts-reference-line', className)\n }, renderLine(shape, props), Label.renderCallByParent(this.props, rectWithCoords({\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n })));\n }\n }]);\n\n return ReferenceLine;\n}(PureComponent);\n\nReferenceLine.displayName = 'ReferenceLine';\nReferenceLine.propTypes = _objectSpread({}, PRESENTATION_ATTRIBUTES, {\n viewBox: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number,\n width: PropTypes.number,\n height: PropTypes.number\n }),\n xAxis: PropTypes.object,\n yAxis: PropTypes.object,\n isFront: PropTypes.bool,\n alwaysShow: PropTypes.bool,\n ifOverflow: PropTypes.oneOf(['hidden', 'visible', 'discard', 'extendDomain']),\n x: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n y: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n segment: PropTypes.arrayOf(PropTypes.shape({\n x: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n y: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n })),\n position: PropTypes.oneOf(['middle', 'start', 'end']),\n className: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n yAxisId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n xAxisId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n shape: PropTypes.func\n});\nReferenceLine.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n fill: 'none',\n stroke: '#ccc',\n fillOpacity: 1,\n strokeWidth: 1,\n position: 'middle'\n};\nexport default ReferenceLine;","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Dot\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { getPresentationAttributes, filterEventAttributes } from '../util/ReactUtils';\n\nvar Dot =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Dot, _PureComponent);\n\n function Dot() {\n _classCallCheck(this, Dot);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Dot).apply(this, arguments));\n }\n\n _createClass(Dot, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n cx = _this$props.cx,\n cy = _this$props.cy,\n r = _this$props.r,\n className = _this$props.className;\n var layerClass = classNames('recharts-dot', className);\n\n if (cx === +cx && cy === +cy && r === +r) {\n return React.createElement(\"circle\", _extends({}, getPresentationAttributes(this.props), filterEventAttributes(this.props, null, true), {\n className: layerClass,\n cx: cx,\n cy: cy,\n r: r\n }));\n }\n\n return null;\n }\n }]);\n\n return Dot;\n}(PureComponent);\n\nDot.displayName = 'Dot';\nDot.propTypes = {\n className: PropTypes.string,\n cx: PropTypes.number,\n cy: PropTypes.number,\n r: PropTypes.number\n};\nexport default Dot;","import _isFunction from \"lodash/isFunction\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Reference Dot\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Layer from '../container/Layer';\nimport Dot from '../shape/Dot';\nimport { PRESENTATION_ATTRIBUTES, EVENT_ATTRIBUTES, getPresentationAttributes, filterEventAttributes } from '../util/ReactUtils';\nimport Label from '../component/Label';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { LabeledScaleHelper } from '../util/CartesianUtils';\nimport { warn } from '../util/LogUtils';\n\nvar ReferenceDot =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ReferenceDot, _PureComponent);\n\n function ReferenceDot() {\n _classCallCheck(this, ReferenceDot);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ReferenceDot).apply(this, arguments));\n }\n\n _createClass(ReferenceDot, [{\n key: \"getCoordinate\",\n value: function getCoordinate() {\n var _this$props = this.props,\n x = _this$props.x,\n y = _this$props.y,\n xAxis = _this$props.xAxis,\n yAxis = _this$props.yAxis;\n var scales = LabeledScaleHelper.create({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var result = scales.apply({\n x: x,\n y: y\n }, {\n bandAware: true\n });\n\n if (ifOverflowMatches(this.props, 'discard') && !scales.isInRange(result)) {\n return null;\n }\n\n return result;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n x = _this$props2.x,\n y = _this$props2.y,\n r = _this$props2.r,\n alwaysShow = _this$props2.alwaysShow,\n clipPathId = _this$props2.clipPathId;\n var isX = isNumOrStr(x);\n var isY = isNumOrStr(y);\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n\n if (!isX || !isY) {\n return null;\n }\n\n var coordinate = this.getCoordinate();\n\n if (!coordinate) {\n return null;\n }\n\n var cx = coordinate.x,\n cy = coordinate.y;\n var _this$props3 = this.props,\n shape = _this$props3.shape,\n className = _this$props3.className;\n var clipPath = ifOverflowMatches(this.props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n\n var dotProps = _objectSpread({\n clipPath: clipPath\n }, getPresentationAttributes(this.props), {}, filterEventAttributes(this.props), {\n cx: cx,\n cy: cy\n });\n\n return React.createElement(Layer, {\n className: classNames('recharts-reference-dot', className)\n }, this.constructor.renderDot(shape, dotProps), Label.renderCallByParent(this.props, {\n x: cx - r,\n y: cy - r,\n width: 2 * r,\n height: 2 * r\n }));\n }\n }], [{\n key: \"renderDot\",\n value: function renderDot(option, props) {\n var dot;\n\n if (React.isValidElement(option)) {\n dot = React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n dot = option(props);\n } else {\n dot = React.createElement(Dot, _extends({}, props, {\n cx: props.cx,\n cy: props.cy,\n className: \"recharts-reference-dot-dot\"\n }));\n }\n\n return dot;\n }\n }]);\n\n return ReferenceDot;\n}(PureComponent);\n\nReferenceDot.displayName = 'ReferenceDot';\nReferenceDot.propTypes = _objectSpread({}, PRESENTATION_ATTRIBUTES, {}, EVENT_ATTRIBUTES, {\n r: PropTypes.number,\n xAxis: PropTypes.shape({\n scale: PropTypes.func\n }),\n yAxis: PropTypes.shape({\n scale: PropTypes.func\n }),\n isFront: PropTypes.bool,\n alwaysShow: PropTypes.bool,\n ifOverflow: PropTypes.oneOf(['hidden', 'visible', 'discard', 'extendDomain']),\n x: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n y: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n className: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n yAxisId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n xAxisId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n shape: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n clipPathId: PropTypes.string\n});\nReferenceDot.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n r: 10,\n fill: '#fff',\n stroke: '#ccc',\n fillOpacity: 1,\n strokeWidth: 1\n};\nexport default ReferenceDot;","import _isFunction from \"lodash/isFunction\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Cartesian Grid\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { PRESENTATION_ATTRIBUTES, getPresentationAttributes } from '../util/ReactUtils';\nimport { isNumber } from '../util/DataUtils';\n\nvar CartesianGrid =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(CartesianGrid, _PureComponent);\n\n function CartesianGrid() {\n _classCallCheck(this, CartesianGrid);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(CartesianGrid).apply(this, arguments));\n }\n\n _createClass(CartesianGrid, [{\n key: \"renderHorizontal\",\n\n /**\n * Draw the horizontal grid lines\n * @param {Array} horizontalPoints either passed in as props or generated from function\n * @return {Group} Horizontal lines\n */\n value: function renderHorizontal(horizontalPoints) {\n var _this = this;\n\n var _this$props = this.props,\n x = _this$props.x,\n width = _this$props.width,\n horizontal = _this$props.horizontal;\n\n if (!horizontalPoints || !horizontalPoints.length) {\n return null;\n }\n\n var items = horizontalPoints.map(function (entry, i) {\n var props = _objectSpread({}, _this.props, {\n x1: x,\n y1: entry,\n x2: x + width,\n y2: entry,\n key: \"line-\".concat(i),\n index: i\n });\n\n return _this.constructor.renderLineItem(horizontal, props);\n });\n return React.createElement(\"g\", {\n className: \"recharts-cartesian-grid-horizontal\"\n }, items);\n }\n /**\n * Draw vertical grid lines\n * @param {Array} verticalPoints either passed in as props or generated from function\n * @return {Group} Vertical lines\n */\n\n }, {\n key: \"renderVertical\",\n value: function renderVertical(verticalPoints) {\n var _this2 = this;\n\n var _this$props2 = this.props,\n y = _this$props2.y,\n height = _this$props2.height,\n vertical = _this$props2.vertical;\n\n if (!verticalPoints || !verticalPoints.length) {\n return null;\n }\n\n var items = verticalPoints.map(function (entry, i) {\n var props = _objectSpread({}, _this2.props, {\n x1: entry,\n y1: y,\n x2: entry,\n y2: y + height,\n key: \"line-\".concat(i),\n index: i\n });\n\n return _this2.constructor.renderLineItem(vertical, props);\n });\n return React.createElement(\"g\", {\n className: \"recharts-cartesian-grid-vertical\"\n }, items);\n }\n /**\n * Draw vertical grid stripes filled by colors\n * @param {Array} verticalPoints either passed in as props or generated from function\n * @return {Group} Vertical stripes\n */\n\n }, {\n key: \"renderVerticalStripes\",\n value: function renderVerticalStripes(verticalPoints) {\n var verticalFill = this.props.verticalFill;\n\n if (!verticalFill || !verticalFill.length) {\n return null;\n }\n\n var _this$props3 = this.props,\n fillOpacity = _this$props3.fillOpacity,\n x = _this$props3.x,\n y = _this$props3.y,\n width = _this$props3.width,\n height = _this$props3.height;\n var verticalPointsUpdated = verticalPoints.slice().sort(function (a, b) {\n return a - b;\n });\n\n if (x !== verticalPointsUpdated[0]) {\n verticalPointsUpdated.unshift(0);\n }\n\n var items = verticalPointsUpdated.map(function (entry, i) {\n var lineWidth = verticalPointsUpdated[i + 1] ? verticalPointsUpdated[i + 1] - entry : x + width - entry;\n\n if (lineWidth <= 0) {\n return null;\n }\n\n var colorIndex = i % verticalFill.length;\n return React.createElement(\"rect\", {\n key: \"react-\".concat(i) // eslint-disable-line react/no-array-index-key\n ,\n x: Math.round(entry + x - x),\n y: y,\n width: lineWidth,\n height: height,\n stroke: \"none\",\n fill: verticalFill[colorIndex],\n fillOpacity: fillOpacity,\n className: \"recharts-cartesian-grid-bg\"\n });\n });\n return React.createElement(\"g\", {\n className: \"recharts-cartesian-gridstripes-vertical\"\n }, items);\n }\n /**\n * Draw horizontal grid stripes filled by colors\n * @param {Array} horizontalPoints either passed in as props or generated from function\n * @return {Group} Horizontal stripes\n */\n\n }, {\n key: \"renderHorizontalStripes\",\n value: function renderHorizontalStripes(horizontalPoints) {\n var horizontalFill = this.props.horizontalFill;\n\n if (!horizontalFill || !horizontalFill.length) {\n return null;\n }\n\n var _this$props4 = this.props,\n fillOpacity = _this$props4.fillOpacity,\n x = _this$props4.x,\n y = _this$props4.y,\n width = _this$props4.width,\n height = _this$props4.height;\n var horizontalPointsUpdated = horizontalPoints.slice().sort(function (a, b) {\n return a - b;\n });\n\n if (y !== horizontalPointsUpdated[0]) {\n horizontalPointsUpdated.unshift(0);\n }\n\n var items = horizontalPointsUpdated.map(function (entry, i) {\n var lineHeight = horizontalPointsUpdated[i + 1] ? horizontalPointsUpdated[i + 1] - entry : y + height - entry;\n\n if (lineHeight <= 0) {\n return null;\n }\n\n var colorIndex = i % horizontalFill.length;\n return React.createElement(\"rect\", {\n key: \"react-\".concat(i) // eslint-disable-line react/no-array-index-key\n ,\n y: Math.round(entry + y - y),\n x: x,\n height: lineHeight,\n width: width,\n stroke: \"none\",\n fill: horizontalFill[colorIndex],\n fillOpacity: fillOpacity,\n className: \"recharts-cartesian-grid-bg\"\n });\n });\n return React.createElement(\"g\", {\n className: \"recharts-cartesian-gridstripes-horizontal\"\n }, items);\n }\n }, {\n key: \"renderBackground\",\n value: function renderBackground() {\n var fill = this.props.fill;\n\n if (!fill || fill === 'none') {\n return null;\n }\n\n var _this$props5 = this.props,\n fillOpacity = _this$props5.fillOpacity,\n x = _this$props5.x,\n y = _this$props5.y,\n width = _this$props5.width,\n height = _this$props5.height;\n return React.createElement(\"rect\", {\n x: x,\n y: y,\n width: width,\n height: height,\n stroke: \"none\",\n fill: fill,\n fillOpacity: fillOpacity,\n className: \"recharts-cartesian-grid-bg\"\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n x = _this$props6.x,\n y = _this$props6.y,\n width = _this$props6.width,\n height = _this$props6.height,\n horizontal = _this$props6.horizontal,\n vertical = _this$props6.vertical,\n horizontalCoordinatesGenerator = _this$props6.horizontalCoordinatesGenerator,\n verticalCoordinatesGenerator = _this$props6.verticalCoordinatesGenerator,\n xAxis = _this$props6.xAxis,\n yAxis = _this$props6.yAxis,\n offset = _this$props6.offset,\n chartWidth = _this$props6.chartWidth,\n chartHeight = _this$props6.chartHeight;\n\n if (!isNumber(width) || width <= 0 || !isNumber(height) || height <= 0 || !isNumber(x) || x !== +x || !isNumber(y) || y !== +y) {\n return null;\n }\n\n var _this$props7 = this.props,\n horizontalPoints = _this$props7.horizontalPoints,\n verticalPoints = _this$props7.verticalPoints; // No horizontal points are specified\n\n if ((!horizontalPoints || !horizontalPoints.length) && _isFunction(horizontalCoordinatesGenerator)) {\n horizontalPoints = horizontalCoordinatesGenerator({\n yAxis: yAxis,\n width: chartWidth,\n height: chartHeight,\n offset: offset\n });\n } // No vertical points are specified\n\n\n if ((!verticalPoints || !verticalPoints.length) && _isFunction(verticalCoordinatesGenerator)) {\n verticalPoints = verticalCoordinatesGenerator({\n xAxis: xAxis,\n width: chartWidth,\n height: chartHeight,\n offset: offset\n });\n }\n\n return React.createElement(\"g\", {\n className: \"recharts-cartesian-grid\"\n }, this.renderBackground(), horizontal && this.renderHorizontal(horizontalPoints), vertical && this.renderVertical(verticalPoints), horizontal && this.renderHorizontalStripes(horizontalPoints), vertical && this.renderVerticalStripes(verticalPoints));\n }\n }], [{\n key: \"renderLineItem\",\n value: function renderLineItem(option, props) {\n var lineItem;\n\n if (React.isValidElement(option)) {\n lineItem = React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n lineItem = option(props);\n } else {\n var x1 = props.x1,\n y1 = props.y1,\n x2 = props.x2,\n y2 = props.y2,\n key = props.key,\n others = _objectWithoutProperties(props, [\"x1\", \"y1\", \"x2\", \"y2\", \"key\"]);\n\n lineItem = React.createElement(\"line\", _extends({}, getPresentationAttributes(others), {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n fill: \"none\",\n key: key\n }));\n }\n\n return lineItem;\n }\n }]);\n\n return CartesianGrid;\n}(PureComponent);\n\nCartesianGrid.displayName = 'CartesianGrid';\nCartesianGrid.propTypes = _objectSpread({}, PRESENTATION_ATTRIBUTES, {\n x: PropTypes.number,\n y: PropTypes.number,\n width: PropTypes.number,\n height: PropTypes.number,\n horizontal: PropTypes.oneOfType([PropTypes.object, PropTypes.element, PropTypes.func, PropTypes.bool]),\n vertical: PropTypes.oneOfType([PropTypes.object, PropTypes.element, PropTypes.func, PropTypes.bool]),\n horizontalPoints: PropTypes.arrayOf(PropTypes.number),\n verticalPoints: PropTypes.arrayOf(PropTypes.number),\n horizontalCoordinatesGenerator: PropTypes.func,\n verticalCoordinatesGenerator: PropTypes.func,\n xAxis: PropTypes.object,\n yAxis: PropTypes.object,\n offset: PropTypes.object,\n chartWidth: PropTypes.number,\n chartHeight: PropTypes.number,\n verticalFill: PropTypes.arrayOf(PropTypes.string),\n horizontalFill: PropTypes.arrayOf(PropTypes.string)\n});\nCartesianGrid.defaultProps = {\n horizontal: true,\n vertical: true,\n // The ordinates of horizontal grid lines\n horizontalPoints: [],\n // The abscissas of vertical grid lines\n verticalPoints: [],\n stroke: '#ccc',\n fill: 'none',\n // The fill of colors of grid lines\n verticalFill: [],\n horizontalFill: []\n};\nexport default CartesianGrid;","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","import _isArray from \"lodash/isArray\";\nimport _isFunction from \"lodash/isFunction\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Curve\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { line as shapeLine, area as shapeArea, curveBasisClosed, curveBasisOpen, curveBasis, curveLinearClosed, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore } from 'd3-shape';\nimport classNames from 'classnames';\nimport { PRESENTATION_ATTRIBUTES, getPresentationAttributes, filterEventAttributes } from '../util/ReactUtils';\nimport { isNumber } from '../util/DataUtils';\nvar CURVE_FACTORIES = {\n curveBasisClosed: curveBasisClosed,\n curveBasisOpen: curveBasisOpen,\n curveBasis: curveBasis,\n curveLinearClosed: curveLinearClosed,\n curveLinear: curveLinear,\n curveMonotoneX: curveMonotoneX,\n curveMonotoneY: curveMonotoneY,\n curveNatural: curveNatural,\n curveStep: curveStep,\n curveStepAfter: curveStepAfter,\n curveStepBefore: curveStepBefore\n};\n\nvar defined = function defined(p) {\n return p.x === +p.x && p.y === +p.y;\n};\n\nvar getX = function getX(p) {\n return p.x;\n};\n\nvar getY = function getY(p) {\n return p.y;\n};\n\nvar getCurveFactory = function getCurveFactory(type, layout) {\n if (_isFunction(type)) {\n return type;\n }\n\n var name = \"curve\".concat(type.slice(0, 1).toUpperCase()).concat(type.slice(1));\n\n if (name === 'curveMonotone' && layout) {\n return CURVE_FACTORIES[\"\".concat(name).concat(layout === 'vertical' ? 'Y' : 'X')];\n }\n\n return CURVE_FACTORIES[name] || curveLinear;\n};\n\nvar Curve =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Curve, _PureComponent);\n\n function Curve() {\n _classCallCheck(this, Curve);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Curve).apply(this, arguments));\n }\n\n _createClass(Curve, [{\n key: \"getPath\",\n\n /**\n * Calculate the path of curve\n * @return {String} path\n */\n value: function getPath() {\n var _this$props = this.props,\n type = _this$props.type,\n points = _this$props.points,\n baseLine = _this$props.baseLine,\n layout = _this$props.layout,\n connectNulls = _this$props.connectNulls;\n var curveFactory = getCurveFactory(type, layout);\n var formatPoints = connectNulls ? points.filter(function (entry) {\n return defined(entry);\n }) : points;\n var lineFunction;\n\n if (_isArray(baseLine)) {\n var formatBaseLine = connectNulls ? baseLine.filter(function (base) {\n return defined(base);\n }) : baseLine;\n var areaPoints = formatPoints.map(function (entry, index) {\n return _objectSpread({}, entry, {\n base: formatBaseLine[index]\n });\n });\n\n if (layout === 'vertical') {\n lineFunction = shapeArea().y(getY).x1(getX).x0(function (d) {\n return d.base.x;\n });\n } else {\n lineFunction = shapeArea().x(getX).y1(getY).y0(function (d) {\n return d.base.y;\n });\n }\n\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(areaPoints);\n }\n\n if (layout === 'vertical' && isNumber(baseLine)) {\n lineFunction = shapeArea().y(getY).x1(getX).x0(baseLine);\n } else if (isNumber(baseLine)) {\n lineFunction = shapeArea().x(getX).y1(getY).y0(baseLine);\n } else {\n lineFunction = shapeLine().x(getX).y(getY);\n }\n\n lineFunction.defined(defined).curve(curveFactory);\n return lineFunction(formatPoints);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n className = _this$props2.className,\n points = _this$props2.points,\n path = _this$props2.path,\n pathRef = _this$props2.pathRef;\n\n if ((!points || !points.length) && !path) {\n return null;\n }\n\n var realPath = points && points.length ? this.getPath() : path;\n return React.createElement(\"path\", _extends({}, getPresentationAttributes(this.props), filterEventAttributes(this.props, null, true), {\n className: classNames('recharts-curve', className),\n d: realPath,\n ref: pathRef\n }));\n }\n }]);\n\n return Curve;\n}(PureComponent);\n\nCurve.displayName = 'Curve';\nCurve.propTypes = _objectSpread({}, PRESENTATION_ATTRIBUTES, {\n className: PropTypes.string,\n type: PropTypes.oneOfType([PropTypes.oneOf(['basis', 'basisClosed', 'basisOpen', 'linear', 'linearClosed', 'natural', 'monotoneX', 'monotoneY', 'monotone', 'step', 'stepBefore', 'stepAfter']), PropTypes.func]),\n layout: PropTypes.oneOf(['horizontal', 'vertical']),\n baseLine: PropTypes.oneOfType([PropTypes.number, PropTypes.array]),\n points: PropTypes.arrayOf(PropTypes.object),\n connectNulls: PropTypes.bool,\n path: PropTypes.string,\n pathRef: PropTypes.func\n});\nCurve.defaultProps = {\n type: 'linear',\n points: [],\n connectNulls: false\n};\nexport default Curve;","import _isObject from \"lodash/isObject\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\nimport _last from \"lodash/last\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { cloneElement } from 'react';\nimport PropTypes from 'prop-types';\nimport Label from './Label';\nimport Layer from '../container/Layer';\nimport { getPresentationAttributes, findAllByType } from '../util/ReactUtils';\nimport { getValueByDataKey } from '../util/ChartUtils';\nvar propTypes = {\n id: PropTypes.string,\n data: PropTypes.arrayOf(PropTypes.object),\n valueAccessor: PropTypes.func,\n clockWise: PropTypes.bool,\n dataKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.func])\n};\nvar defaultProps = {\n valueAccessor: function valueAccessor(entry) {\n return _isArray(entry.value) ? _last(entry.value) : entry.value;\n }\n};\n\nfunction LabelList(props) {\n var data = props.data,\n valueAccessor = props.valueAccessor,\n dataKey = props.dataKey,\n clockWise = props.clockWise,\n id = props.id,\n others = _objectWithoutProperties(props, [\"data\", \"valueAccessor\", \"dataKey\", \"clockWise\", \"id\"]);\n\n if (!data || !data.length) {\n return null;\n }\n\n return React.createElement(Layer, {\n className: \"recharts-label-list\"\n }, data.map(function (entry, index) {\n var value = _isNil(dataKey) ? valueAccessor(entry, index) : getValueByDataKey(entry && entry.payload, dataKey);\n var idProps = _isNil(id) ? {} : {\n id: \"\".concat(id, \"-\").concat(index)\n };\n return React.createElement(Label, _extends({}, getPresentationAttributes(entry), others, idProps, {\n index: index,\n value: value,\n viewBox: Label.parseViewBox(_isNil(clockWise) ? entry : _objectSpread({}, entry, {\n clockWise: clockWise\n })),\n key: \"label-\".concat(index) // eslint-disable-line react/no-array-index-key\n\n }));\n }));\n}\n\nLabelList.propTypes = propTypes;\nLabelList.displayName = 'LabelList';\n\nvar parseLabelList = function parseLabelList(label, data) {\n if (!label) {\n return null;\n }\n\n if (label === true) {\n return React.createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data\n });\n }\n\n if (React.isValidElement(label) || _isFunction(label)) {\n return React.createElement(LabelList, {\n key: \"labelList-implicit\",\n data: data,\n content: label\n });\n }\n\n if (_isObject(label)) {\n return React.createElement(LabelList, _extends({\n data: data\n }, label, {\n key: \"labelList-implicit\"\n }));\n }\n\n return null;\n};\n\nvar renderCallByParent = function renderCallByParent(parentProps, data) {\n var ckeckPropsLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (!parentProps || !parentProps.children && ckeckPropsLabel && !parentProps.label) {\n return null;\n }\n\n var children = parentProps.children;\n var explicitChilren = findAllByType(children, LabelList).map(function (child, index) {\n return cloneElement(child, {\n data: data,\n key: \"labelList-\".concat(index)\n });\n });\n\n if (!ckeckPropsLabel) {\n return explicitChilren;\n }\n\n var implicitLabelList = parseLabelList(parentProps.label, data);\n return [implicitLabelList].concat(_toConsumableArray(explicitChilren));\n};\n\nLabelList.renderCallByParent = renderCallByParent;\nLabelList.defaultProps = defaultProps;\nexport default LabelList;","import _isEqual from \"lodash/isEqual\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Line\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport Animate from 'react-smooth';\nimport classNames from 'classnames';\nimport Curve from '../shape/Curve';\nimport Dot from '../shape/Dot';\nimport Layer from '../container/Layer';\nimport LabelList from '../component/LabelList';\nimport ErrorBar from './ErrorBar';\nimport { uniqueId, interpolateNumber } from '../util/DataUtils';\nimport { PRESENTATION_ATTRIBUTES, EVENT_ATTRIBUTES, LEGEND_TYPES, TOOLTIP_TYPES, filterEventAttributes, getPresentationAttributes, isSsr, findAllByType } from '../util/ReactUtils';\nimport { getCateCoordinateOfLine, getValueByDataKey } from '../util/ChartUtils';\n\nvar Line =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Line, _PureComponent);\n\n function Line() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Line);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Line)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n isAnimationFinished: true,\n totalLength: 0\n };\n _this.id = uniqueId('recharts-line-');\n\n _this.cachePrevData = function (points) {\n _this.setState({\n prevPoints: points\n });\n };\n\n _this.pathRef = function (node) {\n _this.mainCurve = node;\n };\n\n _this.handleAnimationEnd = function () {\n _this.setState({\n isAnimationFinished: true\n });\n\n _this.props.onAnimationEnd();\n };\n\n _this.handleAnimationStart = function () {\n _this.setState({\n isAnimationFinished: false\n });\n\n _this.props.onAnimationStart();\n };\n\n return _this;\n }\n\n _createClass(Line, [{\n key: \"componentDidMount\",\n\n /* eslint-disable react/no-did-mount-set-state */\n value: function componentDidMount() {\n if (!this.props.isAnimationActive) {\n return;\n }\n\n var totalLength = this.getTotalLength();\n this.setState({\n totalLength: totalLength\n });\n } // eslint-disable-next-line camelcase\n\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n var _this$props = this.props,\n animationId = _this$props.animationId,\n points = _this$props.points;\n\n if (nextProps.animationId !== animationId) {\n this.cachePrevData(points);\n }\n }\n }, {\n key: \"getTotalLength\",\n value: function getTotalLength() {\n var curveDom = this.mainCurve;\n\n try {\n return curveDom && curveDom.getTotalLength && curveDom.getTotalLength() || 0;\n } catch (err) {\n return 0;\n }\n }\n }, {\n key: \"getStrokeDasharray\",\n value: function getStrokeDasharray(length, totalLength, lines) {\n var lineLength = lines.reduce(function (pre, next) {\n return pre + next;\n });\n var count = parseInt(length / lineLength, 10);\n var remainLength = length % lineLength;\n var restLength = totalLength - length;\n var remainLines = [];\n\n for (var i = 0, sum = 0;; sum += lines[i], ++i) {\n if (sum + lines[i] > remainLength) {\n remainLines = [].concat(_toConsumableArray(lines.slice(0, i)), [remainLength - sum]);\n break;\n }\n }\n\n var emptyLines = remainLines.length % 2 === 0 ? [0, restLength] : [restLength];\n return [].concat(_toConsumableArray(this.constructor.repeat(lines, count)), _toConsumableArray(remainLines), emptyLines).map(function (line) {\n return \"\".concat(line, \"px\");\n }).join(', ');\n }\n }, {\n key: \"renderErrorBar\",\n value: function renderErrorBar() {\n if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n\n var _this$props2 = this.props,\n points = _this$props2.points,\n xAxis = _this$props2.xAxis,\n yAxis = _this$props2.yAxis,\n layout = _this$props2.layout,\n children = _this$props2.children;\n var errorBarItems = findAllByType(children, ErrorBar);\n\n if (!errorBarItems) {\n return null;\n }\n\n function dataPointFormatter(dataPoint, dataKey) {\n return {\n x: dataPoint.x,\n y: dataPoint.y,\n value: dataPoint.value,\n errorVal: getValueByDataKey(dataPoint.payload, dataKey)\n };\n }\n\n return errorBarItems.map(function (item, i) {\n return React.cloneElement(item, {\n key: i,\n // eslint-disable-line react/no-array-index-key\n data: points,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: layout,\n dataPointFormatter: dataPointFormatter\n });\n });\n }\n }, {\n key: \"renderDots\",\n value: function renderDots(needClip, clipPathId) {\n var _this2 = this;\n\n var isAnimationActive = this.props.isAnimationActive;\n\n if (isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n\n var _this$props3 = this.props,\n dot = _this$props3.dot,\n points = _this$props3.points,\n dataKey = _this$props3.dataKey;\n var lineProps = getPresentationAttributes(this.props);\n var customDotProps = getPresentationAttributes(dot);\n var dotEvents = filterEventAttributes(dot);\n var dots = points.map(function (entry, i) {\n var dotProps = _objectSpread({\n key: \"dot-\".concat(i),\n r: 3\n }, lineProps, {}, customDotProps, {}, dotEvents, {\n value: entry.value,\n dataKey: dataKey,\n cx: entry.x,\n cy: entry.y,\n index: i,\n payload: entry.payload\n });\n\n return _this2.constructor.renderDotItem(dot, dotProps);\n });\n var dotsProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n };\n return React.createElement(Layer, _extends({\n className: \"recharts-line-dots\",\n key: \"dots\"\n }, dotsProps), dots);\n }\n }, {\n key: \"renderCurveStatically\",\n value: function renderCurveStatically(points, needClip, clipPathId, props) {\n var _this$props4 = this.props,\n type = _this$props4.type,\n layout = _this$props4.layout,\n connectNulls = _this$props4.connectNulls;\n\n var curveProps = _objectSpread({}, getPresentationAttributes(this.props), {}, filterEventAttributes(this.props), {\n fill: 'none',\n className: 'recharts-line-curve',\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null,\n points: points\n }, props, {\n type: type,\n layout: layout,\n connectNulls: connectNulls\n });\n\n return React.createElement(Curve, _extends({}, curveProps, {\n pathRef: this.pathRef\n }));\n }\n }, {\n key: \"renderCurveWithAnimation\",\n value: function renderCurveWithAnimation(needClip, clipPathId) {\n var _this3 = this;\n\n var _this$props5 = this.props,\n points = _this$props5.points,\n strokeDasharray = _this$props5.strokeDasharray,\n isAnimationActive = _this$props5.isAnimationActive,\n animationBegin = _this$props5.animationBegin,\n animationDuration = _this$props5.animationDuration,\n animationEasing = _this$props5.animationEasing,\n animationId = _this$props5.animationId,\n width = _this$props5.width,\n height = _this$props5.height;\n var _this$state = this.state,\n prevPoints = _this$state.prevPoints,\n totalLength = _this$state.totalLength;\n return React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"line-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n\n if (prevPoints) {\n var prevPointsDiffFactor = prevPoints.length / points.length;\n var stepData = points.map(function (entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n\n if (prevPoints[prevPointIndex]) {\n var prev = prevPoints[prevPointIndex];\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n return _objectSpread({}, entry, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n } // magic number of faking previous x and y location\n\n\n if (_this3.animateNewValues) {\n var _interpolatorX = interpolateNumber(width * 2, entry.x);\n\n var _interpolatorY = interpolateNumber(height / 2, entry.y);\n\n return _objectSpread({}, entry, {\n x: _interpolatorX(t),\n y: _interpolatorY(t)\n });\n }\n\n return _objectSpread({}, entry, {\n x: entry.x,\n y: entry.y\n });\n });\n return _this3.renderCurveStatically(stepData, needClip, clipPathId);\n }\n\n var interpolator = interpolateNumber(0, totalLength);\n var curLength = interpolator(t);\n var currentStrokeDasharray;\n\n if (strokeDasharray) {\n var lines = strokeDasharray.split(/[,\\s]+/gim).map(function (num) {\n return parseFloat(num);\n });\n currentStrokeDasharray = _this3.getStrokeDasharray(curLength, totalLength, lines);\n } else {\n currentStrokeDasharray = \"\".concat(curLength, \"px \").concat(totalLength - curLength, \"px\");\n }\n\n return _this3.renderCurveStatically(points, needClip, clipPathId, {\n strokeDasharray: currentStrokeDasharray\n });\n });\n }\n }, {\n key: \"renderCurve\",\n value: function renderCurve(needClip, clipPathId) {\n var _this$props6 = this.props,\n points = _this$props6.points,\n isAnimationActive = _this$props6.isAnimationActive;\n var _this$state2 = this.state,\n prevPoints = _this$state2.prevPoints,\n totalLength = _this$state2.totalLength;\n\n if (isAnimationActive && points && points.length && (!prevPoints && totalLength > 0 || !_isEqual(prevPoints, points))) {\n return this.renderCurveWithAnimation(needClip, clipPathId);\n }\n\n return this.renderCurveStatically(points, needClip, clipPathId);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props7 = this.props,\n hide = _this$props7.hide,\n dot = _this$props7.dot,\n points = _this$props7.points,\n className = _this$props7.className,\n xAxis = _this$props7.xAxis,\n yAxis = _this$props7.yAxis,\n top = _this$props7.top,\n left = _this$props7.left,\n width = _this$props7.width,\n height = _this$props7.height,\n isAnimationActive = _this$props7.isAnimationActive,\n id = _this$props7.id;\n\n if (hide || !points || !points.length) {\n return null;\n }\n\n var isAnimationFinished = this.state.isAnimationFinished;\n var hasSinglePoint = points.length === 1;\n var layerClass = classNames('recharts-line', className);\n var needClip = xAxis && xAxis.allowDataOverflow || yAxis && yAxis.allowDataOverflow;\n var clipPathId = _isNil(id) ? this.id : id;\n return React.createElement(Layer, {\n className: layerClass\n }, needClip ? React.createElement(\"defs\", null, React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, React.createElement(\"rect\", {\n x: left,\n y: top,\n width: width,\n height: height\n }))) : null, !hasSinglePoint && this.renderCurve(needClip, clipPathId), this.renderErrorBar(), (hasSinglePoint || dot) && this.renderDots(needClip, clipPathId), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points));\n }\n }], [{\n key: \"repeat\",\n value: function repeat(lines, count) {\n var linesUnit = lines.length % 2 !== 0 ? [].concat(_toConsumableArray(lines), [0]) : lines;\n var result = [];\n\n for (var i = 0; i < count; ++i) {\n result = [].concat(_toConsumableArray(result), _toConsumableArray(linesUnit));\n }\n\n return result;\n }\n }, {\n key: \"renderDotItem\",\n value: function renderDotItem(option, props) {\n var dotItem;\n\n if (React.isValidElement(option)) {\n dotItem = React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n dotItem = option(props);\n } else {\n var className = classNames('recharts-line-dot', option ? option.className : '');\n dotItem = React.createElement(Dot, _extends({}, props, {\n className: className\n }));\n }\n\n return dotItem;\n }\n }]);\n\n return Line;\n}(PureComponent);\n\nLine.displayName = 'Line';\nLine.propTypes = _objectSpread({}, PRESENTATION_ATTRIBUTES, {}, EVENT_ATTRIBUTES, {\n className: PropTypes.string,\n type: PropTypes.oneOfType([PropTypes.oneOf(['basis', 'basisClosed', 'basisOpen', 'linear', 'linearClosed', 'natural', 'monotoneX', 'monotoneY', 'monotone', 'step', 'stepBefore', 'stepAfter']), PropTypes.func]),\n unit: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n name: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n yAxisId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n xAxisId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n yAxis: PropTypes.object,\n xAxis: PropTypes.object,\n legendType: PropTypes.oneOf(LEGEND_TYPES),\n tooltipType: PropTypes.oneOf(TOOLTIP_TYPES),\n layout: PropTypes.oneOf(['horizontal', 'vertical']),\n connectNulls: PropTypes.bool,\n hide: PropTypes.bool,\n // whether have dot in line\n activeDot: PropTypes.oneOfType([PropTypes.object, PropTypes.element, PropTypes.func, PropTypes.bool]),\n dot: PropTypes.oneOfType([PropTypes.object, PropTypes.element, PropTypes.func, PropTypes.bool]),\n top: PropTypes.number,\n left: PropTypes.number,\n width: PropTypes.number,\n height: PropTypes.number,\n points: PropTypes.arrayOf(PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number,\n value: PropTypes.value\n })),\n onAnimationStart: PropTypes.func,\n onAnimationEnd: PropTypes.func,\n isAnimationActive: PropTypes.bool,\n animateNewValues: PropTypes.bool,\n animationBegin: PropTypes.number,\n animationDuration: PropTypes.number,\n animationEasing: PropTypes.oneOf(['ease', 'ease-in', 'ease-out', 'ease-in-out', 'linear']),\n animationId: PropTypes.number,\n id: PropTypes.string\n});\nLine.defaultProps = {\n xAxisId: 0,\n yAxisId: 0,\n connectNulls: false,\n activeDot: true,\n dot: true,\n legendType: 'line',\n stroke: '#3182bd',\n strokeWidth: 1,\n fill: '#fff',\n points: [],\n isAnimationActive: !isSsr(),\n animateNewValues: true,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease',\n hide: false,\n onAnimationStart: function onAnimationStart() {},\n onAnimationEnd: function onAnimationEnd() {}\n};\n\nLine.getComposedData = function (_ref2) {\n var props = _ref2.props,\n xAxis = _ref2.xAxis,\n yAxis = _ref2.yAxis,\n xAxisTicks = _ref2.xAxisTicks,\n yAxisTicks = _ref2.yAxisTicks,\n dataKey = _ref2.dataKey,\n bandSize = _ref2.bandSize,\n displayedData = _ref2.displayedData,\n offset = _ref2.offset;\n var layout = props.layout;\n var points = displayedData.map(function (entry, index) {\n var value = getValueByDataKey(entry, dataKey);\n\n if (layout === 'horizontal') {\n return {\n x: getCateCoordinateOfLine({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n y: _isNil(value) ? null : yAxis.scale(value),\n value: value,\n payload: entry\n };\n }\n\n return {\n x: _isNil(value) ? null : xAxis.scale(value),\n y: getCateCoordinateOfLine({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n value: value,\n payload: entry\n };\n });\n return _objectSpread({\n points: points,\n layout: layout\n }, offset);\n};\n\nexport default Line;","import _isEqual from \"lodash/isEqual\";\nimport _isNaN from \"lodash/isNaN\";\nimport _max from \"lodash/max\";\nimport _isFunction from \"lodash/isFunction\";\nimport _get from \"lodash/get\";\nimport _isNil from \"lodash/isNil\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Area\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Animate from 'react-smooth';\nimport Curve from '../shape/Curve';\nimport Dot from '../shape/Dot';\nimport Layer from '../container/Layer';\nimport LabelList from '../component/LabelList';\nimport { PRESENTATION_ATTRIBUTES, EVENT_ATTRIBUTES, LEGEND_TYPES, TOOLTIP_TYPES, getPresentationAttributes, isSsr, filterEventAttributes } from '../util/ReactUtils';\nimport { isNumber, uniqueId, interpolateNumber } from '../util/DataUtils';\nimport { getCateCoordinateOfLine, getValueByDataKey } from '../util/ChartUtils';\n\nvar Area =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Area, _PureComponent);\n\n function Area() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Area);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Area)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n isAnimationFinished: true\n };\n _this.id = uniqueId('recharts-area-');\n\n _this.cachePrevData = function (points, baseLine) {\n _this.setState({\n prevPoints: points,\n prevBaseLine: baseLine\n });\n };\n\n _this.handleAnimationEnd = function () {\n var onAnimationEnd = _this.props.onAnimationEnd;\n\n _this.setState({\n isAnimationFinished: true\n });\n\n if (_isFunction(onAnimationEnd)) {\n onAnimationEnd();\n }\n };\n\n _this.handleAnimationStart = function () {\n var onAnimationStart = _this.props.onAnimationStart;\n\n _this.setState({\n isAnimationFinished: false\n });\n\n if (_isFunction(onAnimationStart)) {\n onAnimationStart();\n }\n };\n\n return _this;\n }\n\n _createClass(Area, [{\n key: \"componentWillReceiveProps\",\n // eslint-disable-next-line camelcase\n value: function componentWillReceiveProps(nextProps) {\n var _this$props = this.props,\n animationId = _this$props.animationId,\n points = _this$props.points,\n baseLine = _this$props.baseLine;\n\n if (nextProps.animationId !== animationId) {\n this.cachePrevData(points, baseLine);\n }\n }\n }, {\n key: \"renderDots\",\n value: function renderDots(needClip, clipPathId) {\n var _this2 = this;\n\n var isAnimationActive = this.props.isAnimationActive;\n var isAnimationFinished = this.state.isAnimationFinished;\n\n if (isAnimationActive && !isAnimationFinished) {\n return null;\n }\n\n var _this$props2 = this.props,\n dot = _this$props2.dot,\n points = _this$props2.points,\n dataKey = _this$props2.dataKey;\n var areaProps = getPresentationAttributes(this.props);\n var customDotProps = getPresentationAttributes(dot);\n var dotEvents = filterEventAttributes(dot);\n var dots = points.map(function (entry, i) {\n var dotProps = _objectSpread({\n key: \"dot-\".concat(i),\n r: 3\n }, areaProps, {}, customDotProps, {}, dotEvents, {\n dataKey: dataKey,\n cx: entry.x,\n cy: entry.y,\n index: i,\n value: entry.value,\n payload: entry.payload\n });\n\n return _this2.constructor.renderDotItem(dot, dotProps);\n });\n var dotsProps = {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n };\n return React.createElement(Layer, _extends({\n className: \"recharts-area-dots\"\n }, dotsProps), dots);\n }\n }, {\n key: \"renderHorizontalRect\",\n value: function renderHorizontalRect(alpha) {\n var _this$props3 = this.props,\n baseLine = _this$props3.baseLine,\n points = _this$props3.points,\n strokeWidth = _this$props3.strokeWidth;\n var startX = points[0].x;\n var endX = points[points.length - 1].x;\n var width = alpha * Math.abs(startX - endX);\n\n var maxY = _max(points.map(function (entry) {\n return entry.y || 0;\n }));\n\n if (isNumber(baseLine)) {\n maxY = Math.max(baseLine, maxY);\n } else if (baseLine && _isArray(baseLine) && baseLine.length) {\n maxY = Math.max(_max(baseLine.map(function (entry) {\n return entry.y || 0;\n })), maxY);\n }\n\n if (isNumber(maxY)) {\n return React.createElement(\"rect\", {\n x: startX < endX ? startX : startX - width,\n y: 0,\n width: width,\n height: parseInt(maxY + (strokeWidth || 1), 10)\n });\n }\n\n return null;\n }\n }, {\n key: \"renderVerticalRect\",\n value: function renderVerticalRect(alpha) {\n var _this$props4 = this.props,\n baseLine = _this$props4.baseLine,\n points = _this$props4.points,\n strokeWidth = _this$props4.strokeWidth;\n var startY = points[0].y;\n var endY = points[points.length - 1].y;\n var height = alpha * Math.abs(startY - endY);\n\n var maxX = _max(points.map(function (entry) {\n return entry.x || 0;\n }));\n\n if (isNumber(baseLine)) {\n maxX = Math.max(baseLine, maxX);\n } else if (baseLine && _isArray(baseLine) && baseLine.length) {\n maxX = Math.max(_max(baseLine.map(function (entry) {\n return entry.x || 0;\n })), maxX);\n }\n\n if (isNumber(maxX)) {\n return React.createElement(\"rect\", {\n x: 0,\n y: startY < endY ? startY : startY - height,\n width: maxX + (strokeWidth || 1),\n height: parseInt(height, 10)\n });\n }\n\n return null;\n }\n }, {\n key: \"renderClipRect\",\n value: function renderClipRect(alpha) {\n var layout = this.props.layout;\n\n if (layout === 'vertical') {\n return this.renderVerticalRect(alpha);\n }\n\n return this.renderHorizontalRect(alpha);\n }\n }, {\n key: \"renderAreaStatically\",\n value: function renderAreaStatically(points, baseLine, needClip, clipPathId) {\n var _this$props5 = this.props,\n layout = _this$props5.layout,\n type = _this$props5.type,\n stroke = _this$props5.stroke,\n connectNulls = _this$props5.connectNulls,\n isRange = _this$props5.isRange;\n return React.createElement(Layer, {\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n }, React.createElement(Curve, _extends({}, this.props, {\n points: points,\n baseLine: baseLine,\n stroke: \"none\",\n className: \"recharts-area-area\"\n })), stroke !== 'none' && React.createElement(Curve, _extends({}, getPresentationAttributes(this.props), {\n className: \"recharts-area-curve\",\n layout: layout,\n type: type,\n connectNulls: connectNulls,\n fill: \"none\",\n points: points\n })), stroke !== 'none' && isRange && React.createElement(Curve, _extends({}, getPresentationAttributes(this.props), {\n className: \"recharts-area-curve\",\n layout: layout,\n type: type,\n connectNulls: connectNulls,\n fill: \"none\",\n points: baseLine\n })));\n }\n }, {\n key: \"renderAreaWithAnimation\",\n value: function renderAreaWithAnimation(needClip, clipPathId) {\n var _this3 = this;\n\n var _this$props6 = this.props,\n points = _this$props6.points,\n baseLine = _this$props6.baseLine,\n isAnimationActive = _this$props6.isAnimationActive,\n animationBegin = _this$props6.animationBegin,\n animationDuration = _this$props6.animationDuration,\n animationEasing = _this$props6.animationEasing,\n animationId = _this$props6.animationId;\n var _this$state = this.state,\n prevPoints = _this$state.prevPoints,\n prevBaseLine = _this$state.prevBaseLine; // const clipPathId = _.isNil(id) ? this.id : id;\n\n return React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"area-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n\n if (prevPoints) {\n var prevPointsDiffFactor = prevPoints.length / points.length; // update animtaion\n\n var stepPoints = points.map(function (entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n\n if (prevPoints[prevPointIndex]) {\n var prev = prevPoints[prevPointIndex];\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n return _objectSpread({}, entry, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n }\n\n return entry;\n });\n var stepBaseLine;\n\n if (isNumber(baseLine)) {\n var interpolator = interpolateNumber(prevBaseLine, baseLine);\n stepBaseLine = interpolator(t);\n } else if (_isNil(baseLine) || _isNaN(baseLine)) {\n var _interpolator = interpolateNumber(prevBaseLine, 0);\n\n stepBaseLine = _interpolator(t);\n } else {\n stepBaseLine = baseLine.map(function (entry, index) {\n var prevPointIndex = Math.floor(index * prevPointsDiffFactor);\n\n if (prevBaseLine[prevPointIndex]) {\n var prev = prevBaseLine[prevPointIndex];\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n return _objectSpread({}, entry, {\n x: interpolatorX(t),\n y: interpolatorY(t)\n });\n }\n\n return entry;\n });\n }\n\n return _this3.renderAreaStatically(stepPoints, stepBaseLine, needClip, clipPathId);\n }\n\n return React.createElement(Layer, null, React.createElement(\"defs\", null, React.createElement(\"clipPath\", {\n id: \"animationClipPath-\".concat(clipPathId)\n }, _this3.renderClipRect(t))), React.createElement(Layer, {\n clipPath: \"url(#animationClipPath-\".concat(clipPathId, \")\")\n }, _this3.renderAreaStatically(points, baseLine, needClip, clipPathId)));\n });\n }\n }, {\n key: \"renderArea\",\n value: function renderArea(needClip, clipPathId) {\n var _this$props7 = this.props,\n points = _this$props7.points,\n baseLine = _this$props7.baseLine,\n isAnimationActive = _this$props7.isAnimationActive;\n var _this$state2 = this.state,\n prevPoints = _this$state2.prevPoints,\n prevBaseLine = _this$state2.prevBaseLine,\n totalLength = _this$state2.totalLength;\n\n if (isAnimationActive && points && points.length && (!prevPoints && totalLength > 0 || !_isEqual(prevPoints, points) || !_isEqual(prevBaseLine, baseLine))) {\n return this.renderAreaWithAnimation(needClip, clipPathId);\n }\n\n return this.renderAreaStatically(points, baseLine, needClip, clipPathId);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props8 = this.props,\n hide = _this$props8.hide,\n dot = _this$props8.dot,\n points = _this$props8.points,\n className = _this$props8.className,\n top = _this$props8.top,\n left = _this$props8.left,\n xAxis = _this$props8.xAxis,\n yAxis = _this$props8.yAxis,\n width = _this$props8.width,\n height = _this$props8.height,\n isAnimationActive = _this$props8.isAnimationActive,\n id = _this$props8.id;\n\n if (hide || !points || !points.length) {\n return null;\n }\n\n var isAnimationFinished = this.state.isAnimationFinished;\n var hasSinglePoint = points.length === 1;\n var layerClass = classNames('recharts-area', className);\n var needClip = xAxis && xAxis.allowDataOverflow || yAxis && yAxis.allowDataOverflow;\n var clipPathId = _isNil(id) ? this.id : id;\n return React.createElement(Layer, {\n className: layerClass\n }, needClip ? React.createElement(\"defs\", null, React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, React.createElement(\"rect\", {\n x: left,\n y: top,\n width: width,\n height: parseInt(height, 10)\n }))) : null, !hasSinglePoint ? this.renderArea(needClip, clipPathId) : null, (dot || hasSinglePoint) && this.renderDots(needClip, clipPathId), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points));\n }\n }]);\n\n return Area;\n}(PureComponent);\n\nArea.displayName = 'Area';\nArea.propTypes = _objectSpread({}, PRESENTATION_ATTRIBUTES, {}, EVENT_ATTRIBUTES, {\n className: PropTypes.string,\n dataKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.func]).isRequired,\n type: PropTypes.oneOfType([PropTypes.oneOf(['basis', 'basisClosed', 'basisOpen', 'linear', 'linearClosed', 'natural', 'monotoneX', 'monotoneY', 'monotone', 'step', 'stepBefore', 'stepAfter']), PropTypes.func]),\n unit: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n name: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n yAxisId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n xAxisId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n yAxis: PropTypes.object,\n xAxis: PropTypes.object,\n stackId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n legendType: PropTypes.oneOf(LEGEND_TYPES),\n tooltipType: PropTypes.oneOf(TOOLTIP_TYPES),\n connectNulls: PropTypes.bool,\n activeDot: PropTypes.oneOfType([PropTypes.object, PropTypes.element, PropTypes.func, PropTypes.bool]),\n // dot configuration\n dot: PropTypes.oneOfType([PropTypes.func, PropTypes.element, PropTypes.object, PropTypes.bool]),\n label: PropTypes.oneOfType([PropTypes.func, PropTypes.element, PropTypes.object, PropTypes.bool]),\n hide: PropTypes.bool,\n // have curve configuration\n layout: PropTypes.oneOf(['horizontal', 'vertical']),\n baseLine: PropTypes.oneOfType([PropTypes.number, PropTypes.array]),\n isRange: PropTypes.bool,\n points: PropTypes.arrayOf(PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.array])\n })),\n onAnimationStart: PropTypes.func,\n onAnimationEnd: PropTypes.func,\n animationId: PropTypes.number,\n isAnimationActive: PropTypes.bool,\n animationBegin: PropTypes.number,\n animationDuration: PropTypes.number,\n animationEasing: PropTypes.oneOf(['ease', 'ease-in', 'ease-out', 'ease-in-out', 'linear']),\n id: PropTypes.string\n});\nArea.defaultProps = {\n stroke: '#3182bd',\n fill: '#3182bd',\n fillOpacity: 0.6,\n xAxisId: 0,\n yAxisId: 0,\n legendType: 'line',\n connectNulls: false,\n // points of area\n points: [],\n dot: false,\n activeDot: true,\n hide: false,\n isAnimationActive: !isSsr(),\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease'\n};\n\nArea.getBaseValue = function (props, xAxis, yAxis) {\n var layout = props.layout,\n baseValue = props.baseValue;\n\n if (isNumber(baseValue)) {\n return baseValue;\n }\n\n var numericAxis = layout === 'horizontal' ? yAxis : xAxis;\n var domain = numericAxis.scale.domain();\n\n if (numericAxis.type === 'number') {\n var max = Math.max(domain[0], domain[1]);\n var min = Math.min(domain[0], domain[1]);\n\n if (baseValue === 'dataMin') {\n return min;\n }\n\n if (baseValue === 'dataMax') {\n return max;\n }\n\n return max < 0 ? max : Math.max(Math.min(domain[0], domain[1]), 0);\n }\n\n if (baseValue === 'dataMin') {\n return domain[0];\n }\n\n if (baseValue === 'dataMax') {\n return domain[1];\n }\n\n return domain[0];\n};\n\nArea.getComposedData = function (_ref2) {\n var props = _ref2.props,\n xAxis = _ref2.xAxis,\n yAxis = _ref2.yAxis,\n xAxisTicks = _ref2.xAxisTicks,\n yAxisTicks = _ref2.yAxisTicks,\n bandSize = _ref2.bandSize,\n dataKey = _ref2.dataKey,\n stackedData = _ref2.stackedData,\n dataStartIndex = _ref2.dataStartIndex,\n displayedData = _ref2.displayedData,\n offset = _ref2.offset;\n var layout = props.layout;\n var hasStack = stackedData && stackedData.length;\n var baseValue = Area.getBaseValue(props, xAxis, yAxis);\n var isRange = false;\n var points = displayedData.map(function (entry, index) {\n var value;\n\n if (hasStack) {\n value = stackedData[dataStartIndex + index];\n } else {\n value = getValueByDataKey(entry, dataKey);\n\n if (!_isArray(value)) {\n value = [baseValue, value];\n } else {\n isRange = true;\n }\n }\n\n if (layout === 'horizontal') {\n return {\n x: getCateCoordinateOfLine({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n y: _isNil(value[1]) ? null : yAxis.scale(value[1]),\n value: value,\n payload: entry\n };\n }\n\n return {\n x: _isNil(value[1]) ? null : xAxis.scale(value[1]),\n y: getCateCoordinateOfLine({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n entry: entry,\n index: index\n }),\n value: value,\n payload: entry\n };\n });\n var baseLine;\n\n if (hasStack || isRange) {\n baseLine = points.map(function (entry) {\n if (layout === 'horizontal') {\n return {\n x: entry.x,\n y: !_isNil(_get(entry, 'value[0]')) ? yAxis.scale(_get(entry, 'value[0]')) : null\n };\n }\n\n return {\n x: !_isNil(_get(entry, 'value[0]')) ? xAxis.scale(_get(entry, 'value[0]')) : null,\n y: entry.y\n };\n });\n } else if (layout === 'horizontal') {\n baseLine = yAxis.scale(baseValue);\n } else {\n baseLine = xAxis.scale(baseValue);\n }\n\n return _objectSpread({\n points: points,\n baseLine: baseLine,\n layout: layout,\n isRange: isRange\n }, offset);\n};\n\nArea.renderDotItem = function (option, props) {\n var dotItem;\n\n if (React.isValidElement(option)) {\n dotItem = React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n dotItem = option(props);\n } else {\n dotItem = React.createElement(Dot, _extends({}, props, {\n className: \"recharts-area-dot\"\n }));\n }\n\n return dotItem;\n};\n\nexport default Area;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Rectangle\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Animate from 'react-smooth';\nimport { PRESENTATION_ATTRIBUTES, EVENT_ATTRIBUTES, getPresentationAttributes, filterEventAttributes } from '../util/ReactUtils';\n\nvar getRectangePath = function getRectangePath(x, y, width, height, radius) {\n var maxRadius = Math.min(Math.abs(width) / 2, Math.abs(height) / 2);\n var ySign = height >= 0 ? 1 : -1;\n var xSign = width >= 0 ? 1 : -1;\n var clockWise = height >= 0 && width >= 0 || height < 0 && width < 0 ? 1 : 0;\n var path;\n\n if (maxRadius > 0 && radius instanceof Array) {\n var newRadius = [];\n\n for (var i = 0, len = 4; i < len; i++) {\n newRadius[i] = radius[i] > maxRadius ? maxRadius : radius[i];\n }\n\n path = \"M\".concat(x, \",\").concat(y + ySign * newRadius[0]);\n\n if (newRadius[0] > 0) {\n path += \"A \".concat(newRadius[0], \",\").concat(newRadius[0], \",0,0,\").concat(clockWise, \",\").concat(x + xSign * newRadius[0], \",\").concat(y);\n }\n\n path += \"L \".concat(x + width - xSign * newRadius[1], \",\").concat(y);\n\n if (newRadius[1] > 0) {\n path += \"A \".concat(newRadius[1], \",\").concat(newRadius[1], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width, \",\").concat(y + ySign * newRadius[1]);\n }\n\n path += \"L \".concat(x + width, \",\").concat(y + height - ySign * newRadius[2]);\n\n if (newRadius[2] > 0) {\n path += \"A \".concat(newRadius[2], \",\").concat(newRadius[2], \",0,0,\").concat(clockWise, \",\\n \").concat(x + width - xSign * newRadius[2], \",\").concat(y + height);\n }\n\n path += \"L \".concat(x + xSign * newRadius[3], \",\").concat(y + height);\n\n if (newRadius[3] > 0) {\n path += \"A \".concat(newRadius[3], \",\").concat(newRadius[3], \",0,0,\").concat(clockWise, \",\\n \").concat(x, \",\").concat(y + height - ySign * newRadius[3]);\n }\n\n path += 'Z';\n } else if (maxRadius > 0 && radius === +radius && radius > 0) {\n var _newRadius = Math.min(maxRadius, radius);\n\n path = \"M \".concat(x, \",\").concat(y + ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + xSign * _newRadius, \",\").concat(y, \"\\n L \").concat(x + width - xSign * _newRadius, \",\").concat(y, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width, \",\").concat(y + ySign * _newRadius, \"\\n L \").concat(x + width, \",\").concat(y + height - ySign * _newRadius, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x + width - xSign * _newRadius, \",\").concat(y + height, \"\\n L \").concat(x + xSign * _newRadius, \",\").concat(y + height, \"\\n A \").concat(_newRadius, \",\").concat(_newRadius, \",0,0,\").concat(clockWise, \",\").concat(x, \",\").concat(y + height - ySign * _newRadius, \" Z\");\n } else {\n path = \"M \".concat(x, \",\").concat(y, \" h \").concat(width, \" v \").concat(height, \" h \").concat(-width, \" Z\");\n }\n\n return path;\n};\n\nvar Rectangle =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Rectangle, _PureComponent);\n\n function Rectangle() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Rectangle);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Rectangle)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n totalLength: -1\n };\n return _this;\n }\n\n _createClass(Rectangle, [{\n key: \"componentDidMount\",\n\n /* eslint-disable react/no-did-mount-set-state */\n value: function componentDidMount() {\n if (this.node && this.node.getTotalLength) {\n try {\n var totalLength = this.node.getTotalLength();\n\n if (totalLength) {\n this.setState({\n totalLength: totalLength\n });\n }\n } catch (err) {// calculate total length error\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n x = _this$props.x,\n y = _this$props.y,\n width = _this$props.width,\n height = _this$props.height,\n radius = _this$props.radius,\n className = _this$props.className;\n var totalLength = this.state.totalLength;\n var _this$props2 = this.props,\n animationEasing = _this$props2.animationEasing,\n animationDuration = _this$props2.animationDuration,\n animationBegin = _this$props2.animationBegin,\n isAnimationActive = _this$props2.isAnimationActive,\n isUpdateAnimationActive = _this$props2.isUpdateAnimationActive;\n\n if (x !== +x || y !== +y || width !== +width || height !== +height || width === 0 || height === 0) {\n return null;\n }\n\n var layerClass = classNames('recharts-rectangle', className);\n\n if (!isUpdateAnimationActive) {\n return React.createElement(\"path\", _extends({}, getPresentationAttributes(this.props), filterEventAttributes(this.props), {\n className: layerClass,\n d: getRectangePath(x, y, width, height, radius)\n }));\n }\n\n return React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n to: {\n width: width,\n height: height,\n x: x,\n y: y\n },\n duration: animationDuration,\n animationEasing: animationEasing,\n isActive: isUpdateAnimationActive\n }, function (_ref) {\n var currWidth = _ref.width,\n currHeight = _ref.height,\n currX = _ref.x,\n currY = _ref.y;\n return React.createElement(Animate, {\n canBegin: totalLength > 0,\n from: \"0px \".concat(totalLength === -1 ? 1 : totalLength, \"px\"),\n to: \"\".concat(totalLength, \"px 0px\"),\n attributeName: \"strokeDasharray\",\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing\n }, React.createElement(\"path\", _extends({}, getPresentationAttributes(_this2.props), filterEventAttributes(_this2.props), {\n className: layerClass,\n d: getRectangePath(currX, currY, currWidth, currHeight, radius),\n ref: function ref(node) {\n _this2.node = node;\n }\n })));\n });\n }\n }]);\n\n return Rectangle;\n}(PureComponent);\n\nRectangle.displayName = 'Rectangle';\nRectangle.propTypes = _objectSpread({}, PRESENTATION_ATTRIBUTES, {}, EVENT_ATTRIBUTES, {\n className: PropTypes.string,\n x: PropTypes.number,\n y: PropTypes.number,\n width: PropTypes.number,\n height: PropTypes.number,\n radius: PropTypes.oneOfType([PropTypes.number, PropTypes.array]),\n isAnimationActive: PropTypes.bool,\n isUpdateAnimationActive: PropTypes.bool,\n animationBegin: PropTypes.number,\n animationDuration: PropTypes.number,\n animationEasing: PropTypes.oneOf(['ease', 'ease-in', 'ease-out', 'ease-in-out', 'linear'])\n});\nRectangle.defaultProps = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n // The radius of border\n // The radius of four corners when radius is a number\n // The radius of left-top, right-top, right-bottom, left-bottom when radius is an array\n radius: 0,\n isAnimationActive: false,\n isUpdateAnimationActive: false,\n animationBegin: 0,\n animationDuration: 1500,\n animationEasing: 'ease'\n};\nexport default Rectangle;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @fileOverview Cross\n */\nimport { PRESENTATION_ATTRIBUTES } from '../util/ReactUtils';\n\nfunction Cell() {\n return null;\n}\n\nCell.propTypes = _objectSpread({}, PRESENTATION_ATTRIBUTES);\nCell.displayName = 'Cell';\nexport default Cell;","import _isNil from \"lodash/isNil\";\nimport _isEqual from \"lodash/isEqual\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isArray from \"lodash/isArray\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Render a group of bar\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Animate from 'react-smooth';\nimport Rectangle from '../shape/Rectangle';\nimport Layer from '../container/Layer';\nimport ErrorBar from './ErrorBar';\nimport Cell from '../component/Cell';\nimport LabelList from '../component/LabelList';\nimport { uniqueId, mathSign, interpolateNumber } from '../util/DataUtils';\nimport { PRESENTATION_ATTRIBUTES, EVENT_ATTRIBUTES, LEGEND_TYPES, TOOLTIP_TYPES, findAllByType, getPresentationAttributes, filterEventsOfChild, isSsr } from '../util/ReactUtils';\nimport { getCateCoordinateOfBar, getValueByDataKey, truncateByDomain, getBaseValueOfBar, findPositionOfBar } from '../util/ChartUtils';\n\nvar Bar =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Bar, _PureComponent);\n\n function Bar() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Bar);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Bar)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n isAnimationFinished: false\n };\n _this.id = uniqueId('recharts-bar-');\n\n _this.cachePrevData = function (data) {\n _this.setState({\n prevData: data\n });\n };\n\n _this.handleAnimationEnd = function () {\n _this.setState({\n isAnimationFinished: true\n });\n\n _this.props.onAnimationEnd();\n };\n\n _this.handleAnimationStart = function () {\n _this.setState({\n isAnimationFinished: false\n });\n\n _this.props.onAnimationStart();\n };\n\n return _this;\n }\n\n _createClass(Bar, [{\n key: \"componentWillReceiveProps\",\n // eslint-disable-next-line camelcase\n value: function componentWillReceiveProps(nextProps) {\n var _this$props = this.props,\n animationId = _this$props.animationId,\n data = _this$props.data;\n\n if (nextProps.animationId !== animationId) {\n this.cachePrevData(data);\n }\n }\n }, {\n key: \"renderRectanglesStatically\",\n value: function renderRectanglesStatically(data) {\n var _this2 = this;\n\n var shape = this.props.shape;\n var baseProps = getPresentationAttributes(this.props);\n return data && data.map(function (entry, i) {\n var props = _objectSpread({}, baseProps, {}, entry, {\n index: i\n });\n\n return React.createElement(Layer, _extends({\n className: \"recharts-bar-rectangle\"\n }, filterEventsOfChild(_this2.props, entry, i), {\n key: \"rectangle-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n }), _this2.constructor.renderRectangle(shape, props));\n });\n }\n }, {\n key: \"renderRectanglesWithAnimation\",\n value: function renderRectanglesWithAnimation() {\n var _this3 = this;\n\n var _this$props2 = this.props,\n data = _this$props2.data,\n layout = _this$props2.layout,\n isAnimationActive = _this$props2.isAnimationActive,\n animationBegin = _this$props2.animationBegin,\n animationDuration = _this$props2.animationDuration,\n animationEasing = _this$props2.animationEasing,\n animationId = _this$props2.animationId;\n var prevData = this.state.prevData;\n return React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"bar-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n var stepData = data.map(function (entry, index) {\n var prev = prevData && prevData[index];\n\n if (prev) {\n var interpolatorX = interpolateNumber(prev.x, entry.x);\n var interpolatorY = interpolateNumber(prev.y, entry.y);\n var interpolatorWidth = interpolateNumber(prev.width, entry.width);\n var interpolatorHeight = interpolateNumber(prev.height, entry.height);\n return _objectSpread({}, entry, {\n x: interpolatorX(t),\n y: interpolatorY(t),\n width: interpolatorWidth(t),\n height: interpolatorHeight(t)\n });\n }\n\n if (layout === 'horizontal') {\n var _interpolatorHeight = interpolateNumber(0, entry.height);\n\n var h = _interpolatorHeight(t);\n\n return _objectSpread({}, entry, {\n y: entry.y + entry.height - h,\n height: h\n });\n }\n\n var interpolator = interpolateNumber(0, entry.width);\n var w = interpolator(t);\n return _objectSpread({}, entry, {\n width: w\n });\n });\n return React.createElement(Layer, null, _this3.renderRectanglesStatically(stepData));\n });\n }\n }, {\n key: \"renderRectangles\",\n value: function renderRectangles() {\n var _this$props3 = this.props,\n data = _this$props3.data,\n isAnimationActive = _this$props3.isAnimationActive;\n var prevData = this.state.prevData;\n\n if (isAnimationActive && data && data.length && (!prevData || !_isEqual(prevData, data))) {\n return this.renderRectanglesWithAnimation();\n }\n\n return this.renderRectanglesStatically(data);\n }\n }, {\n key: \"renderBackground\",\n value: function renderBackground() {\n var _this4 = this;\n\n var data = this.props.data;\n var backgroundProps = getPresentationAttributes(this.props.background);\n return data.map(function (entry, i) {\n // eslint-disable-next-line no-unused-vars\n var value = entry.value,\n background = entry.background,\n rest = _objectWithoutProperties(entry, [\"value\", \"background\"]);\n\n if (!background) {\n return null;\n }\n\n var props = _objectSpread({}, rest, {\n fill: '#eee'\n }, background, {}, backgroundProps, {}, filterEventsOfChild(_this4.props, entry, i), {\n index: i,\n key: \"background-bar-\".concat(i),\n className: 'recharts-bar-background-rectangle'\n });\n\n return _this4.constructor.renderRectangle(_this4.props.background, props);\n });\n }\n }, {\n key: \"renderErrorBar\",\n value: function renderErrorBar() {\n if (this.props.isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n\n var _this$props4 = this.props,\n data = _this$props4.data,\n xAxis = _this$props4.xAxis,\n yAxis = _this$props4.yAxis,\n layout = _this$props4.layout,\n children = _this$props4.children;\n var errorBarItems = findAllByType(children, ErrorBar);\n\n if (!errorBarItems) {\n return null;\n }\n\n var offset = layout === 'vertical' ? data[0].height / 2 : data[0].width / 2;\n\n function dataPointFormatter(dataPoint, dataKey) {\n return {\n x: dataPoint.x,\n y: dataPoint.y,\n value: dataPoint.value,\n errorVal: getValueByDataKey(dataPoint, dataKey)\n };\n }\n\n return errorBarItems.map(function (item, i) {\n return React.cloneElement(item, {\n key: \"error-bar-\".concat(i),\n // eslint-disable-line react/no-array-index-key\n data: data,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: layout,\n offset: offset,\n dataPointFormatter: dataPointFormatter\n });\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props5 = this.props,\n hide = _this$props5.hide,\n data = _this$props5.data,\n className = _this$props5.className,\n xAxis = _this$props5.xAxis,\n yAxis = _this$props5.yAxis,\n left = _this$props5.left,\n top = _this$props5.top,\n width = _this$props5.width,\n height = _this$props5.height,\n isAnimationActive = _this$props5.isAnimationActive,\n background = _this$props5.background,\n id = _this$props5.id;\n\n if (hide || !data || !data.length) {\n return null;\n }\n\n var isAnimationFinished = this.state.isAnimationFinished;\n var layerClass = classNames('recharts-bar', className);\n var needClip = xAxis && xAxis.allowDataOverflow || yAxis && yAxis.allowDataOverflow;\n var clipPathId = _isNil(id) ? this.id : id;\n return React.createElement(Layer, {\n className: layerClass\n }, needClip ? React.createElement(\"defs\", null, React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, React.createElement(\"rect\", {\n x: left,\n y: top,\n width: width,\n height: height\n }))) : null, React.createElement(Layer, {\n className: \"recharts-bar-rectangles\",\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n }, background ? this.renderBackground() : null, this.renderRectangles()), this.renderErrorBar(), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, data));\n }\n }], [{\n key: \"renderRectangle\",\n value: function renderRectangle(option, props) {\n var rectangle;\n\n if (React.isValidElement(option)) {\n rectangle = React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n rectangle = option(props);\n } else {\n rectangle = React.createElement(Rectangle, props);\n }\n\n return rectangle;\n }\n }]);\n\n return Bar;\n}(PureComponent);\n\nBar.displayName = 'Bar';\nBar.propTypes = _objectSpread({}, PRESENTATION_ATTRIBUTES, {}, EVENT_ATTRIBUTES, {\n className: PropTypes.string,\n layout: PropTypes.oneOf(['vertical', 'horizontal']),\n xAxisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n yAxisId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n yAxis: PropTypes.object,\n xAxis: PropTypes.object,\n stackId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n barSize: PropTypes.number,\n unit: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n name: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n dataKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.func]).isRequired,\n legendType: PropTypes.oneOf(LEGEND_TYPES),\n tooltipType: PropTypes.oneOf(TOOLTIP_TYPES),\n minPointSize: PropTypes.number,\n maxBarSize: PropTypes.number,\n hide: PropTypes.bool,\n shape: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n data: PropTypes.arrayOf(PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number,\n width: PropTypes.number,\n height: PropTypes.number,\n radius: PropTypes.oneOfType([PropTypes.number, PropTypes.array]),\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.array])\n })),\n onAnimationStart: PropTypes.func,\n onAnimationEnd: PropTypes.func,\n animationId: PropTypes.number,\n isAnimationActive: PropTypes.bool,\n animationBegin: PropTypes.number,\n animationDuration: PropTypes.number,\n animationEasing: PropTypes.oneOf(['ease', 'ease-in', 'ease-out', 'ease-in-out', 'linear']),\n id: PropTypes.string\n});\nBar.defaultProps = {\n xAxisId: 0,\n yAxisId: 0,\n legendType: 'rect',\n minPointSize: 0,\n hide: false,\n // data of bar\n data: [],\n layout: 'vertical',\n isAnimationActive: !isSsr(),\n animationBegin: 0,\n animationDuration: 400,\n animationEasing: 'ease',\n onAnimationStart: function onAnimationStart() {},\n onAnimationEnd: function onAnimationEnd() {}\n};\n\nBar.getComposedData = function (_ref2) {\n var props = _ref2.props,\n item = _ref2.item,\n barPosition = _ref2.barPosition,\n bandSize = _ref2.bandSize,\n xAxis = _ref2.xAxis,\n yAxis = _ref2.yAxis,\n xAxisTicks = _ref2.xAxisTicks,\n yAxisTicks = _ref2.yAxisTicks,\n stackedData = _ref2.stackedData,\n dataStartIndex = _ref2.dataStartIndex,\n displayedData = _ref2.displayedData,\n offset = _ref2.offset;\n var pos = findPositionOfBar(barPosition, item);\n\n if (!pos) {\n return [];\n }\n\n var layout = props.layout;\n var _item$props = item.props,\n dataKey = _item$props.dataKey,\n children = _item$props.children,\n minPointSize = _item$props.minPointSize;\n var numericAxis = layout === 'horizontal' ? yAxis : xAxis;\n var stackedDomain = stackedData ? numericAxis.scale.domain() : null;\n var baseValue = getBaseValueOfBar({\n props: props,\n numericAxis: numericAxis\n });\n var cells = findAllByType(children, Cell);\n var rects = displayedData.map(function (entry, index) {\n var value, x, y, width, height, background;\n\n if (stackedData) {\n value = truncateByDomain(stackedData[dataStartIndex + index], stackedDomain);\n } else {\n value = getValueByDataKey(entry, dataKey);\n\n if (!_isArray(value)) {\n value = [baseValue, value];\n }\n }\n\n if (layout === 'horizontal') {\n x = getCateCoordinateOfBar({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: bandSize,\n offset: pos.offset,\n entry: entry,\n index: index\n });\n y = yAxis.scale(value[1]);\n width = pos.size;\n height = yAxis.scale(value[0]) - yAxis.scale(value[1]);\n background = {\n x: x,\n y: yAxis.y,\n width: width,\n height: yAxis.height\n };\n\n if (Math.abs(minPointSize) > 0 && Math.abs(height) < Math.abs(minPointSize)) {\n var delta = mathSign(height || minPointSize) * (Math.abs(minPointSize) - Math.abs(height));\n y -= delta;\n height += delta;\n }\n } else {\n x = xAxis.scale(value[0]);\n y = getCateCoordinateOfBar({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: bandSize,\n offset: pos.offset,\n entry: entry,\n index: index\n });\n width = xAxis.scale(value[1]) - xAxis.scale(value[0]);\n height = pos.size;\n background = {\n x: xAxis.x,\n y: y,\n width: xAxis.width,\n height: height\n };\n\n if (Math.abs(minPointSize) > 0 && Math.abs(width) < Math.abs(minPointSize)) {\n var _delta = mathSign(width || minPointSize) * (Math.abs(minPointSize) - Math.abs(width));\n\n width += _delta;\n }\n }\n\n return _objectSpread({}, entry, {\n x: x,\n y: y,\n width: width,\n height: height,\n value: stackedData ? value : value[1],\n payload: entry,\n background: background\n }, cells && cells[index] && cells[index].props);\n });\n return _objectSpread({\n data: rects,\n layout: layout\n }, offset);\n};\n\nexport default Bar;","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview X Axis\n */\nimport { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { SCALE_TYPES } from '../util/ReactUtils';\n\nvar XAxis =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(XAxis, _PureComponent);\n\n function XAxis() {\n _classCallCheck(this, XAxis);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(XAxis).apply(this, arguments));\n }\n\n _createClass(XAxis, [{\n key: \"render\",\n value: function render() {\n return null;\n }\n }]);\n\n return XAxis;\n}(PureComponent);\n\nXAxis.displayName = 'XAxis';\nXAxis.propTypes = {\n allowDecimals: PropTypes.bool,\n allowDuplicatedCategory: PropTypes.bool,\n hide: PropTypes.bool,\n // The name of data displayed in the axis\n name: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n // The unit of data displayed in the axis\n unit: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n // The unique id of x-axis\n xAxisId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n domain: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.func, PropTypes.oneOf(['auto', 'dataMin', 'dataMax'])])),\n // The key of data displayed in the axis\n dataKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.func]),\n // The width of axis which is usually calculated internally\n width: PropTypes.number,\n // The height of axis, which need to be setted by user\n height: PropTypes.number,\n mirror: PropTypes.bool,\n // The orientation of axis\n orientation: PropTypes.oneOf(['top', 'bottom']),\n type: PropTypes.oneOf(['number', 'category']),\n // Ticks can be any type when the axis is the type of category\n // Ticks must be numbers when the axis is the type of number\n ticks: PropTypes.array,\n // The count of ticks\n tickCount: PropTypes.number,\n // The formatter function of tick\n tickFormatter: PropTypes.func,\n padding: PropTypes.shape({\n left: PropTypes.number,\n right: PropTypes.number\n }),\n allowDataOverflow: PropTypes.bool,\n scale: PropTypes.oneOfType([PropTypes.oneOf(SCALE_TYPES), PropTypes.func]),\n tick: PropTypes.oneOfType([PropTypes.bool, PropTypes.func, PropTypes.object, PropTypes.element]),\n axisLine: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n tickLine: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n minTickGap: PropTypes.number,\n tickSize: PropTypes.number,\n interval: PropTypes.oneOfType([PropTypes.number, PropTypes.oneOf(['preserveStart', 'preserveEnd', 'preserveStartEnd'])]),\n reversed: PropTypes.bool\n};\nXAxis.defaultProps = {\n allowDecimals: true,\n hide: false,\n orientation: 'bottom',\n width: 0,\n height: 30,\n mirror: false,\n xAxisId: 0,\n tickCount: 5,\n type: 'category',\n domain: [0, 'auto'],\n padding: {\n left: 0,\n right: 0\n },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false,\n allowDuplicatedCategory: true\n};\nexport default XAxis;","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Y Axis\n */\nimport { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\nvar YAxis =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(YAxis, _PureComponent);\n\n function YAxis() {\n _classCallCheck(this, YAxis);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(YAxis).apply(this, arguments));\n }\n\n _createClass(YAxis, [{\n key: \"render\",\n value: function render() {\n return null;\n }\n }]);\n\n return YAxis;\n}(PureComponent);\n\nYAxis.displayName = 'YAxis';\nYAxis.propTypes = {\n allowDecimals: PropTypes.bool,\n allowDuplicatedCategory: PropTypes.bool,\n hide: PropTypes.bool,\n // The name of data displayed in the axis\n name: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n // The unit of data displayed in the axis\n unit: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n // The unique id of y-axis\n yAxisId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n domain: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.func, PropTypes.oneOf(['auto', 'dataMin', 'dataMax'])])),\n // The key of data displayed in the axis\n dataKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.func]),\n // Ticks can be any type when the axis is the type of category\n // Ticks must be numbers when the axis is the type of number\n ticks: PropTypes.array,\n // The count of ticks\n tickCount: PropTypes.number,\n // The formatter function of tick\n tickFormatter: PropTypes.func,\n // The width of axis, which need to be setted by user\n width: PropTypes.number,\n // The height of axis which is usually calculated in Chart\n height: PropTypes.number,\n mirror: PropTypes.bool,\n // The orientation of axis\n orientation: PropTypes.oneOf(['left', 'right']),\n type: PropTypes.oneOf(['number', 'category']),\n padding: PropTypes.shape({\n top: PropTypes.number,\n bottom: PropTypes.number\n }),\n allowDataOverflow: PropTypes.bool,\n scale: PropTypes.oneOfType([PropTypes.oneOf(['auto', 'linear', 'pow', 'sqrt', 'log', 'identity', 'time', 'band', 'point', 'ordinal', 'quantile', 'quantize', 'utc', 'sequential', 'threshold']), PropTypes.func]),\n tick: PropTypes.oneOfType([PropTypes.bool, PropTypes.func, PropTypes.object, PropTypes.element]),\n axisLine: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n tickLine: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n minTickGap: PropTypes.number,\n tickSize: PropTypes.number,\n interval: PropTypes.oneOfType([PropTypes.number, PropTypes.oneOf(['preserveStart', 'preserveEnd', 'preserveStartEnd'])]),\n reversed: PropTypes.bool\n};\nYAxis.defaultProps = {\n allowDuplicatedCategory: true,\n allowDecimals: true,\n hide: false,\n orientation: 'left',\n width: 60,\n height: 0,\n mirror: false,\n yAxisId: 0,\n tickCount: 5,\n type: 'number',\n domain: [0, 'auto'],\n padding: {\n top: 0,\n bottom: 0\n },\n allowDataOverflow: false,\n scale: 'auto',\n reversed: false\n};\nexport default YAxis;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Cross\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { isNumber } from '../util/DataUtils';\nimport { PRESENTATION_ATTRIBUTES, getPresentationAttributes } from '../util/ReactUtils';\n\nvar Cross =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Cross, _PureComponent);\n\n function Cross() {\n _classCallCheck(this, Cross);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Cross).apply(this, arguments));\n }\n\n _createClass(Cross, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n x = _this$props.x,\n y = _this$props.y,\n width = _this$props.width,\n height = _this$props.height,\n top = _this$props.top,\n left = _this$props.left,\n className = _this$props.className;\n\n if (!isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || !isNumber(top) || !isNumber(left)) {\n return null;\n }\n\n return React.createElement(\"path\", _extends({}, getPresentationAttributes(this.props), {\n className: classNames('recharts-cross', className),\n d: this.constructor.getPath(x, y, width, height, top, left)\n }));\n }\n }], [{\n key: \"getPath\",\n value: function getPath(x, y, width, height, top, left) {\n return \"M\".concat(x, \",\").concat(top, \"v\").concat(height, \"M\").concat(left, \",\").concat(y, \"h\").concat(width);\n }\n }]);\n\n return Cross;\n}(PureComponent);\n\nCross.displayName = 'Cross';\nCross.propTypes = _objectSpread({}, PRESENTATION_ATTRIBUTES, {\n x: PropTypes.number,\n y: PropTypes.number,\n width: PropTypes.number,\n height: PropTypes.number,\n top: PropTypes.number,\n left: PropTypes.number,\n className: PropTypes.string\n});\nCross.defaultProps = {\n x: 0,\n y: 0,\n top: 0,\n left: 0,\n width: 0,\n height: 0\n};\nexport default Cross;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Sector\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { PRESENTATION_ATTRIBUTES, getPresentationAttributes, filterEventAttributes } from '../util/ReactUtils';\nimport { polarToCartesian, RADIAN } from '../util/PolarUtils';\nimport { getPercentValue, mathSign } from '../util/DataUtils';\n\nvar getDeltaAngle = function getDeltaAngle(startAngle, endAngle) {\n var sign = mathSign(endAngle - startAngle);\n var deltaAngle = Math.min(Math.abs(endAngle - startAngle), 359.999);\n return sign * deltaAngle;\n};\n\nvar getTangentCircle = function getTangentCircle(_ref) {\n var cx = _ref.cx,\n cy = _ref.cy,\n radius = _ref.radius,\n angle = _ref.angle,\n sign = _ref.sign,\n isExternal = _ref.isExternal,\n cornerRadius = _ref.cornerRadius,\n cornerIsExternal = _ref.cornerIsExternal;\n var centerRadius = cornerRadius * (isExternal ? 1 : -1) + radius;\n var theta = Math.asin(cornerRadius / centerRadius) / RADIAN;\n var centerAngle = cornerIsExternal ? angle : angle + sign * theta;\n var center = polarToCartesian(cx, cy, centerRadius, centerAngle); // The coordinate of point which is tangent to the circle\n\n var circleTangency = polarToCartesian(cx, cy, radius, centerAngle); // The coordinate of point which is tangent to the radius line\n\n var lineTangencyAngle = cornerIsExternal ? angle - sign * theta : angle;\n var lineTangency = polarToCartesian(cx, cy, centerRadius * Math.cos(theta * RADIAN), lineTangencyAngle);\n return {\n center: center,\n circleTangency: circleTangency,\n lineTangency: lineTangency,\n theta: theta\n };\n};\n\nvar getSectorPath = function getSectorPath(_ref2) {\n var cx = _ref2.cx,\n cy = _ref2.cy,\n innerRadius = _ref2.innerRadius,\n outerRadius = _ref2.outerRadius,\n startAngle = _ref2.startAngle,\n endAngle = _ref2.endAngle;\n var angle = getDeltaAngle(startAngle, endAngle); // When the angle of sector equals to 360, star point and end point coincide\n\n var tempEndAngle = startAngle + angle;\n var outerStartPoint = polarToCartesian(cx, cy, outerRadius, startAngle);\n var outerEndPoint = polarToCartesian(cx, cy, outerRadius, tempEndAngle);\n var path = \"M \".concat(outerStartPoint.x, \",\").concat(outerStartPoint.y, \"\\n A \").concat(outerRadius, \",\").concat(outerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle > tempEndAngle), \",\\n \").concat(outerEndPoint.x, \",\").concat(outerEndPoint.y, \"\\n \");\n\n if (innerRadius > 0) {\n var innerStartPoint = polarToCartesian(cx, cy, innerRadius, startAngle);\n var innerEndPoint = polarToCartesian(cx, cy, innerRadius, tempEndAngle);\n path += \"L \".concat(innerEndPoint.x, \",\").concat(innerEndPoint.y, \"\\n A \").concat(innerRadius, \",\").concat(innerRadius, \",0,\\n \").concat(+(Math.abs(angle) > 180), \",\").concat(+(startAngle <= tempEndAngle), \",\\n \").concat(innerStartPoint.x, \",\").concat(innerStartPoint.y, \" Z\");\n } else {\n path += \"L \".concat(cx, \",\").concat(cy, \" Z\");\n }\n\n return path;\n};\n\nvar getSectorWithCorner = function getSectorWithCorner(_ref3) {\n var cx = _ref3.cx,\n cy = _ref3.cy,\n innerRadius = _ref3.innerRadius,\n outerRadius = _ref3.outerRadius,\n cornerRadius = _ref3.cornerRadius,\n forceCornerRadius = _ref3.forceCornerRadius,\n cornerIsExternal = _ref3.cornerIsExternal,\n startAngle = _ref3.startAngle,\n endAngle = _ref3.endAngle;\n var sign = mathSign(endAngle - startAngle);\n\n var _getTangentCircle = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: outerRadius,\n angle: startAngle,\n sign: sign,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n soct = _getTangentCircle.circleTangency,\n solt = _getTangentCircle.lineTangency,\n sot = _getTangentCircle.theta;\n\n var _getTangentCircle2 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: outerRadius,\n angle: endAngle,\n sign: -sign,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n eoct = _getTangentCircle2.circleTangency,\n eolt = _getTangentCircle2.lineTangency,\n eot = _getTangentCircle2.theta;\n\n var outerArcAngle = Math.abs(startAngle - endAngle) - sot - eot;\n\n if (outerArcAngle < 0) {\n if (forceCornerRadius) {\n return \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(cornerRadius * 2, \",0\\n a\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,1,\").concat(-cornerRadius * 2, \",0\\n \");\n }\n\n return getSectorPath({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n }\n\n var path = \"M \".concat(solt.x, \",\").concat(solt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(soct.x, \",\").concat(soct.y, \"\\n A\").concat(outerRadius, \",\").concat(outerRadius, \",0,\").concat(+(outerArcAngle > 180), \",\").concat(+(sign < 0), \",\").concat(eoct.x, \",\").concat(eoct.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eolt.x, \",\").concat(eolt.y, \"\\n \");\n\n if (innerRadius > 0) {\n var _getTangentCircle3 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: innerRadius,\n angle: startAngle,\n sign: sign,\n isExternal: true,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n sict = _getTangentCircle3.circleTangency,\n silt = _getTangentCircle3.lineTangency,\n sit = _getTangentCircle3.theta;\n\n var _getTangentCircle4 = getTangentCircle({\n cx: cx,\n cy: cy,\n radius: innerRadius,\n angle: endAngle,\n sign: -sign,\n isExternal: true,\n cornerRadius: cornerRadius,\n cornerIsExternal: cornerIsExternal\n }),\n eict = _getTangentCircle4.circleTangency,\n eilt = _getTangentCircle4.lineTangency,\n eit = _getTangentCircle4.theta;\n\n var innerArcAngle = Math.abs(startAngle - endAngle) - sit - eit;\n\n if (innerArcAngle < 0) {\n return \"\".concat(path, \"L\").concat(cx, \",\").concat(cy, \"Z\");\n }\n\n path += \"L\".concat(eilt.x, \",\").concat(eilt.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(eict.x, \",\").concat(eict.y, \"\\n A\").concat(innerRadius, \",\").concat(innerRadius, \",0,\").concat(+(innerArcAngle > 180), \",\").concat(+(sign > 0), \",\").concat(sict.x, \",\").concat(sict.y, \"\\n A\").concat(cornerRadius, \",\").concat(cornerRadius, \",0,0,\").concat(+(sign < 0), \",\").concat(silt.x, \",\").concat(silt.y, \"Z\");\n } else {\n path += \"L\".concat(cx, \",\").concat(cy, \"Z\");\n }\n\n return path;\n};\n\nvar Sector =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Sector, _PureComponent);\n\n function Sector() {\n _classCallCheck(this, Sector);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Sector).apply(this, arguments));\n }\n\n _createClass(Sector, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n cx = _this$props.cx,\n cy = _this$props.cy,\n innerRadius = _this$props.innerRadius,\n outerRadius = _this$props.outerRadius,\n cornerRadius = _this$props.cornerRadius,\n forceCornerRadius = _this$props.forceCornerRadius,\n cornerIsExternal = _this$props.cornerIsExternal,\n startAngle = _this$props.startAngle,\n endAngle = _this$props.endAngle,\n className = _this$props.className;\n\n if (outerRadius < innerRadius || startAngle === endAngle) {\n return null;\n }\n\n var layerClass = classNames('recharts-sector', className);\n var deltaRadius = outerRadius - innerRadius;\n var cr = getPercentValue(cornerRadius, deltaRadius, 0, true);\n var path;\n\n if (cr > 0 && Math.abs(startAngle - endAngle) < 360) {\n path = getSectorWithCorner({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n cornerRadius: Math.min(cr, deltaRadius / 2),\n forceCornerRadius: forceCornerRadius,\n cornerIsExternal: cornerIsExternal,\n startAngle: startAngle,\n endAngle: endAngle\n });\n } else {\n path = getSectorPath({\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle\n });\n }\n\n return React.createElement(\"path\", _extends({}, getPresentationAttributes(this.props), filterEventAttributes(this.props), {\n className: layerClass,\n d: path\n }));\n }\n }]);\n\n return Sector;\n}(PureComponent);\n\nSector.displayName = 'Sector';\nSector.propTypes = _objectSpread({}, PRESENTATION_ATTRIBUTES, {\n className: PropTypes.string,\n cx: PropTypes.number,\n cy: PropTypes.number,\n innerRadius: PropTypes.number,\n outerRadius: PropTypes.number,\n startAngle: PropTypes.number,\n endAngle: PropTypes.number,\n cornerRadius: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n forceCornerRadius: PropTypes.bool,\n cornerIsExternal: PropTypes.bool\n});\nSector.defaultProps = {\n cx: 0,\n cy: 0,\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n cornerRadius: 0,\n forceCornerRadius: false,\n cornerIsExternal: false\n};\nexport default Sector;","import _isFunction from \"lodash/isFunction\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Cartesian Axis\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { getStringSize } from '../util/DOMUtils';\nimport Layer from '../container/Layer';\nimport Text from '../component/Text';\nimport Label from '../component/Label';\nimport { isSsr, PRESENTATION_ATTRIBUTES, EVENT_ATTRIBUTES, getPresentationAttributes, filterEventsOfChild } from '../util/ReactUtils';\nimport { isNumber, mathSign } from '../util/DataUtils';\n\nvar CartesianAxis =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(CartesianAxis, _Component);\n\n function CartesianAxis() {\n _classCallCheck(this, CartesianAxis);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(CartesianAxis).apply(this, arguments));\n }\n\n _createClass(CartesianAxis, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(_ref, state) {\n var viewBox = _ref.viewBox,\n restProps = _objectWithoutProperties(_ref, [\"viewBox\"]);\n\n // props.viewBox is sometimes generated every time -\n // check that specially as object equality is likely to fail\n var _this$props = this.props,\n viewBoxOld = _this$props.viewBox,\n restPropsOld = _objectWithoutProperties(_this$props, [\"viewBox\"]);\n\n return !shallowEqual(viewBox, viewBoxOld) || !shallowEqual(restProps, restPropsOld) || !shallowEqual(state, this.state);\n }\n /**\n * Calculate the coordinates of endpoints in ticks\n * @param {Object} data The data of a simple tick\n * @return {Object} (x1, y1): The coordinate of endpoint close to tick text\n * (x2, y2): The coordinate of endpoint close to axis\n */\n\n }, {\n key: \"getTickLineCoord\",\n value: function getTickLineCoord(data) {\n var _this$props2 = this.props,\n x = _this$props2.x,\n y = _this$props2.y,\n width = _this$props2.width,\n height = _this$props2.height,\n orientation = _this$props2.orientation,\n tickSize = _this$props2.tickSize,\n mirror = _this$props2.mirror,\n tickMargin = _this$props2.tickMargin;\n var x1, x2, y1, y2, tx, ty;\n var sign = mirror ? -1 : 1;\n var finalTickSize = data.tickSize || tickSize;\n var tickCoord = isNumber(data.tickCoord) ? data.tickCoord : data.coordinate;\n\n switch (orientation) {\n case 'top':\n x1 = x2 = data.coordinate;\n y2 = y + !mirror * height;\n y1 = y2 - sign * finalTickSize;\n ty = y1 - sign * tickMargin;\n tx = tickCoord;\n break;\n\n case 'left':\n y1 = y2 = data.coordinate;\n x2 = x + !mirror * width;\n x1 = x2 - sign * finalTickSize;\n tx = x1 - sign * tickMargin;\n ty = tickCoord;\n break;\n\n case 'right':\n y1 = y2 = data.coordinate;\n x2 = x + mirror * width;\n x1 = x2 + sign * finalTickSize;\n tx = x1 + sign * tickMargin;\n ty = tickCoord;\n break;\n\n default:\n x1 = x2 = data.coordinate;\n y2 = y + mirror * height;\n y1 = y2 + sign * finalTickSize;\n ty = y1 + sign * tickMargin;\n tx = tickCoord;\n break;\n }\n\n return {\n line: {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n },\n tick: {\n x: tx,\n y: ty\n }\n };\n }\n }, {\n key: \"getTickTextAnchor\",\n value: function getTickTextAnchor() {\n var _this$props3 = this.props,\n orientation = _this$props3.orientation,\n mirror = _this$props3.mirror;\n var textAnchor;\n\n switch (orientation) {\n case 'left':\n textAnchor = mirror ? 'start' : 'end';\n break;\n\n case 'right':\n textAnchor = mirror ? 'end' : 'start';\n break;\n\n default:\n textAnchor = 'middle';\n break;\n }\n\n return textAnchor;\n }\n }, {\n key: \"getTickVerticalAnchor\",\n value: function getTickVerticalAnchor() {\n var _this$props4 = this.props,\n orientation = _this$props4.orientation,\n mirror = _this$props4.mirror;\n var verticalAnchor = 'end';\n\n switch (orientation) {\n case 'left':\n case 'right':\n verticalAnchor = 'middle';\n break;\n\n case 'top':\n verticalAnchor = mirror ? 'start' : 'end';\n break;\n\n default:\n verticalAnchor = mirror ? 'end' : 'start';\n break;\n }\n\n return verticalAnchor;\n }\n }, {\n key: \"renderAxisLine\",\n value: function renderAxisLine() {\n var _this$props5 = this.props,\n x = _this$props5.x,\n y = _this$props5.y,\n width = _this$props5.width,\n height = _this$props5.height,\n orientation = _this$props5.orientation,\n axisLine = _this$props5.axisLine,\n mirror = _this$props5.mirror;\n\n var props = _objectSpread({}, getPresentationAttributes(this.props), {\n fill: 'none'\n }, getPresentationAttributes(axisLine));\n\n if (orientation === 'top' || orientation === 'bottom') {\n var needHeight = orientation === 'top' && !mirror || orientation === 'bottom' && mirror;\n props = _objectSpread({}, props, {\n x1: x,\n y1: y + needHeight * height,\n x2: x + width,\n y2: y + needHeight * height\n });\n } else {\n var needWidth = orientation === 'left' && !mirror || orientation === 'right' && mirror;\n props = _objectSpread({}, props, {\n x1: x + needWidth * width,\n y1: y,\n x2: x + needWidth * width,\n y2: y + height\n });\n }\n\n return React.createElement(\"line\", _extends({\n className: \"recharts-cartesian-axis-line\"\n }, props));\n }\n }, {\n key: \"renderTicks\",\n\n /**\n * render the ticks\n * @param {Array} ticks The ticks to actually render (overrides what was passed in props)\n * @return {ReactComponent} renderedTicks\n */\n value: function renderTicks(ticks) {\n var _this = this;\n\n var _this$props6 = this.props,\n tickLine = _this$props6.tickLine,\n stroke = _this$props6.stroke,\n tick = _this$props6.tick,\n tickFormatter = _this$props6.tickFormatter,\n unit = _this$props6.unit;\n var finalTicks = CartesianAxis.getTicks(_objectSpread({}, this.props, {\n ticks: ticks\n }));\n var textAnchor = this.getTickTextAnchor();\n var verticalAnchor = this.getTickVerticalAnchor();\n var axisProps = getPresentationAttributes(this.props);\n var customTickProps = getPresentationAttributes(tick);\n\n var tickLineProps = _objectSpread({}, axisProps, {\n fill: 'none'\n }, getPresentationAttributes(tickLine));\n\n var items = finalTicks.map(function (entry, i) {\n var _this$getTickLineCoor = _this.getTickLineCoord(entry),\n lineCoord = _this$getTickLineCoor.line,\n tickCoord = _this$getTickLineCoor.tick;\n\n var tickProps = _objectSpread({\n textAnchor: textAnchor,\n verticalAnchor: verticalAnchor\n }, axisProps, {\n stroke: 'none',\n fill: stroke\n }, customTickProps, {}, tickCoord, {\n index: i,\n payload: entry,\n visibleTicksCount: finalTicks.length\n });\n\n return React.createElement(Layer, _extends({\n className: \"recharts-cartesian-axis-tick\",\n key: \"tick-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n }, filterEventsOfChild(_this.props, entry, i)), tickLine && React.createElement(\"line\", _extends({\n className: \"recharts-cartesian-axis-tick-line\"\n }, tickLineProps, lineCoord)), tick && _this.constructor.renderTickItem(tick, tickProps, \"\".concat(_isFunction(tickFormatter) ? tickFormatter(entry.value) : entry.value).concat(unit || '')));\n });\n return React.createElement(\"g\", {\n className: \"recharts-cartesian-axis-ticks\"\n }, items);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props7 = this.props,\n axisLine = _this$props7.axisLine,\n width = _this$props7.width,\n height = _this$props7.height,\n ticksGenerator = _this$props7.ticksGenerator,\n className = _this$props7.className,\n hide = _this$props7.hide;\n\n if (hide) {\n return null;\n }\n\n var _this$props8 = this.props,\n ticks = _this$props8.ticks,\n noTicksProps = _objectWithoutProperties(_this$props8, [\"ticks\"]);\n\n var finalTicks = ticks;\n\n if (_isFunction(ticksGenerator)) {\n finalTicks = ticks && ticks.length > 0 ? ticksGenerator(this.props) : ticksGenerator(noTicksProps);\n }\n\n if (width <= 0 || height <= 0 || !finalTicks || !finalTicks.length) {\n return null;\n }\n\n return React.createElement(Layer, {\n className: classNames('recharts-cartesian-axis', className)\n }, axisLine && this.renderAxisLine(), this.renderTicks(finalTicks), Label.renderCallByParent(this.props));\n }\n }], [{\n key: \"getTicks\",\n value: function getTicks(props) {\n var tick = props.tick,\n ticks = props.ticks,\n viewBox = props.viewBox,\n minTickGap = props.minTickGap,\n orientation = props.orientation,\n interval = props.interval,\n tickFormatter = props.tickFormatter,\n unit = props.unit;\n\n if (!ticks || !ticks.length || !tick) {\n return [];\n }\n\n if (isNumber(interval) || isSsr()) {\n return CartesianAxis.getNumberIntervalTicks(ticks, isNumber(interval) ? interval : 0);\n }\n\n if (interval === 'preserveStartEnd') {\n return CartesianAxis.getTicksStart({\n ticks: ticks,\n tickFormatter: tickFormatter,\n viewBox: viewBox,\n orientation: orientation,\n minTickGap: minTickGap,\n unit: unit\n }, true);\n }\n\n if (interval === 'preserveStart') {\n return CartesianAxis.getTicksStart({\n ticks: ticks,\n tickFormatter: tickFormatter,\n viewBox: viewBox,\n orientation: orientation,\n minTickGap: minTickGap,\n unit: unit\n });\n }\n\n return CartesianAxis.getTicksEnd({\n ticks: ticks,\n tickFormatter: tickFormatter,\n viewBox: viewBox,\n orientation: orientation,\n minTickGap: minTickGap,\n unit: unit\n });\n }\n }, {\n key: \"getNumberIntervalTicks\",\n value: function getNumberIntervalTicks(ticks, interval) {\n return ticks.filter(function (entry, i) {\n return i % (interval + 1) === 0;\n });\n }\n }, {\n key: \"getTicksStart\",\n value: function getTicksStart(_ref2, preserveEnd) {\n var ticks = _ref2.ticks,\n tickFormatter = _ref2.tickFormatter,\n viewBox = _ref2.viewBox,\n orientation = _ref2.orientation,\n minTickGap = _ref2.minTickGap,\n unit = _ref2.unit;\n var x = viewBox.x,\n y = viewBox.y,\n width = viewBox.width,\n height = viewBox.height;\n var sizeKey = orientation === 'top' || orientation === 'bottom' ? 'width' : 'height';\n var result = (ticks || []).slice(); // we need add the width of 'unit' only when sizeKey === 'width'\n\n var unitSize = unit && sizeKey === 'width' ? getStringSize(unit)[sizeKey] : 0;\n var len = result.length;\n var sign = len >= 2 ? mathSign(result[1].coordinate - result[0].coordinate) : 1;\n var start, end;\n\n if (sign === 1) {\n start = sizeKey === 'width' ? x : y;\n end = sizeKey === 'width' ? x + width : y + height;\n } else {\n start = sizeKey === 'width' ? x + width : y + height;\n end = sizeKey === 'width' ? x : y;\n }\n\n if (preserveEnd) {\n // Try to guarantee the tail to be displayed\n var tail = ticks[len - 1];\n var tailContent = _isFunction(tickFormatter) ? tickFormatter(tail.value) : tail.value;\n var tailSize = getStringSize(tailContent)[sizeKey] + unitSize;\n var tailGap = sign * (tail.coordinate + sign * tailSize / 2 - end);\n result[len - 1] = tail = _objectSpread({}, tail, {\n tickCoord: tailGap > 0 ? tail.coordinate - tailGap * sign : tail.coordinate\n });\n var isTailShow = sign * (tail.tickCoord - sign * tailSize / 2 - start) >= 0 && sign * (tail.tickCoord + sign * tailSize / 2 - end) <= 0;\n\n if (isTailShow) {\n end = tail.tickCoord - sign * (tailSize / 2 + minTickGap);\n result[len - 1] = _objectSpread({}, tail, {\n isShow: true\n });\n }\n }\n\n var count = preserveEnd ? len - 1 : len;\n\n for (var _i = 0; _i < count; _i++) {\n var entry = result[_i];\n var content = _isFunction(tickFormatter) ? tickFormatter(entry.value) : entry.value;\n var size = getStringSize(content)[sizeKey] + unitSize;\n\n if (_i === 0) {\n var gap = sign * (entry.coordinate - sign * size / 2 - start);\n result[_i] = entry = _objectSpread({}, entry, {\n tickCoord: gap < 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[_i] = entry = _objectSpread({}, entry, {\n tickCoord: entry.coordinate\n });\n }\n\n var isShow = sign * (entry.tickCoord - sign * size / 2 - start) >= 0 && sign * (entry.tickCoord + sign * size / 2 - end) <= 0;\n\n if (isShow) {\n start = entry.tickCoord + sign * (size / 2 + minTickGap);\n result[_i] = _objectSpread({}, entry, {\n isShow: true\n });\n }\n }\n\n return result.filter(function (entry) {\n return entry.isShow;\n });\n }\n }, {\n key: \"getTicksEnd\",\n value: function getTicksEnd(_ref3) {\n var ticks = _ref3.ticks,\n tickFormatter = _ref3.tickFormatter,\n viewBox = _ref3.viewBox,\n orientation = _ref3.orientation,\n minTickGap = _ref3.minTickGap,\n unit = _ref3.unit;\n var x = viewBox.x,\n y = viewBox.y,\n width = viewBox.width,\n height = viewBox.height;\n var sizeKey = orientation === 'top' || orientation === 'bottom' ? 'width' : 'height'; // we need add the width of 'unit' only when sizeKey === 'width'\n\n var unitSize = unit && sizeKey === 'width' ? getStringSize(unit)[sizeKey] : 0;\n var result = (ticks || []).slice();\n var len = result.length;\n var sign = len >= 2 ? mathSign(result[1].coordinate - result[0].coordinate) : 1;\n var start, end;\n\n if (sign === 1) {\n start = sizeKey === 'width' ? x : y;\n end = sizeKey === 'width' ? x + width : y + height;\n } else {\n start = sizeKey === 'width' ? x + width : y + height;\n end = sizeKey === 'width' ? x : y;\n }\n\n for (var _i2 = len - 1; _i2 >= 0; _i2--) {\n var entry = result[_i2];\n var content = _isFunction(tickFormatter) ? tickFormatter(entry.value) : entry.value;\n var size = getStringSize(content)[sizeKey] + unitSize;\n\n if (_i2 === len - 1) {\n var gap = sign * (entry.coordinate + sign * size / 2 - end);\n result[_i2] = entry = _objectSpread({}, entry, {\n tickCoord: gap > 0 ? entry.coordinate - gap * sign : entry.coordinate\n });\n } else {\n result[_i2] = entry = _objectSpread({}, entry, {\n tickCoord: entry.coordinate\n });\n }\n\n var isShow = sign * (entry.tickCoord - sign * size / 2 - start) >= 0 && sign * (entry.tickCoord + sign * size / 2 - end) <= 0;\n\n if (isShow) {\n end = entry.tickCoord - sign * (size / 2 + minTickGap);\n result[_i2] = _objectSpread({}, entry, {\n isShow: true\n });\n }\n }\n\n return result.filter(function (entry) {\n return entry.isShow;\n });\n }\n }, {\n key: \"renderTickItem\",\n value: function renderTickItem(option, props, value) {\n var tickItem;\n\n if (React.isValidElement(option)) {\n tickItem = React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n tickItem = option(props);\n } else {\n tickItem = React.createElement(Text, _extends({}, props, {\n className: \"recharts-cartesian-axis-tick-value\"\n }), value);\n }\n\n return tickItem;\n }\n }]);\n\n return CartesianAxis;\n}(Component);\n\nCartesianAxis.displayName = 'CartesianAxis';\nCartesianAxis.propTypes = _objectSpread({}, PRESENTATION_ATTRIBUTES, {}, EVENT_ATTRIBUTES, {\n className: PropTypes.string,\n x: PropTypes.number,\n y: PropTypes.number,\n width: PropTypes.number,\n height: PropTypes.number,\n orientation: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n // The viewBox of svg\n viewBox: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number,\n width: PropTypes.number,\n height: PropTypes.number\n }),\n tick: PropTypes.oneOfType([PropTypes.bool, PropTypes.func, PropTypes.object, PropTypes.element]),\n axisLine: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n tickLine: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n mirror: PropTypes.bool,\n tickMargin: PropTypes.number.isRequired,\n minTickGap: PropTypes.number,\n ticks: PropTypes.array,\n tickSize: PropTypes.number,\n stroke: PropTypes.string,\n tickFormatter: PropTypes.func,\n ticksGenerator: PropTypes.func,\n interval: PropTypes.oneOfType([PropTypes.number, PropTypes.oneOf(['preserveStart', 'preserveEnd', 'preserveStartEnd'])])\n});\nCartesianAxis.defaultProps = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n viewBox: {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n },\n // The orientation of axis\n orientation: 'bottom',\n // The ticks\n ticks: [],\n stroke: '#666',\n tickLine: true,\n axisLine: true,\n tick: true,\n mirror: false,\n minTickGap: 5,\n // The width or height of tick\n tickSize: 6,\n tickMargin: 2,\n interval: 'preserveEnd'\n};\nexport default CartesianAxis;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar PREFIX_LIST = ['Webkit', 'Moz', 'O', 'ms'];\nexport var generatePrefixStyle = function generatePrefixStyle(name, value) {\n if (!name) {\n return null;\n }\n\n var camelName = name.replace(/(\\w)/, function (v) {\n return v.toUpperCase();\n });\n var result = PREFIX_LIST.reduce(function (res, entry) {\n return _objectSpread({}, res, _defineProperty({}, entry + camelName, value));\n }, {});\n result[name] = value;\n return result;\n};","import _range from \"lodash/range\";\nimport _isFunction from \"lodash/isFunction\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Brush\n */\nimport React, { PureComponent, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { scalePoint } from 'd3-scale';\nimport { getValueByDataKey } from '../util/ChartUtils';\nimport Layer from '../container/Layer';\nimport Text from '../component/Text';\nimport { isNumber } from '../util/DataUtils';\nimport { generatePrefixStyle } from '../util/CssPrefixUtils';\n\nvar Brush =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Brush, _PureComponent);\n\n function Brush(props) {\n var _this;\n\n _classCallCheck(this, Brush);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Brush).call(this, props));\n\n _this.handleDrag = function (e) {\n if (_this.leaveTimer) {\n clearTimeout(_this.leaveTimer);\n _this.leaveTimer = null;\n }\n\n if (_this.state.isTravellerMoving) {\n _this.handleTravellerMove(e);\n } else if (_this.state.isSlideMoving) {\n _this.handleSlideDrag(e);\n }\n };\n\n _this.handleTouchMove = function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleDrag(e.changedTouches[0]);\n }\n };\n\n _this.handleDragEnd = function () {\n _this.setState({\n isTravellerMoving: false,\n isSlideMoving: false\n });\n };\n\n _this.handleLeaveWrapper = function () {\n if (_this.state.isTravellerMoving || _this.state.isSlideMoving) {\n _this.leaveTimer = setTimeout(_this.handleDragEnd, _this.props.leaveTimeOut);\n }\n };\n\n _this.handleEnterSlideOrTraveller = function () {\n _this.setState({\n isTextActive: true\n });\n };\n\n _this.handleLeaveSlideOrTraveller = function () {\n _this.setState({\n isTextActive: false\n });\n };\n\n _this.handleSlideDragStart = function (e) {\n var event = e.changedTouches && e.changedTouches.length ? e.changedTouches[0] : e;\n\n _this.setState({\n isTravellerMoving: false,\n isSlideMoving: true,\n slideMoveStartX: event.pageX\n });\n };\n\n _this.travellerDragStartHandlers = {\n startX: _this.handleTravellerDragStart.bind(_assertThisInitialized(_this), 'startX'),\n endX: _this.handleTravellerDragStart.bind(_assertThisInitialized(_this), 'endX')\n };\n _this.state = props.data && props.data.length ? _this.updateScale(props) : {};\n return _this;\n } // eslint-disable-next-line camelcase\n\n\n _createClass(Brush, [{\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n var _this2 = this;\n\n var _this$props = this.props,\n data = _this$props.data,\n width = _this$props.width,\n x = _this$props.x,\n travellerWidth = _this$props.travellerWidth,\n updateId = _this$props.updateId;\n\n if ((nextProps.data !== data || nextProps.updateId !== updateId) && nextProps.data && nextProps.data.length) {\n this.setState(this.updateScale(nextProps));\n } else if (nextProps.width !== width || nextProps.x !== x || nextProps.travellerWidth !== travellerWidth) {\n this.scale.range([nextProps.x, nextProps.x + nextProps.width - nextProps.travellerWidth]);\n this.scaleValues = this.scale.domain().map(function (entry) {\n return _this2.scale(entry);\n });\n this.setState({\n startX: this.scale(nextProps.startIndex),\n endX: this.scale(nextProps.endIndex)\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.scale = null;\n this.scaleValues = null;\n\n if (this.leaveTimer) {\n clearTimeout(this.leaveTimer);\n this.leaveTimer = null;\n }\n }\n }, {\n key: \"getIndex\",\n value: function getIndex(_ref) {\n var startX = _ref.startX,\n endX = _ref.endX;\n var _this$props2 = this.props,\n gap = _this$props2.gap,\n data = _this$props2.data;\n var lastIndex = data.length - 1;\n var min = Math.min(startX, endX);\n var max = Math.max(startX, endX);\n var minIndex = this.constructor.getIndexInRange(this.scaleValues, min);\n var maxIndex = this.constructor.getIndexInRange(this.scaleValues, max);\n return {\n startIndex: minIndex - minIndex % gap,\n endIndex: maxIndex === lastIndex ? lastIndex : maxIndex - maxIndex % gap\n };\n }\n }, {\n key: \"getTextOfTick\",\n value: function getTextOfTick(index) {\n var _this$props3 = this.props,\n data = _this$props3.data,\n tickFormatter = _this$props3.tickFormatter,\n dataKey = _this$props3.dataKey;\n var text = getValueByDataKey(data[index], dataKey, index);\n return _isFunction(tickFormatter) ? tickFormatter(text) : text;\n }\n }, {\n key: \"handleSlideDrag\",\n value: function handleSlideDrag(e) {\n var _this$state = this.state,\n slideMoveStartX = _this$state.slideMoveStartX,\n startX = _this$state.startX,\n endX = _this$state.endX;\n var _this$props4 = this.props,\n x = _this$props4.x,\n width = _this$props4.width,\n travellerWidth = _this$props4.travellerWidth,\n startIndex = _this$props4.startIndex,\n endIndex = _this$props4.endIndex,\n onChange = _this$props4.onChange;\n var delta = e.pageX - slideMoveStartX;\n\n if (delta > 0) {\n delta = Math.min(delta, x + width - travellerWidth - endX, x + width - travellerWidth - startX);\n } else if (delta < 0) {\n delta = Math.max(delta, x - startX, x - endX);\n }\n\n var newIndex = this.getIndex({\n startX: startX + delta,\n endX: endX + delta\n });\n\n if ((newIndex.startIndex !== startIndex || newIndex.endIndex !== endIndex) && onChange) {\n onChange(newIndex);\n }\n\n this.setState({\n startX: startX + delta,\n endX: endX + delta,\n slideMoveStartX: e.pageX\n });\n }\n }, {\n key: \"handleTravellerDragStart\",\n value: function handleTravellerDragStart(id, e) {\n var event = e.changedTouches && e.changedTouches.length ? e.changedTouches[0] : e;\n this.setState({\n isSlideMoving: false,\n isTravellerMoving: true,\n movingTravellerId: id,\n brushMoveStartX: event.pageX\n });\n }\n }, {\n key: \"handleTravellerMove\",\n value: function handleTravellerMove(e) {\n var _this$setState;\n\n var _this$state2 = this.state,\n brushMoveStartX = _this$state2.brushMoveStartX,\n movingTravellerId = _this$state2.movingTravellerId,\n endX = _this$state2.endX,\n startX = _this$state2.startX;\n var prevValue = this.state[movingTravellerId];\n var _this$props5 = this.props,\n x = _this$props5.x,\n width = _this$props5.width,\n travellerWidth = _this$props5.travellerWidth,\n onChange = _this$props5.onChange,\n gap = _this$props5.gap,\n data = _this$props5.data;\n var params = {\n startX: this.state.startX,\n endX: this.state.endX\n };\n var delta = e.pageX - brushMoveStartX;\n\n if (delta > 0) {\n delta = Math.min(delta, x + width - travellerWidth - prevValue);\n } else if (delta < 0) {\n delta = Math.max(delta, x - prevValue);\n }\n\n params[movingTravellerId] = prevValue + delta;\n var newIndex = this.getIndex(params);\n var startIndex = newIndex.startIndex,\n endIndex = newIndex.endIndex;\n\n var isFullGap = function isFullGap() {\n var lastIndex = data.length - 1;\n\n if (movingTravellerId === 'startX' && (endX > startX ? startIndex % gap === 0 : endIndex % gap === 0) || endX < startX && endIndex === lastIndex || movingTravellerId === 'endX' && (endX > startX ? endIndex % gap === 0 : startIndex % gap === 0) || endX > startX && endIndex === lastIndex) {\n return true;\n }\n\n return false;\n };\n\n this.setState((_this$setState = {}, _defineProperty(_this$setState, movingTravellerId, prevValue + delta), _defineProperty(_this$setState, \"brushMoveStartX\", e.pageX), _this$setState), function () {\n if (onChange) {\n if (isFullGap()) {\n onChange(newIndex);\n }\n }\n });\n }\n }, {\n key: \"updateScale\",\n value: function updateScale(props) {\n var _this3 = this;\n\n var data = props.data,\n startIndex = props.startIndex,\n endIndex = props.endIndex,\n x = props.x,\n width = props.width,\n travellerWidth = props.travellerWidth;\n var len = data.length;\n this.scale = scalePoint().domain(_range(0, len)).range([x, x + width - travellerWidth]);\n this.scaleValues = this.scale.domain().map(function (entry) {\n return _this3.scale(entry);\n });\n return {\n isTextActive: false,\n isSlideMoving: false,\n isTravellerMoving: false,\n startX: this.scale(startIndex),\n endX: this.scale(endIndex)\n };\n }\n }, {\n key: \"renderBackground\",\n value: function renderBackground() {\n var _this$props6 = this.props,\n x = _this$props6.x,\n y = _this$props6.y,\n width = _this$props6.width,\n height = _this$props6.height,\n fill = _this$props6.fill,\n stroke = _this$props6.stroke;\n return React.createElement(\"rect\", {\n stroke: stroke,\n fill: fill,\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n }, {\n key: \"renderPanorama\",\n value: function renderPanorama() {\n var _this$props7 = this.props,\n x = _this$props7.x,\n y = _this$props7.y,\n width = _this$props7.width,\n height = _this$props7.height,\n data = _this$props7.data,\n children = _this$props7.children,\n padding = _this$props7.padding;\n var chartElement = Children.only(children);\n\n if (!chartElement) {\n return null;\n }\n\n return React.cloneElement(chartElement, {\n x: x,\n y: y,\n width: width,\n height: height,\n margin: padding,\n compact: true,\n data: data\n });\n }\n }, {\n key: \"renderTraveller\",\n value: function renderTraveller(travellerX, id) {\n var _this$props8 = this.props,\n y = _this$props8.y,\n travellerWidth = _this$props8.travellerWidth,\n height = _this$props8.height,\n stroke = _this$props8.stroke;\n var lineY = Math.floor(y + height / 2) - 1;\n var x = Math.max(travellerX, this.props.x);\n return React.createElement(Layer, {\n className: \"recharts-brush-traveller\",\n onMouseEnter: this.handleEnterSlideOrTraveller,\n onMouseLeave: this.handleLeaveSlideOrTraveller,\n onMouseDown: this.travellerDragStartHandlers[id],\n onTouchStart: this.travellerDragStartHandlers[id],\n style: {\n cursor: 'col-resize'\n }\n }, React.createElement(\"rect\", {\n x: x,\n y: y,\n width: travellerWidth,\n height: height,\n fill: stroke,\n stroke: \"none\"\n }), React.createElement(\"line\", {\n x1: x + 1,\n y1: lineY,\n x2: x + travellerWidth - 1,\n y2: lineY,\n fill: \"none\",\n stroke: \"#fff\"\n }), React.createElement(\"line\", {\n x1: x + 1,\n y1: lineY + 2,\n x2: x + travellerWidth - 1,\n y2: lineY + 2,\n fill: \"none\",\n stroke: \"#fff\"\n }));\n }\n }, {\n key: \"renderSlide\",\n value: function renderSlide(startX, endX) {\n var _this$props9 = this.props,\n y = _this$props9.y,\n height = _this$props9.height,\n stroke = _this$props9.stroke;\n return React.createElement(\"rect\", {\n className: \"recharts-brush-slide\",\n onMouseEnter: this.handleEnterSlideOrTraveller,\n onMouseLeave: this.handleLeaveSlideOrTraveller,\n onMouseDown: this.handleSlideDragStart,\n onTouchStart: this.handleSlideDragStart,\n style: {\n cursor: 'move'\n },\n stroke: \"none\",\n fill: stroke,\n fillOpacity: 0.2,\n x: Math.min(startX, endX),\n y: y,\n width: Math.abs(endX - startX),\n height: height\n });\n }\n }, {\n key: \"renderText\",\n value: function renderText() {\n var _this$props10 = this.props,\n startIndex = _this$props10.startIndex,\n endIndex = _this$props10.endIndex,\n y = _this$props10.y,\n height = _this$props10.height,\n travellerWidth = _this$props10.travellerWidth,\n stroke = _this$props10.stroke;\n var _this$state3 = this.state,\n startX = _this$state3.startX,\n endX = _this$state3.endX;\n var offset = 5;\n var attrs = {\n pointerEvents: 'none',\n fill: stroke\n };\n return React.createElement(Layer, {\n className: \"recharts-brush-texts\"\n }, React.createElement(Text, _extends({\n textAnchor: \"end\",\n verticalAnchor: \"middle\",\n x: Math.min(startX, endX) - offset,\n y: y + height / 2\n }, attrs), this.getTextOfTick(startIndex)), React.createElement(Text, _extends({\n textAnchor: \"start\",\n verticalAnchor: \"middle\",\n x: Math.max(startX, endX) + travellerWidth + offset,\n y: y + height / 2\n }, attrs), this.getTextOfTick(endIndex)));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props11 = this.props,\n data = _this$props11.data,\n className = _this$props11.className,\n children = _this$props11.children,\n x = _this$props11.x,\n y = _this$props11.y,\n width = _this$props11.width,\n height = _this$props11.height,\n alwaysShowText = _this$props11.alwaysShowText;\n var _this$state4 = this.state,\n startX = _this$state4.startX,\n endX = _this$state4.endX,\n isTextActive = _this$state4.isTextActive,\n isSlideMoving = _this$state4.isSlideMoving,\n isTravellerMoving = _this$state4.isTravellerMoving;\n\n if (!data || !data.length || !isNumber(x) || !isNumber(y) || !isNumber(width) || !isNumber(height) || width <= 0 || height <= 0) {\n return null;\n }\n\n var layerClass = classNames('recharts-brush', className);\n var isPanoramic = React.Children.count(children) === 1;\n var style = generatePrefixStyle('userSelect', 'none');\n return React.createElement(Layer, {\n className: layerClass,\n onMouseMove: this.handleDrag,\n onMouseLeave: this.handleLeaveWrapper,\n onMouseUp: this.handleDragEnd,\n onTouchEnd: this.handleDragEnd,\n onTouchMove: this.handleTouchMove,\n style: style\n }, this.renderBackground(), isPanoramic && this.renderPanorama(), this.renderSlide(startX, endX), this.renderTraveller(startX, 'startX'), this.renderTraveller(endX, 'endX'), (isTextActive || isSlideMoving || isTravellerMoving || alwaysShowText) && this.renderText());\n }\n }], [{\n key: \"getIndexInRange\",\n value: function getIndexInRange(range, x) {\n var len = range.length;\n var start = 0;\n var end = len - 1;\n\n while (end - start > 1) {\n var middle = Math.floor((start + end) / 2);\n\n if (range[middle] > x) {\n end = middle;\n } else {\n start = middle;\n }\n }\n\n return x >= range[end] ? end : start;\n }\n }]);\n\n return Brush;\n}(PureComponent);\n\nBrush.displayName = 'Brush';\nBrush.propTypes = {\n className: PropTypes.string,\n fill: PropTypes.string,\n stroke: PropTypes.string,\n x: PropTypes.number,\n y: PropTypes.number,\n width: PropTypes.number,\n height: PropTypes.number.isRequired,\n travellerWidth: PropTypes.number,\n gap: PropTypes.number,\n padding: PropTypes.shape({\n top: PropTypes.number,\n right: PropTypes.number,\n bottom: PropTypes.number,\n left: PropTypes.number\n }),\n dataKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.func]),\n data: PropTypes.array,\n startIndex: PropTypes.number,\n endIndex: PropTypes.number,\n tickFormatter: PropTypes.func,\n children: PropTypes.node,\n onChange: PropTypes.func,\n updateId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n leaveTimeOut: PropTypes.number,\n alwaysShowText: PropTypes.bool\n};\nBrush.defaultProps = {\n height: 40,\n travellerWidth: 5,\n gap: 1,\n fill: '#fff',\n stroke: '#666',\n padding: {\n top: 1,\n right: 1,\n bottom: 1,\n left: 1\n },\n leaveTimeOut: 1000,\n alwaysShowText: false\n};\nexport default Brush;","import _isFunction from \"lodash/isFunction\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Reference Line\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Layer from '../container/Layer';\nimport Label from '../component/Label';\nimport { LabeledScaleHelper, rectWithPoints } from '../util/CartesianUtils';\nimport { ifOverflowMatches } from '../util/IfOverflowMatches';\nimport { isNumOrStr } from '../util/DataUtils';\nimport { warn } from '../util/LogUtils';\nimport { PRESENTATION_ATTRIBUTES } from '../util/ReactUtils';\nimport Rectangle from '../shape/Rectangle';\n\nvar ReferenceArea =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ReferenceArea, _PureComponent);\n\n function ReferenceArea() {\n _classCallCheck(this, ReferenceArea);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ReferenceArea).apply(this, arguments));\n }\n\n _createClass(ReferenceArea, [{\n key: \"getRect\",\n value: function getRect(hasX1, hasX2, hasY1, hasY2) {\n var _this$props = this.props,\n xValue1 = _this$props.x1,\n xValue2 = _this$props.x2,\n yValue1 = _this$props.y1,\n yValue2 = _this$props.y2,\n xAxis = _this$props.xAxis,\n yAxis = _this$props.yAxis;\n var scale = LabeledScaleHelper.create({\n x: xAxis.scale,\n y: yAxis.scale\n });\n var p1 = {\n x: hasX1 ? scale.x.apply(xValue1) : scale.x.rangeMin,\n y: hasY1 ? scale.y.apply(yValue1) : scale.y.rangeMin\n };\n var p2 = {\n x: hasX2 ? scale.x.apply(xValue2) : scale.x.rangeMax,\n y: hasY2 ? scale.y.apply(yValue2) : scale.y.rangeMax\n };\n\n if (ifOverflowMatches(this.props, 'discard') && (!scale.isInRange(p1) || !scale.isInRange(p2))) {\n return null;\n }\n\n return rectWithPoints(p1, p2);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n x1 = _this$props2.x1,\n x2 = _this$props2.x2,\n y1 = _this$props2.y1,\n y2 = _this$props2.y2,\n className = _this$props2.className,\n alwaysShow = _this$props2.alwaysShow,\n clipPathId = _this$props2.clipPathId;\n warn(alwaysShow === undefined, 'The alwaysShow prop is deprecated. Please use ifOverflow=\"extendDomain\" instead.');\n var hasX1 = isNumOrStr(x1);\n var hasX2 = isNumOrStr(x2);\n var hasY1 = isNumOrStr(y1);\n var hasY2 = isNumOrStr(y2);\n var shape = this.props.shape;\n\n if (!hasX1 && !hasX2 && !hasY1 && !hasY2 && !shape) {\n return null;\n }\n\n var rect = this.getRect(hasX1, hasX2, hasY1, hasY2);\n\n if (!rect && !shape) {\n return null;\n }\n\n var clipPath = ifOverflowMatches(this.props, 'hidden') ? \"url(#\".concat(clipPathId, \")\") : undefined;\n return React.createElement(Layer, {\n className: classNames('recharts-reference-area', className)\n }, this.constructor.renderRect(shape, _objectSpread({\n clipPath: clipPath\n }, this.props, {}, rect)), Label.renderCallByParent(this.props, rect));\n }\n }], [{\n key: \"renderRect\",\n value: function renderRect(option, props) {\n var rect;\n\n if (React.isValidElement(option)) {\n rect = React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n rect = option(props);\n } else {\n rect = React.createElement(Rectangle, _extends({}, props, {\n className: \"recharts-reference-area-rect\"\n }));\n }\n\n return rect;\n }\n }]);\n\n return ReferenceArea;\n}(PureComponent);\n\nReferenceArea.displayName = 'ReferenceArea';\nReferenceArea.propTypes = _objectSpread({}, PRESENTATION_ATTRIBUTES, {\n viewBox: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number,\n width: PropTypes.number,\n height: PropTypes.number\n }),\n xAxis: PropTypes.object,\n yAxis: PropTypes.object,\n isFront: PropTypes.bool,\n alwaysShow: PropTypes.bool,\n ifOverflow: PropTypes.oneOf(['hidden', 'visible', 'discard', 'extendDomain']),\n x1: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n x2: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n y1: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n y2: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n className: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n yAxisId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n xAxisId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n shape: PropTypes.oneOfType([PropTypes.func, PropTypes.element])\n});\nReferenceArea.defaultProps = {\n isFront: false,\n ifOverflow: 'discard',\n xAxisId: 0,\n yAxisId: 0,\n r: 10,\n fill: '#ccc',\n fillOpacity: 0.5,\n stroke: 'none',\n strokeWidth: 1\n};\nexport default ReferenceArea;","import ReferenceDot from '../cartesian/ReferenceDot';\nimport ReferenceLine from '../cartesian/ReferenceLine';\nimport ReferenceArea from '../cartesian/ReferenceArea';\nimport { ifOverflowMatches } from './IfOverflowMatches';\nimport { findAllByType } from './ReactUtils';\nimport { isNumber } from './DataUtils';\nexport var detectReferenceElementsDomain = function detectReferenceElementsDomain(children, domain, axisId, axisType, specifiedTicks) {\n var lines = findAllByType(children, ReferenceLine);\n var dots = findAllByType(children, ReferenceDot);\n var elements = lines.concat(dots);\n var areas = findAllByType(children, ReferenceArea);\n var idKey = \"\".concat(axisType, \"Id\");\n var valueKey = axisType[0];\n var finalDomain = domain;\n\n if (elements.length) {\n finalDomain = elements.reduce(function (result, el) {\n if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[valueKey])) {\n var value = el.props[valueKey];\n return [Math.min(result[0], value), Math.max(result[1], value)];\n }\n\n return result;\n }, finalDomain);\n }\n\n if (areas.length) {\n var key1 = \"\".concat(valueKey, \"1\");\n var key2 = \"\".concat(valueKey, \"2\");\n finalDomain = areas.reduce(function (result, el) {\n if (el.props[idKey] === axisId && ifOverflowMatches(el.props, 'extendDomain') && isNumber(el.props[key1]) && isNumber(el.props[key2])) {\n var value1 = el.props[key1];\n var value2 = el.props[key2];\n return [Math.min(result[0], value1, value2), Math.max(result[1], value1, value2)];\n }\n\n return result;\n }, finalDomain);\n }\n\n if (specifiedTicks && specifiedTicks.length) {\n finalDomain = specifiedTicks.reduce(function (result, tick) {\n if (isNumber(tick)) {\n return [Math.min(result[0], tick), Math.max(result[1], tick)];\n }\n\n return result;\n }, finalDomain);\n }\n\n return finalDomain;\n};","import EventEmitter from 'events';\nvar eventCenter = new EventEmitter();\n\nif (eventCenter.setMaxListeners) {\n eventCenter.setMaxListeners(10);\n}\n\nexport { eventCenter };\nexport var SYNC_EVENT = 'recharts.syncMouseEvents';","import _every from \"lodash/every\";\nimport _find from \"lodash/find\";\nimport _sortBy from \"lodash/sortBy\";\nimport _isFunction from \"lodash/isFunction\";\nimport _range from \"lodash/range\";\nimport _throttle from \"lodash/throttle\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport React, { Component, cloneElement, isValidElement, createElement } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Surface from '../container/Surface';\nimport Layer from '../container/Layer';\nimport Tooltip from '../component/Tooltip';\nimport Legend from '../component/Legend';\nimport Curve from '../shape/Curve';\nimport Cross from '../shape/Cross';\nimport Sector from '../shape/Sector';\nimport Dot from '../shape/Dot';\nimport Rectangle from '../shape/Rectangle';\nimport { findAllByType, findChildByType, getDisplayName, parseChildIndex, getPresentationAttributes, validateWidthHeight, isChildrenEqual, renderByOrder, getReactEventByType, filterEventAttributes } from '../util/ReactUtils';\nimport CartesianAxis from '../cartesian/CartesianAxis';\nimport Brush from '../cartesian/Brush';\nimport { getOffset, calculateChartCoordinate } from '../util/DOMUtils';\nimport { getAnyElementOfObject, hasDuplicate, uniqueId, isNumber, findEntryInArray } from '../util/DataUtils';\nimport { calculateActiveTickIndex, getMainColorOfGraphicItem, getBarSizeList, getBarPosition, appendOffsetOfLegend, getLegendProps, combineEventHandlers, getTicksOfAxis, getCoordinatesOfGrid, getStackedDataOfItem, parseErrorBarsOfAxis, getBandSizeOfAxis, getStackGroupsByAxisId, getValueByDataKey, isCategorialAxis, getDomainOfItemsWithSameAxis, getDomainOfStackGroups, getDomainOfDataByKey, parseSpecifiedDomain, parseDomainOfCategoryAxis } from '../util/ChartUtils';\nimport { detectReferenceElementsDomain } from '../util/DetectReferenceElementsDomain';\nimport { inRangeOfSector, polarToCartesian } from '../util/PolarUtils';\nimport { shallowEqual } from '../util/ShallowEqual';\nimport { eventCenter, SYNC_EVENT } from '../util/Events';\nvar ORIENT_MAP = {\n xAxis: ['bottom', 'top'],\n yAxis: ['left', 'right']\n};\nvar originCoordinate = {\n x: 0,\n y: 0\n};\n\nvar generateCategoricalChart = function generateCategoricalChart(_ref) {\n var chartName = _ref.chartName,\n GraphicalChild = _ref.GraphicalChild,\n _ref$eventType = _ref.eventType,\n eventType = _ref$eventType === void 0 ? 'axis' : _ref$eventType,\n axisComponents = _ref.axisComponents,\n legendContent = _ref.legendContent,\n formatAxisMap = _ref.formatAxisMap,\n defaultProps = _ref.defaultProps,\n propTypes = _ref.propTypes;\n\n var CategoricalChartWrapper =\n /*#__PURE__*/\n function (_Component) {\n _inherits(CategoricalChartWrapper, _Component);\n\n /**\n * Returns default, reset state for the categorical chart.\n * @param {Object} props Props object to use when creating the default state\n * @return {Object} Whole new state\n */\n function CategoricalChartWrapper(_props) {\n var _this;\n\n _classCallCheck(this, CategoricalChartWrapper);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(CategoricalChartWrapper).call(this, _props));\n\n _this.handleLegendBBoxUpdate = function (box) {\n if (box && _this.legendInstance) {\n var _this$state = _this.state,\n dataStartIndex = _this$state.dataStartIndex,\n dataEndIndex = _this$state.dataEndIndex,\n updateId = _this$state.updateId;\n\n _this.setState(_this.updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n }));\n }\n };\n\n _this.handleReceiveSyncEvent = function (cId, chartId, data) {\n var _this$props = _this.props,\n syncId = _this$props.syncId,\n layout = _this$props.layout;\n var updateId = _this.state.updateId;\n\n if (syncId === cId && chartId !== _this.uniqueChartId) {\n var dataStartIndex = data.dataStartIndex,\n dataEndIndex = data.dataEndIndex;\n\n if (!_isNil(data.dataStartIndex) || !_isNil(data.dataEndIndex)) {\n _this.setState(_objectSpread({\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }, _this.updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId\n })));\n } else if (!_isNil(data.activeTooltipIndex)) {\n var chartX = data.chartX,\n chartY = data.chartY,\n activeTooltipIndex = data.activeTooltipIndex;\n var _this$state2 = _this.state,\n offset = _this$state2.offset,\n tooltipTicks = _this$state2.tooltipTicks;\n\n if (!offset) {\n return;\n }\n\n var viewBox = _objectSpread({}, offset, {\n x: offset.left,\n y: offset.top\n }); // When a categotical chart is combined with another chart, the value of chartX\n // and chartY may beyond the boundaries.\n\n\n var validateChartX = Math.min(chartX, viewBox.x + viewBox.width);\n var validateChartY = Math.min(chartY, viewBox.y + viewBox.height);\n var activeLabel = tooltipTicks[activeTooltipIndex] && tooltipTicks[activeTooltipIndex].value;\n\n var activePayload = _this.getTooltipContent(activeTooltipIndex);\n\n var activeCoordinate = tooltipTicks[activeTooltipIndex] ? {\n x: layout === 'horizontal' ? tooltipTicks[activeTooltipIndex].coordinate : validateChartX,\n y: layout === 'horizontal' ? validateChartY : tooltipTicks[activeTooltipIndex].coordinate\n } : originCoordinate;\n\n _this.setState(_objectSpread({}, data, {\n activeLabel: activeLabel,\n activeCoordinate: activeCoordinate,\n activePayload: activePayload\n }));\n } else {\n _this.setState(data);\n }\n }\n };\n\n _this.handleBrushChange = function (_ref2) {\n var startIndex = _ref2.startIndex,\n endIndex = _ref2.endIndex;\n\n // Only trigger changes if the extents of the brush have actually changed\n if (startIndex !== _this.state.dataStartIndex || endIndex !== _this.state.dataEndIndex) {\n var updateId = _this.state.updateId;\n\n _this.setState(function () {\n return _objectSpread({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n }, _this.updateStateOfAxisMapsOffsetAndStackGroups({\n props: _this.props,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n updateId: updateId\n }));\n });\n\n _this.triggerSyncEvent({\n dataStartIndex: startIndex,\n dataEndIndex: endIndex\n });\n }\n };\n\n _this.handleMouseEnter = function (e) {\n var onMouseEnter = _this.props.onMouseEnter;\n\n var mouse = _this.getMouseInfo(e);\n\n if (mouse) {\n var nextState = _objectSpread({}, mouse, {\n isTooltipActive: true\n });\n\n _this.setState(nextState);\n\n _this.triggerSyncEvent(nextState);\n\n if (_isFunction(onMouseEnter)) {\n onMouseEnter(nextState, e);\n }\n }\n };\n\n _this.triggeredAfterMouseMove = function (e) {\n var onMouseMove = _this.props.onMouseMove;\n\n var mouse = _this.getMouseInfo(e);\n\n var nextState = mouse ? _objectSpread({}, mouse, {\n isTooltipActive: true\n }) : {\n isTooltipActive: false\n };\n\n _this.setState(nextState);\n\n _this.triggerSyncEvent(nextState);\n\n if (_isFunction(onMouseMove)) {\n onMouseMove(nextState, e);\n }\n };\n\n _this.handleItemMouseEnter = function (el) {\n _this.setState(function () {\n return {\n isTooltipActive: true,\n activeItem: el,\n activePayload: el.tooltipPayload,\n activeCoordinate: el.tooltipPosition || {\n x: el.cx,\n y: el.cy\n }\n };\n });\n };\n\n _this.handleItemMouseLeave = function () {\n _this.setState(function () {\n return {\n isTooltipActive: false\n };\n });\n };\n\n _this.handleMouseMove = function (e) {\n if (e && _isFunction(e.persist)) {\n e.persist();\n }\n\n _this.triggeredAfterMouseMove(e);\n };\n\n _this.handleMouseLeave = function (e) {\n var onMouseLeave = _this.props.onMouseLeave;\n var nextState = {\n isTooltipActive: false\n };\n\n _this.setState(nextState);\n\n _this.triggerSyncEvent(nextState);\n\n if (_isFunction(onMouseLeave)) {\n onMouseLeave(nextState, e);\n }\n };\n\n _this.handleOuterEvent = function (e) {\n var eventName = getReactEventByType(e);\n\n if (eventName && _isFunction(_this.props[eventName])) {\n var mouse = _this.getMouseInfo(e);\n\n var handler = _this.props[eventName];\n handler(mouse, e);\n }\n };\n\n _this.handleClick = function (e) {\n var onClick = _this.props.onClick;\n\n if (_isFunction(onClick)) {\n var mouse = _this.getMouseInfo(e);\n\n onClick(mouse, e);\n }\n };\n\n _this.handleMouseDown = function (e) {\n var onMouseDown = _this.props.onMouseDown;\n\n if (_isFunction(onMouseDown)) {\n var mouse = _this.getMouseInfo(e);\n\n onMouseDown(mouse, e);\n }\n };\n\n _this.handleMouseUp = function (e) {\n var onMouseUp = _this.props.onMouseUp;\n\n if (_isFunction(onMouseUp)) {\n var mouse = _this.getMouseInfo(e);\n\n onMouseUp(mouse, e);\n }\n };\n\n _this.handleTouchMove = function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseMove(e.changedTouches[0]);\n }\n };\n\n _this.handleTouchStart = function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseDown(e.changedTouches[0]);\n }\n };\n\n _this.handleTouchEnd = function (e) {\n if (e.changedTouches != null && e.changedTouches.length > 0) {\n _this.handleMouseUp(e.changedTouches[0]);\n }\n };\n\n _this.verticalCoordinatesGenerator = function (_ref3) {\n var xAxis = _ref3.xAxis,\n width = _ref3.width,\n height = _ref3.height,\n offset = _ref3.offset;\n return getCoordinatesOfGrid(CartesianAxis.getTicks(_objectSpread({}, CartesianAxis.defaultProps, {}, xAxis, {\n ticks: getTicksOfAxis(xAxis, true),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n })), offset.left, offset.left + offset.width);\n };\n\n _this.horizontalCoordinatesGenerator = function (_ref4) {\n var yAxis = _ref4.yAxis,\n width = _ref4.width,\n height = _ref4.height,\n offset = _ref4.offset;\n return getCoordinatesOfGrid(CartesianAxis.getTicks(_objectSpread({}, CartesianAxis.defaultProps, {}, yAxis, {\n ticks: getTicksOfAxis(yAxis, true),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n }\n })), offset.top, offset.top + offset.height);\n };\n\n _this.axesTicksGenerator = function (axis) {\n return getTicksOfAxis(axis, true);\n };\n\n _this.tooltipTicksGenerator = function (axisMap) {\n var axis = getAnyElementOfObject(axisMap);\n var tooltipTicks = getTicksOfAxis(axis, false, true);\n return {\n tooltipTicks: tooltipTicks,\n orderedTooltipTicks: _sortBy(tooltipTicks, function (o) {\n return o.coordinate;\n }),\n tooltipAxis: axis,\n tooltipAxisBandSize: getBandSizeOfAxis(axis)\n };\n };\n\n _this.renderCursor = function (element) {\n var _this$state3 = _this.state,\n isTooltipActive = _this$state3.isTooltipActive,\n activeCoordinate = _this$state3.activeCoordinate,\n activePayload = _this$state3.activePayload,\n offset = _this$state3.offset;\n\n if (!element || !element.props.cursor || !isTooltipActive || !activeCoordinate) {\n return null;\n }\n\n var layout = _this.props.layout;\n var restProps;\n var cursorComp = Curve;\n\n if (chartName === 'ScatterChart') {\n restProps = activeCoordinate;\n cursorComp = Cross;\n } else if (chartName === 'BarChart') {\n restProps = _this.getCursorRectangle();\n cursorComp = Rectangle;\n } else if (layout === 'radial') {\n var _this$getCursorPoints = _this.getCursorPoints(),\n cx = _this$getCursorPoints.cx,\n cy = _this$getCursorPoints.cy,\n radius = _this$getCursorPoints.radius,\n startAngle = _this$getCursorPoints.startAngle,\n endAngle = _this$getCursorPoints.endAngle;\n\n restProps = {\n cx: cx,\n cy: cy,\n startAngle: startAngle,\n endAngle: endAngle,\n innerRadius: radius,\n outerRadius: radius\n };\n cursorComp = Sector;\n } else {\n restProps = {\n points: _this.getCursorPoints()\n };\n cursorComp = Curve;\n }\n\n var key = element.key || '_recharts-cursor';\n\n var cursorProps = _objectSpread({\n stroke: '#ccc',\n pointerEvents: 'none'\n }, offset, {}, restProps, {}, getPresentationAttributes(element.props.cursor), {\n payload: activePayload,\n key: key,\n className: 'recharts-tooltip-cursor'\n });\n\n return isValidElement(element.props.cursor) ? cloneElement(element.props.cursor, cursorProps) : createElement(cursorComp, cursorProps);\n };\n\n _this.renderPolarAxis = function (element, displayName, index) {\n var axisType = element.type.axisType;\n\n var axisMap = _this.state[\"\".concat(axisType, \"Map\")];\n\n var axisOption = axisMap[element.props[\"\".concat(axisType, \"Id\")]];\n return cloneElement(element, _objectSpread({}, axisOption, {\n className: axisType,\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n ticks: getTicksOfAxis(axisOption, true)\n }));\n };\n\n _this.renderXAxis = function (element, displayName, index) {\n var xAxisMap = _this.state.xAxisMap;\n var axisObj = xAxisMap[element.props.xAxisId];\n return _this.renderAxis(axisObj, element, displayName, index);\n };\n\n _this.renderYAxis = function (element, displayName, index) {\n var yAxisMap = _this.state.yAxisMap;\n var axisObj = yAxisMap[element.props.yAxisId];\n return _this.renderAxis(axisObj, element, displayName, index);\n };\n\n _this.renderGrid = function (element) {\n var _this$state4 = _this.state,\n xAxisMap = _this$state4.xAxisMap,\n yAxisMap = _this$state4.yAxisMap,\n offset = _this$state4.offset;\n var _this$props2 = _this.props,\n width = _this$props2.width,\n height = _this$props2.height;\n var xAxis = getAnyElementOfObject(xAxisMap);\n\n var yAxisWithFiniteDomain = _find(yAxisMap, function (axis) {\n return _every(axis.domain, Number.isFinite);\n });\n\n var yAxis = yAxisWithFiniteDomain || getAnyElementOfObject(yAxisMap);\n var props = element.props || {};\n return cloneElement(element, {\n key: element.key || 'grid',\n x: isNumber(props.x) ? props.x : offset.left,\n y: isNumber(props.y) ? props.y : offset.top,\n width: isNumber(props.width) ? props.width : offset.width,\n height: isNumber(props.height) ? props.height : offset.height,\n xAxis: xAxis,\n yAxis: yAxis,\n offset: offset,\n chartWidth: width,\n chartHeight: height,\n verticalCoordinatesGenerator: props.verticalCoordinatesGenerator || _this.verticalCoordinatesGenerator,\n horizontalCoordinatesGenerator: props.horizontalCoordinatesGenerator || _this.horizontalCoordinatesGenerator\n });\n };\n\n _this.renderPolarGrid = function (element) {\n var _this$state5 = _this.state,\n radiusAxisMap = _this$state5.radiusAxisMap,\n angleAxisMap = _this$state5.angleAxisMap;\n var radiusAxis = getAnyElementOfObject(radiusAxisMap);\n var angleAxis = getAnyElementOfObject(angleAxisMap);\n var cx = angleAxis.cx,\n cy = angleAxis.cy,\n innerRadius = angleAxis.innerRadius,\n outerRadius = angleAxis.outerRadius;\n return cloneElement(element, {\n polarAngles: getTicksOfAxis(angleAxis, true).map(function (entry) {\n return entry.coordinate;\n }),\n polarRadius: getTicksOfAxis(radiusAxis, true).map(function (entry) {\n return entry.coordinate;\n }),\n cx: cx,\n cy: cy,\n innerRadius: innerRadius,\n outerRadius: outerRadius,\n key: element.key || 'polar-grid'\n });\n };\n\n _this.renderBrush = function (element) {\n var _this$props3 = _this.props,\n margin = _this$props3.margin,\n data = _this$props3.data;\n var _this$state6 = _this.state,\n offset = _this$state6.offset,\n dataStartIndex = _this$state6.dataStartIndex,\n dataEndIndex = _this$state6.dataEndIndex,\n updateId = _this$state6.updateId; // TODO: update brush when children update\n\n return cloneElement(element, {\n key: element.key || '_recharts-brush',\n onChange: combineEventHandlers(_this.handleBrushChange, null, element.props.onChange),\n data: data,\n x: isNumber(element.props.x) ? element.props.x : offset.left,\n y: isNumber(element.props.y) ? element.props.y : offset.top + offset.height + offset.brushBottom - (margin.bottom || 0),\n width: isNumber(element.props.width) ? element.props.width : offset.width,\n startIndex: dataStartIndex,\n endIndex: dataEndIndex,\n updateId: \"brush-\".concat(updateId)\n });\n };\n\n _this.renderReferenceElement = function (element, displayName, index) {\n if (!element) {\n return null;\n }\n\n var _assertThisInitialize = _assertThisInitialized(_this),\n clipPathId = _assertThisInitialize.clipPathId;\n\n var _this$state7 = _this.state,\n xAxisMap = _this$state7.xAxisMap,\n yAxisMap = _this$state7.yAxisMap,\n offset = _this$state7.offset;\n var _element$props = element.props,\n xAxisId = _element$props.xAxisId,\n yAxisId = _element$props.yAxisId;\n return cloneElement(element, {\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n xAxis: xAxisMap[xAxisId],\n yAxis: yAxisMap[yAxisId],\n viewBox: {\n x: offset.left,\n y: offset.top,\n width: offset.width,\n height: offset.height\n },\n clipPathId: clipPathId\n });\n };\n\n _this.renderGraphicChild = function (element, displayName, index) {\n var item = _this.filterFormatItem(element, displayName, index);\n\n if (!item) {\n return null;\n }\n\n var graphicalItem = cloneElement(element, item.props);\n var _this$state8 = _this.state,\n isTooltipActive = _this$state8.isTooltipActive,\n tooltipAxis = _this$state8.tooltipAxis,\n activeTooltipIndex = _this$state8.activeTooltipIndex,\n activeLabel = _this$state8.activeLabel;\n var children = _this.props.children;\n var tooltipItem = findChildByType(children, Tooltip);\n var _item$props = item.props,\n points = _item$props.points,\n isRange = _item$props.isRange,\n baseLine = _item$props.baseLine;\n var _item$item$props = item.item.props,\n activeDot = _item$item$props.activeDot,\n hide = _item$item$props.hide;\n var hasActive = !hide && isTooltipActive && tooltipItem && activeDot && activeTooltipIndex >= 0;\n\n function findWithPayload(entry) {\n return tooltipAxis.dataKey(entry.payload);\n }\n\n if (hasActive) {\n var activePoint, basePoint;\n\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n var specifiedKey = typeof tooltipAxis.dataKey === 'function' ? findWithPayload : 'payload.'.concat(tooltipAxis.dataKey);\n activePoint = findEntryInArray(points, specifiedKey, activeLabel);\n basePoint = isRange && baseLine && findEntryInArray(baseLine, specifiedKey, activeLabel);\n } else {\n activePoint = points[activeTooltipIndex];\n basePoint = isRange && baseLine && baseLine[activeTooltipIndex];\n }\n\n if (!_isNil(activePoint)) {\n return [graphicalItem].concat(_toConsumableArray(_this.renderActivePoints({\n item: item,\n activePoint: activePoint,\n basePoint: basePoint,\n childIndex: activeTooltipIndex,\n isRange: isRange\n })));\n }\n }\n\n if (isRange) {\n return [graphicalItem, null, null];\n }\n\n return [graphicalItem, null];\n };\n\n _this.renderCustomized = function (element) {\n return cloneElement(element, _objectSpread({}, _this.props, {}, _this.state));\n };\n\n var defaultState = _this.constructor.createDefaultState(_props);\n\n var _updateId = 0;\n _this.state = _objectSpread({}, defaultState, {\n updateId: 0\n }, _this.updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread({\n props: _props\n }, defaultState, {\n updateId: _updateId\n })));\n _this.uniqueChartId = _isNil(_props.id) ? uniqueId('recharts') : _props.id;\n _this.clipPathId = \"\".concat(_this.uniqueChartId, \"-clip\");\n\n if (_props.throttleDelay) {\n _this.triggeredAfterMouseMove = _throttle(_this.triggeredAfterMouseMove, _props.throttleDelay);\n }\n\n return _this;\n }\n /* eslint-disable react/no-did-mount-set-state */\n\n\n _createClass(CategoricalChartWrapper, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!_isNil(this.props.syncId)) {\n this.addListener();\n }\n } // eslint-disable-next-line camelcase\n\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps) {\n var _this2 = this;\n\n var _this$props4 = this.props,\n data = _this$props4.data,\n children = _this$props4.children,\n width = _this$props4.width,\n height = _this$props4.height,\n layout = _this$props4.layout,\n stackOffset = _this$props4.stackOffset,\n margin = _this$props4.margin;\n var updateId = this.state.updateId;\n\n if (nextProps.data !== data || nextProps.width !== width || nextProps.height !== height || nextProps.layout !== layout || nextProps.stackOffset !== stackOffset || !shallowEqual(nextProps.margin, margin)) {\n var defaultState = this.constructor.createDefaultState(nextProps);\n this.setState(_objectSpread({}, defaultState, {\n updateId: updateId + 1\n }, this.updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread({\n props: nextProps\n }, defaultState, {\n updateId: updateId + 1\n }))));\n } else if (!isChildrenEqual(nextProps.children, children)) {\n // update configuration in chilren\n var hasGlobalData = !_isNil(nextProps.data);\n var newUpdateId = hasGlobalData ? updateId : updateId + 1;\n this.setState(function (prevState) {\n return _objectSpread({\n updateId: newUpdateId\n }, _this2.updateStateOfAxisMapsOffsetAndStackGroups(_objectSpread({\n props: nextProps\n }, prevState, {\n updateId: newUpdateId\n })));\n });\n } // add syncId\n\n\n if (_isNil(this.props.syncId) && !_isNil(nextProps.syncId)) {\n this.addListener();\n } // remove syncId\n\n\n if (!_isNil(this.props.syncId) && _isNil(nextProps.syncId)) {\n this.removeListener();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (!_isNil(this.props.syncId)) {\n this.removeListener();\n }\n\n if (typeof this.triggeredAfterMouseMove.cancel === 'function') {\n this.triggeredAfterMouseMove.cancel();\n }\n }\n /**\n * Get the configuration of all x-axis or y-axis\n * @param {Object} props Latest props\n * @param {String} axisType The type of axis\n * @param {Array} graphicalItems The instances of item\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\n\n }, {\n key: \"getAxisMap\",\n value: function getAxisMap(props, _ref5) {\n var _ref5$axisType = _ref5.axisType,\n axisType = _ref5$axisType === void 0 ? 'xAxis' : _ref5$axisType,\n AxisComp = _ref5.AxisComp,\n graphicalItems = _ref5.graphicalItems,\n stackGroups = _ref5.stackGroups,\n dataStartIndex = _ref5.dataStartIndex,\n dataEndIndex = _ref5.dataEndIndex;\n var children = props.children;\n var axisIdKey = \"\".concat(axisType, \"Id\"); // Get all the instance of Axis\n\n var axes = findAllByType(children, AxisComp);\n var axisMap = {};\n\n if (axes && axes.length) {\n axisMap = this.getAxisMapByAxes(props, {\n axes: axes,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n } else if (graphicalItems && graphicalItems.length) {\n axisMap = this.getAxisMapByItems(props, {\n Axis: AxisComp,\n graphicalItems: graphicalItems,\n axisType: axisType,\n axisIdKey: axisIdKey,\n stackGroups: stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n }\n\n return axisMap;\n }\n /**\n * Get the configuration of axis by the options of axis instance\n * @param {Object} props Latest props\n * @param {Array} axes The instance of axes\n * @param {Array} graphicalItems The instances of item\n * @param {String} axisType The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param {String} axisIdKey The unique id of an axis\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\n\n }, {\n key: \"getAxisMapByAxes\",\n value: function getAxisMapByAxes(props, _ref6) {\n var _this3 = this;\n\n var axes = _ref6.axes,\n graphicalItems = _ref6.graphicalItems,\n axisType = _ref6.axisType,\n axisIdKey = _ref6.axisIdKey,\n stackGroups = _ref6.stackGroups,\n dataStartIndex = _ref6.dataStartIndex,\n dataEndIndex = _ref6.dataEndIndex;\n var layout = props.layout,\n children = props.children,\n stackOffset = props.stackOffset;\n var isCategorial = isCategorialAxis(layout, axisType); // Eliminate duplicated axes\n\n var axisMap = axes.reduce(function (result, child) {\n var _child$props = child.props,\n type = _child$props.type,\n dataKey = _child$props.dataKey,\n allowDataOverflow = _child$props.allowDataOverflow,\n allowDuplicatedCategory = _child$props.allowDuplicatedCategory,\n scale = _child$props.scale,\n ticks = _child$props.ticks;\n var axisId = child.props[axisIdKey];\n\n var displayedData = _this3.constructor.getDisplayedData(props, {\n graphicalItems: graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId;\n }),\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n\n var len = displayedData.length;\n\n if (!result[axisId]) {\n var domain, duplicateDomain, categoricalDomain;\n\n if (dataKey) {\n domain = getDomainOfDataByKey(displayedData, dataKey, type);\n\n if (type === 'category' && isCategorial) {\n var duplicate = hasDuplicate(domain);\n\n if (allowDuplicatedCategory && duplicate) {\n duplicateDomain = domain; // When category axis has duplicated text, serial numbers are used to generate scale\n\n domain = _range(0, len);\n } else if (!allowDuplicatedCategory) {\n // remove duplicated category\n domain = parseDomainOfCategoryAxis(child.props.domain, domain, child).reduce(function (finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n }, []);\n }\n } else if (type === 'category') {\n if (!allowDuplicatedCategory) {\n domain = parseDomainOfCategoryAxis(child.props.domain, domain, child).reduce(function (finalDomain, entry) {\n return finalDomain.indexOf(entry) >= 0 || entry === '' || _isNil(entry) ? finalDomain : [].concat(_toConsumableArray(finalDomain), [entry]);\n }, []);\n } else {\n // eliminate undefined or null or empty string\n domain = domain.filter(function (entry) {\n return entry !== '' && !_isNil(entry);\n });\n }\n } else if (type === 'number') {\n var errorBarsDomain = parseErrorBarsOfAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && !item.props.hide;\n }), dataKey, axisType);\n\n if (errorBarsDomain) {\n domain = errorBarsDomain;\n }\n }\n\n if (isCategorial && (type === 'number' || scale !== 'auto')) {\n categoricalDomain = getDomainOfDataByKey(displayedData, dataKey, 'category');\n }\n } else if (isCategorial) {\n domain = _range(0, len);\n } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack && type === 'number') {\n // when stackOffset is 'expand', the domain may be calculated as [0, 1.000000000002]\n domain = stackOffset === 'expand' ? [0, 1] : getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n } else {\n domain = getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && !item.props.hide;\n }), type, true);\n }\n\n if (type === 'number') {\n // To detect wether there is any reference lines whose props alwaysShow is true\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType, ticks);\n\n if (child.props.domain) {\n domain = parseSpecifiedDomain(child.props.domain, domain, allowDataOverflow);\n }\n }\n\n return _objectSpread({}, result, _defineProperty({}, axisId, _objectSpread({}, child.props, {\n axisType: axisType,\n domain: domain,\n categoricalDomain: categoricalDomain,\n duplicateDomain: duplicateDomain,\n originalDomain: child.props.domain,\n isCategorial: isCategorial,\n layout: layout\n })));\n }\n\n return result;\n }, {});\n return axisMap;\n }\n /**\n * Get the configuration of axis by the options of item,\n * this kind of axis does not display in chart\n * @param {Object} props Latest props\n * @param {Array} graphicalItems The instances of item\n * @param {ReactElement} Axis Axis Component\n * @param {String} axisType The type of axis, xAxis - x-axis, yAxis - y-axis\n * @param {String} axisIdKey The unique id of an axis\n * @param {Object} stackGroups The items grouped by axisId and stackId\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @return {Object} Configuration\n */\n\n }, {\n key: \"getAxisMapByItems\",\n value: function getAxisMapByItems(props, _ref7) {\n var graphicalItems = _ref7.graphicalItems,\n Axis = _ref7.Axis,\n axisType = _ref7.axisType,\n axisIdKey = _ref7.axisIdKey,\n stackGroups = _ref7.stackGroups,\n dataStartIndex = _ref7.dataStartIndex,\n dataEndIndex = _ref7.dataEndIndex;\n var layout = props.layout,\n children = props.children;\n var displayedData = this.constructor.getDisplayedData(props, {\n graphicalItems: graphicalItems,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n });\n var len = displayedData.length;\n var isCategorial = isCategorialAxis(layout, axisType);\n var index = -1; // The default type of x-axis is category axis,\n // The default contents of x-axis is the serial numbers of data\n // The default type of y-axis is number axis\n // The default contents of y-axis is the domain of data\n\n var axisMap = graphicalItems.reduce(function (result, child) {\n var axisId = child.props[axisIdKey];\n\n if (!result[axisId]) {\n index++;\n var domain;\n\n if (isCategorial) {\n domain = _range(0, len);\n } else if (stackGroups && stackGroups[axisId] && stackGroups[axisId].hasStack) {\n domain = getDomainOfStackGroups(stackGroups[axisId].stackGroups, dataStartIndex, dataEndIndex);\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n } else {\n domain = parseSpecifiedDomain(Axis.defaultProps.domain, getDomainOfItemsWithSameAxis(displayedData, graphicalItems.filter(function (item) {\n return item.props[axisIdKey] === axisId && !item.props.hide;\n }), 'number'), Axis.defaultProps.allowDataOverflow);\n domain = detectReferenceElementsDomain(children, domain, axisId, axisType);\n }\n\n return _objectSpread({}, result, _defineProperty({}, axisId, _objectSpread({\n axisType: axisType\n }, Axis.defaultProps, {\n hide: true,\n orientation: ORIENT_MAP[axisType] && ORIENT_MAP[axisType][index % 2],\n domain: domain,\n originalDomain: Axis.defaultProps.domain,\n isCategorial: isCategorial,\n layout: layout // specify scale when no Axis\n // scale: isCategorial ? 'band' : 'linear',\n\n })));\n }\n\n return result;\n }, {});\n return axisMap;\n }\n }, {\n key: \"getActiveCoordinate\",\n value: function getActiveCoordinate(tooltipTicks, activeIndex, rangeObj) {\n var layout = this.props.layout;\n var entry = tooltipTicks.find(function (tick) {\n return tick && tick.index === activeIndex;\n });\n\n if (entry) {\n if (layout === 'horizontal') {\n return {\n x: entry.coordinate,\n y: rangeObj.y\n };\n }\n\n if (layout === 'vertical') {\n return {\n x: rangeObj.x,\n y: entry.coordinate\n };\n }\n\n if (layout === 'centric') {\n var _angle = entry.coordinate;\n var _radius = rangeObj.radius;\n return _objectSpread({}, rangeObj, {}, polarToCartesian(rangeObj.cx, rangeObj.cy, _radius, _angle), {\n angle: _angle,\n radius: _radius\n });\n }\n\n var radius = entry.coordinate;\n var angle = rangeObj.angle;\n return _objectSpread({}, rangeObj, {}, polarToCartesian(rangeObj.cx, rangeObj.cy, radius, angle), {\n angle: angle,\n radius: radius\n });\n }\n\n return originCoordinate;\n }\n /**\n * Get the information of mouse in chart, return null when the mouse is not in the chart\n * @param {Object} event The event object\n * @return {Object} Mouse data\n */\n\n }, {\n key: \"getMouseInfo\",\n value: function getMouseInfo(event) {\n if (!this.container) {\n return null;\n }\n\n var containerOffset = getOffset(this.container);\n var e = calculateChartCoordinate(event, containerOffset);\n var rangeObj = this.inRange(e.chartX, e.chartY);\n\n if (!rangeObj) {\n return null;\n }\n\n var _this$state9 = this.state,\n xAxisMap = _this$state9.xAxisMap,\n yAxisMap = _this$state9.yAxisMap;\n\n if (eventType !== 'axis' && xAxisMap && yAxisMap) {\n var xScale = getAnyElementOfObject(xAxisMap).scale;\n var yScale = getAnyElementOfObject(yAxisMap).scale;\n var xValue = xScale && xScale.invert ? xScale.invert(e.chartX) : null;\n var yValue = yScale && yScale.invert ? yScale.invert(e.chartY) : null;\n return _objectSpread({}, e, {\n xValue: xValue,\n yValue: yValue\n });\n }\n\n var _this$state10 = this.state,\n ticks = _this$state10.orderedTooltipTicks,\n axis = _this$state10.tooltipAxis,\n tooltipTicks = _this$state10.tooltipTicks;\n var pos = this.calculateTooltipPos(rangeObj);\n var activeIndex = calculateActiveTickIndex(pos, ticks, tooltipTicks, axis);\n\n if (activeIndex >= 0 && tooltipTicks) {\n var activeLabel = tooltipTicks[activeIndex] && tooltipTicks[activeIndex].value;\n var activePayload = this.getTooltipContent(activeIndex, activeLabel);\n var activeCoordinate = this.getActiveCoordinate(ticks, activeIndex, rangeObj);\n return _objectSpread({}, e, {\n activeTooltipIndex: activeIndex,\n activeLabel: activeLabel,\n activePayload: activePayload,\n activeCoordinate: activeCoordinate\n });\n }\n\n return null;\n }\n /**\n * Get the content to be displayed in the tooltip\n * @param {Number} activeIndex Active index of data\n * @param {String} activeLabel Active label of data\n * @return {Array} The content of tooltip\n */\n\n }, {\n key: \"getTooltipContent\",\n value: function getTooltipContent(activeIndex, activeLabel) {\n var _this$state11 = this.state,\n graphicalItems = _this$state11.graphicalItems,\n tooltipAxis = _this$state11.tooltipAxis;\n var displayedData = this.constructor.getDisplayedData(this.props, this.state);\n\n if (activeIndex < 0 || !graphicalItems || !graphicalItems.length || activeIndex >= displayedData.length) {\n return null;\n } // get data by activeIndex when the axis don't allow duplicated category\n\n\n return graphicalItems.reduce(function (result, child) {\n var hide = child.props.hide;\n\n if (hide) {\n return result;\n }\n\n var _child$props2 = child.props,\n dataKey = _child$props2.dataKey,\n name = _child$props2.name,\n unit = _child$props2.unit,\n formatter = _child$props2.formatter,\n data = _child$props2.data,\n tooltipType = _child$props2.tooltipType;\n var payload;\n\n if (tooltipAxis.dataKey && !tooltipAxis.allowDuplicatedCategory) {\n // graphic child has data props\n payload = findEntryInArray(data || displayedData, tooltipAxis.dataKey, activeLabel);\n } else {\n payload = data && data[activeIndex] || displayedData[activeIndex];\n }\n\n if (!payload) {\n return result;\n }\n\n return [].concat(_toConsumableArray(result), [_objectSpread({}, getPresentationAttributes(child), {\n dataKey: dataKey,\n unit: unit,\n formatter: formatter,\n name: name || dataKey,\n color: getMainColorOfGraphicItem(child),\n value: getValueByDataKey(payload, dataKey),\n type: tooltipType,\n payload: payload\n })]);\n }, []);\n }\n }, {\n key: \"getFormatItems\",\n value: function getFormatItems(props, currentState) {\n var _this4 = this;\n\n var graphicalItems = currentState.graphicalItems,\n stackGroups = currentState.stackGroups,\n offset = currentState.offset,\n updateId = currentState.updateId,\n dataStartIndex = currentState.dataStartIndex,\n dataEndIndex = currentState.dataEndIndex;\n var barSize = props.barSize,\n layout = props.layout,\n barGap = props.barGap,\n barCategoryGap = props.barCategoryGap,\n globalMaxBarSize = props.maxBarSize;\n\n var _this$constructor$get = this.constructor.getAxisNameByLayout(layout),\n numericAxisName = _this$constructor$get.numericAxisName,\n cateAxisName = _this$constructor$get.cateAxisName;\n\n var hasBar = this.constructor.hasBar(graphicalItems);\n var sizeList = hasBar && getBarSizeList({\n barSize: barSize,\n stackGroups: stackGroups\n });\n var formatedItems = [];\n graphicalItems.forEach(function (item, index) {\n var displayedData = _this4.constructor.getDisplayedData(props, {\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }, item);\n\n var _item$props2 = item.props,\n dataKey = _item$props2.dataKey,\n childMaxBarSize = _item$props2.maxBarSize;\n var numericAxisId = item.props[\"\".concat(numericAxisName, \"Id\")];\n var cateAxisId = item.props[\"\".concat(cateAxisName, \"Id\")];\n var axisObj = axisComponents.reduce(function (result, entry) {\n var _objectSpread4;\n\n var axisMap = currentState[\"\".concat(entry.axisType, \"Map\")];\n var id = item.props[\"\".concat(entry.axisType, \"Id\")];\n var axis = axisMap && axisMap[id];\n return _objectSpread({}, result, (_objectSpread4 = {}, _defineProperty(_objectSpread4, entry.axisType, axis), _defineProperty(_objectSpread4, \"\".concat(entry.axisType, \"Ticks\"), getTicksOfAxis(axis)), _objectSpread4));\n }, {});\n var cateAxis = axisObj[cateAxisName];\n var cateTicks = axisObj[\"\".concat(cateAxisName, \"Ticks\")];\n var stackedData = stackGroups && stackGroups[numericAxisId] && stackGroups[numericAxisId].hasStack && getStackedDataOfItem(item, stackGroups[numericAxisId].stackGroups);\n var bandSize = getBandSizeOfAxis(cateAxis, cateTicks);\n var maxBarSize = _isNil(childMaxBarSize) ? globalMaxBarSize : childMaxBarSize;\n var barPosition = hasBar && getBarPosition({\n barGap: barGap,\n barCategoryGap: barCategoryGap,\n bandSize: bandSize,\n sizeList: sizeList[cateAxisId],\n maxBarSize: maxBarSize\n });\n var componsedFn = item && item.type && item.type.getComposedData;\n\n if (componsedFn) {\n var _objectSpread5;\n\n formatedItems.push({\n props: _objectSpread({}, componsedFn(_objectSpread({}, axisObj, {\n displayedData: displayedData,\n props: props,\n dataKey: dataKey,\n item: item,\n bandSize: bandSize,\n barPosition: barPosition,\n offset: offset,\n stackedData: stackedData,\n layout: layout,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n onItemMouseLeave: combineEventHandlers(_this4.handleItemMouseLeave, null, item.props.onMouseLeave),\n onItemMouseEnter: combineEventHandlers(_this4.handleItemMouseEnter, null, item.props.onMouseEnter)\n })), (_objectSpread5 = {\n key: item.key || \"item-\".concat(index)\n }, _defineProperty(_objectSpread5, numericAxisName, axisObj[numericAxisName]), _defineProperty(_objectSpread5, cateAxisName, axisObj[cateAxisName]), _defineProperty(_objectSpread5, \"animationId\", updateId), _objectSpread5)),\n childIndex: parseChildIndex(item, props.children),\n item: item\n });\n }\n });\n return formatedItems;\n }\n }, {\n key: \"getCursorRectangle\",\n value: function getCursorRectangle() {\n var layout = this.props.layout;\n var _this$state12 = this.state,\n activeCoordinate = _this$state12.activeCoordinate,\n offset = _this$state12.offset,\n tooltipAxisBandSize = _this$state12.tooltipAxisBandSize;\n var halfSize = tooltipAxisBandSize / 2;\n return {\n stroke: 'none',\n fill: '#ccc',\n x: layout === 'horizontal' ? activeCoordinate.x - halfSize : offset.left + 0.5,\n y: layout === 'horizontal' ? offset.top + 0.5 : activeCoordinate.y - halfSize,\n width: layout === 'horizontal' ? tooltipAxisBandSize : offset.width - 1,\n height: layout === 'horizontal' ? offset.height - 1 : tooltipAxisBandSize\n };\n }\n }, {\n key: \"getCursorPoints\",\n value: function getCursorPoints() {\n var layout = this.props.layout;\n var _this$state13 = this.state,\n activeCoordinate = _this$state13.activeCoordinate,\n offset = _this$state13.offset;\n var x1, y1, x2, y2;\n\n if (layout === 'horizontal') {\n x1 = activeCoordinate.x;\n x2 = x1;\n y1 = offset.top;\n y2 = offset.top + offset.height;\n } else if (layout === 'vertical') {\n y1 = activeCoordinate.y;\n y2 = y1;\n x1 = offset.left;\n x2 = offset.left + offset.width;\n } else if (!_isNil(activeCoordinate.cx) || !_isNil(activeCoordinate.cy)) {\n if (layout === 'centric') {\n var cx = activeCoordinate.cx,\n cy = activeCoordinate.cy,\n innerRadius = activeCoordinate.innerRadius,\n outerRadius = activeCoordinate.outerRadius,\n angle = activeCoordinate.angle;\n var innerPoint = polarToCartesian(cx, cy, innerRadius, angle);\n var outerPoint = polarToCartesian(cx, cy, outerRadius, angle);\n x1 = innerPoint.x;\n y1 = innerPoint.y;\n x2 = outerPoint.x;\n y2 = outerPoint.y;\n } else {\n var _cx = activeCoordinate.cx,\n _cy = activeCoordinate.cy,\n radius = activeCoordinate.radius,\n startAngle = activeCoordinate.startAngle,\n endAngle = activeCoordinate.endAngle;\n var startPoint = polarToCartesian(_cx, _cy, radius, startAngle);\n var endPoint = polarToCartesian(_cx, _cy, radius, endAngle);\n return {\n points: [startPoint, endPoint],\n cx: _cx,\n cy: _cy,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle\n };\n }\n }\n\n return [{\n x: x1,\n y: y1\n }, {\n x: x2,\n y: y2\n }];\n }\n }, {\n key: \"calculateTooltipPos\",\n value: function calculateTooltipPos(rangeObj) {\n var layout = this.props.layout;\n\n if (layout === 'horizontal') {\n return rangeObj.x;\n }\n\n if (layout === 'vertical') {\n return rangeObj.y;\n }\n\n if (layout === 'centric') {\n return rangeObj.angle;\n }\n\n return rangeObj.radius;\n }\n }, {\n key: \"inRange\",\n value: function inRange(x, y) {\n var layout = this.props.layout;\n\n if (layout === 'horizontal' || layout === 'vertical') {\n var offset = this.state.offset;\n var isInRange = x >= offset.left && x <= offset.left + offset.width && y >= offset.top && y <= offset.top + offset.height;\n return isInRange ? {\n x: x,\n y: y\n } : null;\n }\n\n var _this$state14 = this.state,\n angleAxisMap = _this$state14.angleAxisMap,\n radiusAxisMap = _this$state14.radiusAxisMap;\n\n if (angleAxisMap && radiusAxisMap) {\n var angleAxis = getAnyElementOfObject(angleAxisMap);\n return inRangeOfSector({\n x: x,\n y: y\n }, angleAxis);\n }\n\n return null;\n }\n }, {\n key: \"parseEventsOfWrapper\",\n value: function parseEventsOfWrapper() {\n var children = this.props.children;\n var tooltipItem = findChildByType(children, Tooltip);\n var tooltipEvents = tooltipItem && eventType === 'axis' ? {\n onMouseEnter: this.handleMouseEnter,\n onMouseMove: this.handleMouseMove,\n onMouseLeave: this.handleMouseLeave,\n onTouchMove: this.handleTouchMove,\n onTouchStart: this.handleTouchStart,\n onTouchEnd: this.handleTouchEnd\n } : {};\n var outerEvents = filterEventAttributes(this.props, this.handleOuterEvent);\n return _objectSpread({}, outerEvents, {}, tooltipEvents);\n }\n /**\n * The AxisMaps are expensive to render on large data sets\n * so provide the ability to store them in state and only update them when necessary\n * they are dependent upon the start and end index of\n * the brush so it's important that this method is called _after_\n * the state is updated with any new start/end indices\n *\n * @param {Object} props The props object to be used for updating the axismaps\n * @param {Number} dataStartIndex The start index of the data series when a brush is applied\n * @param {Number} dataEndIndex The end index of the data series when a brush is applied\n * @param {Number} updateId The update id\n * @return {Object} state New state to set\n */\n\n }, {\n key: \"updateStateOfAxisMapsOffsetAndStackGroups\",\n value: function updateStateOfAxisMapsOffsetAndStackGroups(_ref8) {\n var _this5 = this;\n\n var props = _ref8.props,\n dataStartIndex = _ref8.dataStartIndex,\n dataEndIndex = _ref8.dataEndIndex,\n updateId = _ref8.updateId;\n\n if (!validateWidthHeight({\n props: props\n })) {\n return null;\n }\n\n var children = props.children,\n layout = props.layout,\n stackOffset = props.stackOffset,\n data = props.data,\n reverseStackOrder = props.reverseStackOrder;\n\n var _this$constructor$get2 = this.constructor.getAxisNameByLayout(layout),\n numericAxisName = _this$constructor$get2.numericAxisName,\n cateAxisName = _this$constructor$get2.cateAxisName;\n\n var graphicalItems = findAllByType(children, GraphicalChild);\n var stackGroups = getStackGroupsByAxisId(data, graphicalItems, \"\".concat(numericAxisName, \"Id\"), \"\".concat(cateAxisName, \"Id\"), stackOffset, reverseStackOrder);\n var axisObj = axisComponents.reduce(function (result, entry) {\n var name = \"\".concat(entry.axisType, \"Map\");\n return _objectSpread({}, result, _defineProperty({}, name, _this5.getAxisMap(props, _objectSpread({}, entry, {\n graphicalItems: graphicalItems,\n stackGroups: entry.axisType === numericAxisName && stackGroups,\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex\n }))));\n }, {});\n var offset = this.calculateOffset(_objectSpread({}, axisObj, {\n props: props,\n graphicalItems: graphicalItems\n }));\n Object.keys(axisObj).forEach(function (key) {\n axisObj[key] = formatAxisMap(props, axisObj[key], offset, key.replace('Map', ''), chartName);\n });\n var cateAxisMap = axisObj[\"\".concat(cateAxisName, \"Map\")];\n var ticksObj = this.tooltipTicksGenerator(cateAxisMap);\n var formatedGraphicalItems = this.getFormatItems(props, _objectSpread({}, axisObj, {\n dataStartIndex: dataStartIndex,\n dataEndIndex: dataEndIndex,\n updateId: updateId,\n graphicalItems: graphicalItems,\n stackGroups: stackGroups,\n offset: offset\n }));\n return _objectSpread({\n formatedGraphicalItems: formatedGraphicalItems,\n graphicalItems: graphicalItems,\n offset: offset,\n stackGroups: stackGroups\n }, ticksObj, {}, axisObj);\n }\n /* eslint-disable no-underscore-dangle */\n\n }, {\n key: \"addListener\",\n value: function addListener() {\n eventCenter.on(SYNC_EVENT, this.handleReceiveSyncEvent);\n\n if (eventCenter.setMaxListeners && eventCenter._maxListeners) {\n eventCenter.setMaxListeners(eventCenter._maxListeners + 1);\n }\n }\n }, {\n key: \"removeListener\",\n value: function removeListener() {\n eventCenter.removeListener(SYNC_EVENT, this.handleReceiveSyncEvent);\n\n if (eventCenter.setMaxListeners && eventCenter._maxListeners) {\n eventCenter.setMaxListeners(eventCenter._maxListeners - 1);\n }\n }\n /**\n * Calculate the offset of main part in the svg element\n * @param {Object} props Latest props\n * @param {Array} graphicalItems The instances of item\n * @param {Object} xAxisMap The configuration of x-axis\n * @param {Object} yAxisMap The configuration of y-axis\n * @return {Object} The offset of main part in the svg element\n */\n\n }, {\n key: \"calculateOffset\",\n value: function calculateOffset(_ref9) {\n var props = _ref9.props,\n graphicalItems = _ref9.graphicalItems,\n _ref9$xAxisMap = _ref9.xAxisMap,\n xAxisMap = _ref9$xAxisMap === void 0 ? {} : _ref9$xAxisMap,\n _ref9$yAxisMap = _ref9.yAxisMap,\n yAxisMap = _ref9$yAxisMap === void 0 ? {} : _ref9$yAxisMap;\n var width = props.width,\n height = props.height,\n children = props.children;\n var margin = props.margin || {};\n var brushItem = findChildByType(children, Brush);\n var legendItem = findChildByType(children, Legend);\n var offsetH = Object.keys(yAxisMap).reduce(function (result, id) {\n var entry = yAxisMap[id];\n var orientation = entry.orientation;\n\n if (!entry.mirror && !entry.hide) {\n return _objectSpread({}, result, _defineProperty({}, orientation, result[orientation] + entry.width));\n }\n\n return result;\n }, {\n left: margin.left || 0,\n right: margin.right || 0\n });\n var offsetV = Object.keys(xAxisMap).reduce(function (result, id) {\n var entry = xAxisMap[id];\n var orientation = entry.orientation;\n\n if (!entry.mirror && !entry.hide) {\n return _objectSpread({}, result, _defineProperty({}, orientation, result[orientation] + entry.height));\n }\n\n return result;\n }, {\n top: margin.top || 0,\n bottom: margin.bottom || 0\n });\n\n var offset = _objectSpread({}, offsetV, {}, offsetH);\n\n var brushBottom = offset.bottom;\n\n if (brushItem) {\n offset.bottom += brushItem.props.height || Brush.defaultProps.height;\n }\n\n if (legendItem && this.legendInstance) {\n var legendBox = this.legendInstance.getBBox();\n offset = appendOffsetOfLegend(offset, graphicalItems, props, legendBox);\n }\n\n return _objectSpread({\n brushBottom: brushBottom\n }, offset, {\n width: width - offset.left - offset.right,\n height: height - offset.top - offset.bottom\n });\n }\n }, {\n key: \"triggerSyncEvent\",\n value: function triggerSyncEvent(data) {\n var syncId = this.props.syncId;\n\n if (!_isNil(syncId)) {\n eventCenter.emit(SYNC_EVENT, syncId, this.uniqueChartId, data);\n }\n }\n }, {\n key: \"filterFormatItem\",\n value: function filterFormatItem(item, displayName, childIndex) {\n var formatedGraphicalItems = this.state.formatedGraphicalItems;\n\n for (var i = 0, len = formatedGraphicalItems.length; i < len; i++) {\n var entry = formatedGraphicalItems[i];\n\n if (entry.item === item || entry.props.key === item.key || displayName === getDisplayName(entry.item.type) && childIndex === entry.childIndex) {\n return entry;\n }\n }\n\n return null;\n }\n }, {\n key: \"renderAxis\",\n\n /**\n * Draw axis\n * @param {Object} axisOptions The options of axis\n * @param {Object} element The axis element\n * @param {String} displayName The display name of axis\n * @param {Number} index The index of element\n * @return {ReactElement} The instance of x-axes\n */\n value: function renderAxis(axisOptions, element, displayName, index) {\n var _this$props5 = this.props,\n width = _this$props5.width,\n height = _this$props5.height;\n return React.createElement(CartesianAxis, _extends({}, axisOptions, {\n className: \"recharts-\".concat(axisOptions.axisType, \" \").concat(axisOptions.axisType),\n key: element.key || \"\".concat(displayName, \"-\").concat(index),\n viewBox: {\n x: 0,\n y: 0,\n width: width,\n height: height\n },\n ticksGenerator: this.axesTicksGenerator\n }));\n }\n /**\n * Draw grid\n * @param {ReactElement} element the grid item\n * @return {ReactElement} The instance of grid\n */\n\n }, {\n key: \"renderLegend\",\n\n /**\n * Draw legend\n * @return {ReactElement} The instance of Legend\n */\n value: function renderLegend() {\n var _this6 = this;\n\n var formatedGraphicalItems = this.state.formatedGraphicalItems;\n var _this$props6 = this.props,\n children = _this$props6.children,\n width = _this$props6.width,\n height = _this$props6.height;\n var margin = this.props.margin || {};\n var legendWidth = width - (margin.left || 0) - (margin.right || 0);\n var legendHeight = height - (margin.top || 0) - (margin.bottom || 0);\n var props = getLegendProps({\n children: children,\n formatedGraphicalItems: formatedGraphicalItems,\n legendWidth: legendWidth,\n legendHeight: legendHeight,\n legendContent: legendContent\n });\n\n if (!props) {\n return null;\n }\n\n var item = props.item,\n otherProps = _objectWithoutProperties(props, [\"item\"]);\n\n return cloneElement(item, _objectSpread({}, otherProps, {\n chartWidth: width,\n chartHeight: height,\n margin: margin,\n ref: function ref(legend) {\n _this6.legendInstance = legend;\n },\n onBBoxUpdate: this.handleLegendBBoxUpdate\n }));\n }\n /**\n * Draw Tooltip\n * @return {ReactElement} The instance of Tooltip\n */\n\n }, {\n key: \"renderTooltip\",\n value: function renderTooltip() {\n var children = this.props.children;\n var tooltipItem = findChildByType(children, Tooltip);\n\n if (!tooltipItem) {\n return null;\n }\n\n var _this$state15 = this.state,\n isTooltipActive = _this$state15.isTooltipActive,\n activeCoordinate = _this$state15.activeCoordinate,\n activePayload = _this$state15.activePayload,\n activeLabel = _this$state15.activeLabel,\n offset = _this$state15.offset;\n return cloneElement(tooltipItem, {\n viewBox: _objectSpread({}, offset, {\n x: offset.left,\n y: offset.top\n }),\n active: isTooltipActive,\n label: activeLabel,\n payload: isTooltipActive ? activePayload : [],\n coordinate: activeCoordinate\n });\n }\n }, {\n key: \"renderActivePoints\",\n value: function renderActivePoints(_ref10) {\n var item = _ref10.item,\n activePoint = _ref10.activePoint,\n basePoint = _ref10.basePoint,\n childIndex = _ref10.childIndex,\n isRange = _ref10.isRange;\n var result = [];\n var key = item.props.key;\n var _item$item$props2 = item.item.props,\n activeDot = _item$item$props2.activeDot,\n dataKey = _item$item$props2.dataKey;\n\n var dotProps = _objectSpread({\n index: childIndex,\n dataKey: dataKey,\n cx: activePoint.x,\n cy: activePoint.y,\n r: 4,\n fill: getMainColorOfGraphicItem(item.item),\n strokeWidth: 2,\n stroke: '#fff',\n payload: activePoint.payload,\n value: activePoint.value,\n key: \"\".concat(key, \"-activePoint-\").concat(childIndex)\n }, getPresentationAttributes(activeDot), {}, filterEventAttributes(activeDot));\n\n result.push(this.constructor.renderActiveDot(activeDot, dotProps, childIndex));\n\n if (basePoint) {\n result.push(this.constructor.renderActiveDot(activeDot, _objectSpread({}, dotProps, {\n cx: basePoint.x,\n cy: basePoint.y,\n key: \"\".concat(key, \"-basePoint-\").concat(childIndex)\n }), childIndex));\n } else if (isRange) {\n result.push(null);\n }\n\n return result;\n }\n }, {\n key: \"renderClipPath\",\n value: function renderClipPath() {\n var clipPathId = this.clipPathId;\n var _this$state$offset = this.state.offset,\n left = _this$state$offset.left,\n top = _this$state$offset.top,\n height = _this$state$offset.height,\n width = _this$state$offset.width;\n return React.createElement(\"defs\", null, React.createElement(\"clipPath\", {\n id: clipPathId\n }, React.createElement(\"rect\", {\n x: left,\n y: top,\n height: height,\n width: width\n })));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this7 = this;\n\n if (!validateWidthHeight(this)) {\n return null;\n }\n\n var _this$props7 = this.props,\n children = _this$props7.children,\n className = _this$props7.className,\n width = _this$props7.width,\n height = _this$props7.height,\n style = _this$props7.style,\n compact = _this$props7.compact,\n others = _objectWithoutProperties(_this$props7, [\"children\", \"className\", \"width\", \"height\", \"style\", \"compact\"]);\n\n var attrs = getPresentationAttributes(others);\n var map = {\n CartesianGrid: {\n handler: this.renderGrid,\n once: true\n },\n ReferenceArea: {\n handler: this.renderReferenceElement\n },\n ReferenceLine: {\n handler: this.renderReferenceElement\n },\n ReferenceDot: {\n handler: this.renderReferenceElement\n },\n XAxis: {\n handler: this.renderXAxis\n },\n YAxis: {\n handler: this.renderYAxis\n },\n Brush: {\n handler: this.renderBrush,\n once: true\n },\n Bar: {\n handler: this.renderGraphicChild\n },\n Line: {\n handler: this.renderGraphicChild\n },\n Area: {\n handler: this.renderGraphicChild\n },\n Radar: {\n handler: this.renderGraphicChild\n },\n RadialBar: {\n handler: this.renderGraphicChild\n },\n Scatter: {\n handler: this.renderGraphicChild\n },\n Pie: {\n handler: this.renderGraphicChild\n },\n Funnel: {\n handler: this.renderGraphicChild\n },\n Tooltip: {\n handler: this.renderCursor,\n once: true\n },\n PolarGrid: {\n handler: this.renderPolarGrid,\n once: true\n },\n PolarAngleAxis: {\n handler: this.renderPolarAxis\n },\n PolarRadiusAxis: {\n handler: this.renderPolarAxis\n },\n Customized: {\n handler: this.renderCustomized\n }\n }; // The \"compact\" mode is mainly used as the panorama within Brush\n\n if (compact) {\n return React.createElement(Surface, _extends({}, attrs, {\n width: width,\n height: height\n }), this.renderClipPath(), renderByOrder(children, map));\n }\n\n var events = this.parseEventsOfWrapper();\n return React.createElement(\"div\", _extends({\n className: classNames('recharts-wrapper', className),\n style: _objectSpread({\n position: 'relative',\n cursor: 'default',\n width: width,\n height: height\n }, style)\n }, events, {\n ref: function ref(node) {\n _this7.container = node;\n }\n }), React.createElement(Surface, _extends({}, attrs, {\n width: width,\n height: height\n }), this.renderClipPath(), renderByOrder(children, map)), this.renderLegend(), this.renderTooltip());\n }\n }], [{\n key: \"getAxisNameByLayout\",\n value: function getAxisNameByLayout(layout) {\n if (layout === 'horizontal') {\n return {\n numericAxisName: 'yAxis',\n cateAxisName: 'xAxis'\n };\n }\n\n if (layout === 'vertical') {\n return {\n numericAxisName: 'xAxis',\n cateAxisName: 'yAxis'\n };\n }\n\n if (layout === 'centric') {\n return {\n numericAxisName: 'radiusAxis',\n cateAxisName: 'angleAxis'\n };\n }\n\n return {\n numericAxisName: 'angleAxis',\n cateAxisName: 'radiusAxis'\n };\n }\n }, {\n key: \"renderActiveDot\",\n value: function renderActiveDot(option, props) {\n var dot;\n\n if (isValidElement(option)) {\n dot = cloneElement(option, props);\n } else if (_isFunction(option)) {\n dot = option(props);\n } else {\n dot = React.createElement(Dot, props);\n }\n\n return React.createElement(Layer, {\n className: \"recharts-active-dot\",\n key: props.key\n }, dot);\n }\n }]);\n\n return CategoricalChartWrapper;\n }(Component);\n\n CategoricalChartWrapper.displayName = chartName;\n CategoricalChartWrapper.propTypes = _objectSpread({\n syncId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n compact: PropTypes.bool,\n width: PropTypes.number,\n height: PropTypes.number,\n data: PropTypes.arrayOf(PropTypes.object),\n layout: PropTypes.oneOf(['horizontal', 'vertical']),\n stackOffset: PropTypes.oneOf(['sign', 'expand', 'none', 'wiggle', 'silhouette']),\n throttleDelay: PropTypes.number,\n margin: PropTypes.shape({\n top: PropTypes.number,\n right: PropTypes.number,\n bottom: PropTypes.number,\n left: PropTypes.number\n }),\n barCategoryGap: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n barGap: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n barSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n maxBarSize: PropTypes.number,\n style: PropTypes.object,\n className: PropTypes.string,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultShowTooltip: PropTypes.bool,\n onClick: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseMove: PropTypes.func,\n onMouseDown: PropTypes.func,\n onMouseUp: PropTypes.func,\n reverseStackOrder: PropTypes.bool,\n id: PropTypes.string\n }, propTypes);\n CategoricalChartWrapper.defaultProps = _objectSpread({\n layout: 'horizontal',\n stackOffset: 'none',\n barCategoryGap: '10%',\n barGap: 4,\n margin: {\n top: 5,\n right: 5,\n bottom: 5,\n left: 5\n },\n reverseStackOrder: false\n }, defaultProps);\n\n CategoricalChartWrapper.createDefaultState = function (props) {\n var children = props.children,\n defaultShowTooltip = props.defaultShowTooltip;\n var brushItem = findChildByType(children, Brush);\n var startIndex = brushItem && brushItem.props && brushItem.props.startIndex || 0;\n var endIndex = brushItem && brushItem.props && brushItem.props.endIndex || props.data && props.data.length - 1 || 0;\n return {\n chartX: 0,\n chartY: 0,\n dataStartIndex: startIndex,\n dataEndIndex: endIndex,\n activeTooltipIndex: -1,\n isTooltipActive: !_isNil(defaultShowTooltip) ? defaultShowTooltip : false\n };\n };\n\n CategoricalChartWrapper.hasBar = function (graphicalItems) {\n if (!graphicalItems || !graphicalItems.length) {\n return false;\n }\n\n return graphicalItems.some(function (item) {\n var name = getDisplayName(item && item.type);\n return name && name.indexOf('Bar') >= 0;\n });\n };\n\n CategoricalChartWrapper.getDisplayedData = function (props, _ref11, item) {\n var graphicalItems = _ref11.graphicalItems,\n dataStartIndex = _ref11.dataStartIndex,\n dataEndIndex = _ref11.dataEndIndex;\n var itemsData = (graphicalItems || []).reduce(function (result, child) {\n var itemData = child.props.data;\n\n if (itemData && itemData.length) {\n return [].concat(_toConsumableArray(result), _toConsumableArray(itemData));\n }\n\n return result;\n }, []);\n\n if (itemsData && itemsData.length > 0) {\n return itemsData;\n }\n\n if (item && item.props && item.props.data && item.props.data.length > 0) {\n return item.props.data;\n }\n\n var data = props.data;\n\n if (data && data.length && isNumber(dataStartIndex) && isNumber(dataEndIndex)) {\n return data.slice(dataStartIndex, dataEndIndex + 1);\n }\n\n return [];\n };\n\n return CategoricalChartWrapper;\n};\n\nexport default generateCategoricalChart;","/**\n * @fileOverview Bar Chart\n */\nimport generateCategoricalChart from './generateCategoricalChart';\nimport Bar from '../cartesian/Bar';\nimport XAxis from '../cartesian/XAxis';\nimport YAxis from '../cartesian/YAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport default generateCategoricalChart({\n chartName: 'BarChart',\n GraphicalChild: Bar,\n axisComponents: [{\n axisType: 'xAxis',\n AxisComp: XAxis\n }, {\n axisType: 'yAxis',\n AxisComp: YAxis\n }],\n formatAxisMap: formatAxisMap\n});","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Z Axis\n */\nimport { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\nvar ZAxis =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(ZAxis, _PureComponent);\n\n function ZAxis() {\n _classCallCheck(this, ZAxis);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ZAxis).apply(this, arguments));\n }\n\n _createClass(ZAxis, [{\n key: \"render\",\n value: function render() {\n return null;\n }\n }]);\n\n return ZAxis;\n}(PureComponent);\n\nZAxis.displayName = 'ZAxis';\nZAxis.propTypes = {\n type: PropTypes.oneOf(['number', 'category']),\n // The name of data displayed in the axis\n name: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n // The unit of data displayed in the axis\n unit: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n // The unique id of z-axis\n zAxisId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n // The key of data displayed in the axis\n dataKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.func]),\n // The range of axis\n range: PropTypes.arrayOf(PropTypes.number),\n scale: PropTypes.oneOfType([PropTypes.oneOf(['auto', 'linear', 'pow', 'sqrt', 'log', 'identity', 'time', 'band', 'point', 'ordinal', 'quantile', 'quantize', 'utc', 'sequential', 'threshold']), PropTypes.func])\n};\nZAxis.defaultProps = {\n zAxisId: 0,\n range: [64, 64],\n scale: 'auto',\n type: 'number'\n};\nexport default ZAxis;","import _isEqual from \"lodash/isEqual\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n/**\n * @fileOverview Render a group of scatters\n */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport Animate from 'react-smooth';\nimport classNames from 'classnames';\nimport Layer from '../container/Layer';\nimport LabelList from '../component/LabelList';\nimport { PRESENTATION_ATTRIBUTES, EVENT_ATTRIBUTES, LEGEND_TYPES, TOOLTIP_TYPES, getPresentationAttributes, filterEventsOfChild, isSsr, findAllByType } from '../util/ReactUtils';\nimport ZAxis from './ZAxis';\nimport Curve from '../shape/Curve';\nimport Symbols from '../shape/Symbols';\nimport ErrorBar from './ErrorBar';\nimport Cell from '../component/Cell';\nimport { uniqueId, interpolateNumber, getLinearRegression } from '../util/DataUtils';\nimport { getValueByDataKey, getCateCoordinateOfLine } from '../util/ChartUtils';\n\nvar Scatter =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(Scatter, _PureComponent);\n\n function Scatter() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Scatter);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Scatter)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n isAnimationFinished: false\n };\n\n _this.cachePrevPoints = function (points) {\n _this.setState({\n prevPoints: points\n });\n };\n\n _this.handleAnimationEnd = function () {\n _this.setState({\n isAnimationFinished: true\n });\n };\n\n _this.handleAnimationStart = function () {\n _this.setState({\n isAnimationFinished: false\n });\n };\n\n _this.id = uniqueId('recharts-scatter-');\n return _this;\n }\n\n _createClass(Scatter, [{\n key: \"componentWillReceiveProps\",\n // eslint-disable-next-line camelcase\n value: function componentWillReceiveProps(nextProps) {\n var _this$props = this.props,\n animationId = _this$props.animationId,\n points = _this$props.points;\n\n if (nextProps.animationId !== animationId) {\n this.cachePrevPoints(points);\n }\n }\n }, {\n key: \"renderSymbolsStatically\",\n value: function renderSymbolsStatically(points) {\n var _this2 = this;\n\n var _this$props2 = this.props,\n shape = _this$props2.shape,\n activeShape = _this$props2.activeShape,\n activeIndex = _this$props2.activeIndex;\n var baseProps = getPresentationAttributes(this.props);\n return points.map(function (entry, i) {\n var props = _objectSpread({\n key: \"symbol-\".concat(i)\n }, baseProps, {}, entry);\n\n return React.createElement(Layer, _extends({\n className: \"recharts-scatter-symbol\"\n }, filterEventsOfChild(_this2.props, entry, i), {\n key: \"symbol-\".concat(i) // eslint-disable-line react/no-array-index-key\n\n }), _this2.constructor.renderSymbolItem(activeIndex === i ? activeShape : shape, props));\n });\n }\n }, {\n key: \"renderSymbolsWithAnimation\",\n value: function renderSymbolsWithAnimation() {\n var _this3 = this;\n\n var _this$props3 = this.props,\n points = _this$props3.points,\n isAnimationActive = _this$props3.isAnimationActive,\n animationBegin = _this$props3.animationBegin,\n animationDuration = _this$props3.animationDuration,\n animationEasing = _this$props3.animationEasing,\n animationId = _this$props3.animationId;\n var prevPoints = this.state.prevPoints;\n return React.createElement(Animate, {\n begin: animationBegin,\n duration: animationDuration,\n isActive: isAnimationActive,\n easing: animationEasing,\n from: {\n t: 0\n },\n to: {\n t: 1\n },\n key: \"pie-\".concat(animationId),\n onAnimationEnd: this.handleAnimationEnd,\n onAnimationStart: this.handleAnimationStart\n }, function (_ref) {\n var t = _ref.t;\n var stepData = points.map(function (entry, index) {\n var prev = prevPoints && prevPoints[index];\n\n if (prev) {\n var interpolatorCx = interpolateNumber(prev.cx, entry.cx);\n var interpolatorCy = interpolateNumber(prev.cy, entry.cy);\n var interpolatorSize = interpolateNumber(prev.size, entry.size);\n return _objectSpread({}, entry, {\n cx: interpolatorCx(t),\n cy: interpolatorCy(t),\n size: interpolatorSize(t)\n });\n }\n\n var interpolator = interpolateNumber(0, entry.size);\n return _objectSpread({}, entry, {\n size: interpolator(t)\n });\n });\n return React.createElement(Layer, null, _this3.renderSymbolsStatically(stepData));\n });\n }\n }, {\n key: \"renderSymbols\",\n value: function renderSymbols() {\n var _this$props4 = this.props,\n points = _this$props4.points,\n isAnimationActive = _this$props4.isAnimationActive;\n var prevPoints = this.state.prevPoints;\n\n if (isAnimationActive && points && points.length && (!prevPoints || !_isEqual(prevPoints, points))) {\n return this.renderSymbolsWithAnimation();\n }\n\n return this.renderSymbolsStatically(points);\n }\n }, {\n key: \"renderErrorBar\",\n value: function renderErrorBar() {\n var isAnimationActive = this.props.isAnimationActive;\n\n if (isAnimationActive && !this.state.isAnimationFinished) {\n return null;\n }\n\n var _this$props5 = this.props,\n points = _this$props5.points,\n xAxis = _this$props5.xAxis,\n yAxis = _this$props5.yAxis,\n children = _this$props5.children;\n var errorBarItems = findAllByType(children, ErrorBar);\n\n if (!errorBarItems) {\n return null;\n }\n\n function dataPointFormatterY(dataPoint, dataKey) {\n return {\n x: dataPoint.cx,\n y: dataPoint.cy,\n value: dataPoint.node.y,\n errorVal: getValueByDataKey(dataPoint, dataKey)\n };\n }\n\n function dataPointFormatterX(dataPoint, dataKey) {\n return {\n x: dataPoint.cx,\n y: dataPoint.cy,\n value: dataPoint.node.x,\n errorVal: getValueByDataKey(dataPoint, dataKey)\n };\n }\n\n return errorBarItems.map(function (item, i) {\n var direction = item.props.direction;\n return React.cloneElement(item, {\n key: i,\n // eslint-disable-line react/no-array-index-key\n data: points,\n xAxis: xAxis,\n yAxis: yAxis,\n layout: direction === 'x' ? 'vertical' : 'horizontal',\n dataPointFormatter: direction === 'x' ? dataPointFormatterX : dataPointFormatterY\n });\n });\n }\n }, {\n key: \"renderLine\",\n value: function renderLine() {\n var _this$props6 = this.props,\n points = _this$props6.points,\n line = _this$props6.line,\n lineType = _this$props6.lineType,\n lineJointType = _this$props6.lineJointType;\n var scatterProps = getPresentationAttributes(this.props);\n var customLineProps = getPresentationAttributes(line);\n var linePoints, lineItem;\n\n if (lineType === 'joint') {\n linePoints = points.map(function (entry) {\n return {\n x: entry.cx,\n y: entry.cy\n };\n });\n } else if (lineType === 'fitting') {\n var _getLinearRegression = getLinearRegression(points),\n xmin = _getLinearRegression.xmin,\n xmax = _getLinearRegression.xmax,\n a = _getLinearRegression.a,\n b = _getLinearRegression.b;\n\n var linearExp = function linearExp(x) {\n return a * x + b;\n };\n\n linePoints = [{\n x: xmin,\n y: linearExp(xmin)\n }, {\n x: xmax,\n y: linearExp(xmax)\n }];\n }\n\n var lineProps = _objectSpread({}, scatterProps, {\n fill: 'none',\n stroke: scatterProps && scatterProps.fill\n }, customLineProps, {\n points: linePoints\n });\n\n if (React.isValidElement(line)) {\n lineItem = React.cloneElement(line, lineProps);\n } else if (_isFunction(line)) {\n lineItem = line(lineProps);\n } else {\n lineItem = React.createElement(Curve, _extends({}, lineProps, {\n type: lineJointType\n }));\n }\n\n return React.createElement(Layer, {\n className: \"recharts-scatter-line\",\n key: \"recharts-scatter-line\"\n }, lineItem);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props7 = this.props,\n hide = _this$props7.hide,\n points = _this$props7.points,\n line = _this$props7.line,\n className = _this$props7.className,\n xAxis = _this$props7.xAxis,\n yAxis = _this$props7.yAxis,\n left = _this$props7.left,\n top = _this$props7.top,\n width = _this$props7.width,\n height = _this$props7.height,\n id = _this$props7.id;\n\n if (hide || !points || !points.length) {\n return null;\n }\n\n var _this$state = this.state,\n isAnimationActive = _this$state.isAnimationActive,\n isAnimationFinished = _this$state.isAnimationFinished;\n var layerClass = classNames('recharts-scatter', className);\n var needClip = xAxis && xAxis.allowDataOverflow || yAxis && yAxis.allowDataOverflow;\n var clipPathId = _isNil(id) ? this.id : id;\n return React.createElement(Layer, {\n className: layerClass,\n clipPath: needClip ? \"url(#clipPath-\".concat(clipPathId, \")\") : null\n }, needClip ? React.createElement(\"defs\", null, React.createElement(\"clipPath\", {\n id: \"clipPath-\".concat(clipPathId)\n }, React.createElement(\"rect\", {\n x: left,\n y: top,\n width: width,\n height: height\n }))) : null, line && this.renderLine(), this.renderErrorBar(), React.createElement(Layer, {\n key: \"recharts-scatter-symbols\"\n }, this.renderSymbols()), (!isAnimationActive || isAnimationFinished) && LabelList.renderCallByParent(this.props, points));\n }\n }], [{\n key: \"renderSymbolItem\",\n value: function renderSymbolItem(option, props) {\n var symbol;\n\n if (React.isValidElement(option)) {\n symbol = React.cloneElement(option, props);\n } else if (_isFunction(option)) {\n symbol = option(props);\n } else {\n symbol = React.createElement(Symbols, _extends({}, props, {\n type: option\n }));\n }\n\n return symbol;\n }\n }]);\n\n return Scatter;\n}(PureComponent);\n\nScatter.displayName = 'Scatter';\nScatter.propTypes = _objectSpread({}, EVENT_ATTRIBUTES, {}, PRESENTATION_ATTRIBUTES, {\n xAxisId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n yAxisId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n zAxisId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n line: PropTypes.oneOfType([PropTypes.bool, PropTypes.object, PropTypes.func, PropTypes.element]),\n lineType: PropTypes.oneOf(['fitting', 'joint']),\n lineJointType: PropTypes.oneOfType([PropTypes.oneOf(['basis', 'basisClosed', 'basisOpen', 'linear', 'linearClosed', 'natural', 'monotoneX', 'monotoneY', 'monotone', 'step', 'stepBefore', 'stepAfter']), PropTypes.func]),\n legendType: PropTypes.oneOf(LEGEND_TYPES),\n tooltipType: PropTypes.oneOf(TOOLTIP_TYPES),\n className: PropTypes.string,\n name: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n activeIndex: PropTypes.number,\n activeShape: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.element]),\n shape: PropTypes.oneOfType([PropTypes.oneOf(['circle', 'cross', 'diamond', 'square', 'star', 'triangle', 'wye']), PropTypes.element, PropTypes.func]),\n points: PropTypes.arrayOf(PropTypes.shape({\n cx: PropTypes.number,\n cy: PropTypes.number,\n size: PropTypes.number,\n node: PropTypes.shape({\n x: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n y: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n z: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n }),\n payload: PropTypes.any\n })),\n hide: PropTypes.bool,\n isAnimationActive: PropTypes.bool,\n animationId: PropTypes.number,\n animationBegin: PropTypes.number,\n animationDuration: PropTypes.number,\n animationEasing: PropTypes.oneOf(['ease', 'ease-in', 'ease-out', 'ease-in-out', 'linear'])\n});\nScatter.defaultProps = {\n xAxisId: 0,\n yAxisId: 0,\n zAxisId: 0,\n legendType: 'circle',\n lineType: 'joint',\n lineJointType: 'linear',\n data: [],\n shape: 'circle',\n hide: false,\n isAnimationActive: !isSsr(),\n animationBegin: 0,\n animationDuration: 400,\n animationEasing: 'linear'\n};\n\nScatter.getComposedData = function (_ref2) {\n var xAxis = _ref2.xAxis,\n yAxis = _ref2.yAxis,\n zAxis = _ref2.zAxis,\n item = _ref2.item,\n displayedData = _ref2.displayedData,\n onItemMouseLeave = _ref2.onItemMouseLeave,\n onItemMouseEnter = _ref2.onItemMouseEnter,\n offset = _ref2.offset,\n xAxisTicks = _ref2.xAxisTicks,\n yAxisTicks = _ref2.yAxisTicks;\n var tooltipType = item.props.tooltipType;\n var cells = findAllByType(item.props.children, Cell);\n var xAxisDataKey = _isNil(xAxis.dataKey) ? item.props.dataKey : xAxis.dataKey;\n var yAxisDataKey = _isNil(yAxis.dataKey) ? item.props.dataKey : yAxis.dataKey;\n var zAxisDataKey = zAxis && zAxis.dataKey;\n var defaultRangeZ = zAxis ? zAxis.range : ZAxis.defaultProps.range;\n var defaultZ = defaultRangeZ && defaultRangeZ[0];\n var xBandSize = xAxis.scale.bandwidth ? xAxis.scale.bandwidth() : 0;\n var yBandSize = yAxis.scale.bandwidth ? yAxis.scale.bandwidth() : 0;\n var points = displayedData.map(function (entry, index) {\n var x = entry[xAxisDataKey];\n var y = entry[yAxisDataKey];\n var z = !_isNil(zAxisDataKey) && entry[zAxisDataKey] || '-';\n var tooltipPayload = [{\n name: xAxis.name || xAxis.dataKey,\n unit: xAxis.unit || '',\n value: x,\n payload: entry,\n dataKey: xAxisDataKey,\n type: tooltipType\n }, {\n name: yAxis.name || yAxis.dataKey,\n unit: yAxis.unit || '',\n value: y,\n payload: entry,\n dataKey: yAxisDataKey,\n type: tooltipType\n }];\n\n if (z !== '-') {\n tooltipPayload.push({\n name: zAxis.name || zAxis.dataKey,\n unit: zAxis.unit || '',\n value: z,\n payload: entry,\n dataKey: zAxisDataKey,\n type: tooltipType\n });\n }\n\n var cx = getCateCoordinateOfLine({\n axis: xAxis,\n ticks: xAxisTicks,\n bandSize: xBandSize,\n entry: entry,\n index: index,\n dataKey: xAxisDataKey\n });\n var cy = getCateCoordinateOfLine({\n axis: yAxis,\n ticks: yAxisTicks,\n bandSize: yBandSize,\n entry: entry,\n index: index,\n dataKey: yAxisDataKey\n });\n var size = z !== '-' ? zAxis.scale(z) : defaultZ;\n var radius = Math.sqrt(Math.max(size, 0) / Math.PI);\n return _objectSpread({}, entry, {\n cx: cx,\n cy: cy,\n x: cx - radius,\n y: cy - radius,\n xAxis: xAxis,\n yAxis: yAxis,\n zAxis: zAxis,\n width: 2 * radius,\n height: 2 * radius,\n size: size,\n node: {\n x: x,\n y: y,\n z: z\n },\n tooltipPayload: tooltipPayload,\n tooltipPosition: {\n x: cx,\n y: cy\n },\n payload: entry\n }, cells && cells[index] && cells[index].props);\n });\n return _objectSpread({\n onMouseLeave: onItemMouseLeave,\n onMouseEnter: onItemMouseEnter,\n points: points\n }, offset);\n};\n\nexport default Scatter;","/**\n * @fileOverview Composed Chart\n */\nimport generateCategoricalChart from './generateCategoricalChart';\nimport Area from '../cartesian/Area';\nimport Bar from '../cartesian/Bar';\nimport Line from '../cartesian/Line';\nimport Scatter from '../cartesian/Scatter';\nimport XAxis from '../cartesian/XAxis';\nimport YAxis from '../cartesian/YAxis';\nimport ZAxis from '../cartesian/ZAxis';\nimport { formatAxisMap } from '../util/CartesianUtils';\nexport default generateCategoricalChart({\n chartName: 'ComposedChart',\n GraphicalChild: [Line, Area, Bar, Scatter],\n axisComponents: [{\n axisType: 'xAxis',\n AxisComp: XAxis\n }, {\n axisType: 'yAxis',\n AxisComp: YAxis\n }, {\n axisType: 'zAxis',\n AxisComp: ZAxis\n }],\n formatAxisMap: formatAxisMap\n});","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\nfunction arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = arrayEvery;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\nfunction baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n}\n\nmodule.exports = baseEvery;\n","var isSymbol = require('./isSymbol');\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseExtremum;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n}\n\nmodule.exports = baseSome;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var arrayEvery = require('./_arrayEvery'),\n baseEvery = require('./_baseEvery'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\nfunction every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = every;\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var baseFlatten = require('./_baseFlatten'),\n map = require('./map');\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var isNumber = require('./isNumber');\n\n/**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\nfunction isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n}\n\nmodule.exports = isNaN;\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nmodule.exports = isNil;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n}\n\nmodule.exports = isNumber;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n identity = require('./identity');\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n}\n\nmodule.exports = max;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseExtremum = require('./_baseExtremum'),\n baseLt = require('./_baseLt'),\n identity = require('./identity');\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nmodule.exports = min;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","var arraySome = require('./_arraySome'),\n baseIteratee = require('./_baseIteratee'),\n baseSome = require('./_baseSome'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = some;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Module dependencies\n */\nvar balanced = require(\"balanced-match\")\nvar reduceFunctionCall = require(\"reduce-function-call\")\nvar mexp = require(\"math-expression-evaluator\")\n\n/**\n * Constantes\n */\nvar MAX_STACK = 100 // should be enough for a single calc()...\nvar NESTED_CALC_RE = /(\\+|\\-|\\*|\\\\|[^a-z]|)(\\s*)(\\()/g\n\n/**\n * Global variables\n */\nvar stack\n\n/**\n * Expose reduceCSSCalc plugin\n *\n * @type {Function}\n */\nmodule.exports = reduceCSSCalc\n\n/**\n * Reduce CSS calc() in a string, whenever it's possible\n *\n * @param {String} value css input\n */\nfunction reduceCSSCalc(value, decimalPrecision) {\n stack = 0\n decimalPrecision = Math.pow(10, decimalPrecision === undefined ? 5 : decimalPrecision)\n\n // Allow calc() on multiple lines\n value = value.replace(/\\n+/g, \" \")\n\n /**\n * Evaluates an expression\n *\n * @param {String} expression\n * @returns {String}\n */\n function evaluateExpression (expression, functionIdentifier, call) {\n if (stack++ > MAX_STACK) {\n stack = 0\n throw new Error(\"Call stack overflow for \" + call)\n }\n\n if (expression === \"\") {\n throw new Error(functionIdentifier + \"(): '\" + call + \"' must contain a non-whitespace string\")\n }\n\n expression = evaluateNestedExpression(expression, call)\n\n var units = getUnitsInExpression(expression)\n\n // If the expression contains multiple units or CSS variables,\n // then let the expression be (i.e. browser calc())\n if (units.length > 1 || expression.indexOf(\"var(\") > -1) {\n return functionIdentifier + \"(\" + expression + \")\"\n }\n\n var unit = units[0] || \"\"\n\n if (unit === \"%\") {\n // Convert percentages to numbers, to handle expressions like: 50% * 50% (will become: 25%):\n // console.log(expression)\n expression = expression.replace(/\\b[0-9\\.]+%/g, function(percent) {\n return parseFloat(percent.slice(0, -1)) * 0.01\n })\n }\n\n // Remove units in expression:\n var toEvaluate = expression.replace(new RegExp(unit, \"gi\"), \"\")\n var result\n\n try {\n result = mexp.eval(toEvaluate)\n }\n catch (e) {\n return functionIdentifier + \"(\" + expression + \")\"\n }\n\n // Transform back to a percentage result:\n if (unit === \"%\") {\n result *= 100\n }\n\n // adjust rounding shit\n // (0.1 * 0.2 === 0.020000000000000004)\n if (functionIdentifier.length || unit === \"%\") {\n result = Math.round(result * decimalPrecision) / decimalPrecision\n }\n\n // Add unit\n result += unit\n\n return result\n }\n\n /**\n * Evaluates nested expressions\n *\n * @param {String} expression\n * @returns {String}\n */\n function evaluateNestedExpression(expression, call) {\n // Remove the calc part from nested expressions to ensure\n // better browser compatibility\n expression = expression.replace(/((?:\\-[a-z]+\\-)?calc)/g, \"\")\n var evaluatedPart = \"\"\n var nonEvaluatedPart = expression\n var matches\n while ((matches = NESTED_CALC_RE.exec(nonEvaluatedPart))) {\n if (matches[0].index > 0) {\n evaluatedPart += nonEvaluatedPart.substring(0, matches[0].index)\n }\n\n var balancedExpr = balanced(\"(\", \")\", nonEvaluatedPart.substring([0].index))\n if (balancedExpr.body === \"\") {\n throw new Error(\"'\" + expression + \"' must contain a non-whitespace string\")\n }\n\n var evaluated = evaluateExpression(balancedExpr.body, \"\", call)\n\n evaluatedPart += balancedExpr.pre + evaluated\n nonEvaluatedPart = balancedExpr.post\n }\n\n return evaluatedPart + nonEvaluatedPart\n }\n\n return reduceFunctionCall(value, /((?:\\-[a-z]+\\-)?calc)\\(/, evaluateExpression)\n}\n\n/**\n * Checks what units are used in an expression\n *\n * @param {String} expression\n * @returns {Array}\n */\n\nfunction getUnitsInExpression(expression) {\n var uniqueUnits = []\n var uniqueLowerCaseUnits = []\n var unitRegEx = /[\\.0-9]([%a-z]+)/gi\n var matches = unitRegEx.exec(expression)\n\n while (matches) {\n if (!matches || !matches[1]) {\n continue\n }\n\n if (uniqueLowerCaseUnits.indexOf(matches[1].toLowerCase()) === -1) {\n uniqueUnits.push(matches[1])\n uniqueLowerCaseUnits.push(matches[1].toLowerCase())\n }\n\n matches = unitRegEx.exec(expression)\n }\n\n return uniqueUnits\n}\n","module.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","/*\n * Module dependencies\n */\nvar balanced = require(\"balanced-match\")\n\n/**\n * Expose `reduceFunctionCall`\n *\n * @type {Function}\n */\nmodule.exports = reduceFunctionCall\n\n/**\n * Walkthrough all expressions, evaluate them and insert them into the declaration\n *\n * @param {Array} expressions\n * @param {Object} declaration\n */\n\nfunction reduceFunctionCall(string, functionRE, callback) {\n var call = string\n return getFunctionCalls(string, functionRE).reduce(function(string, obj) {\n return string.replace(obj.functionIdentifier + \"(\" + obj.matches.body + \")\", evalFunctionCall(obj.matches.body, obj.functionIdentifier, callback, call, functionRE))\n }, string)\n}\n\n/**\n * Parses expressions in a value\n *\n * @param {String} value\n * @returns {Array}\n * @api private\n */\n\nfunction getFunctionCalls(call, functionRE) {\n var expressions = []\n\n var fnRE = typeof functionRE === \"string\" ? new RegExp(\"\\\\b(\" + functionRE + \")\\\\(\") : functionRE\n do {\n var searchMatch = fnRE.exec(call)\n if (!searchMatch) {\n return expressions\n }\n if (searchMatch[1] === undefined) {\n throw new Error(\"Missing the first couple of parenthesis to get the function identifier in \" + functionRE)\n }\n var fn = searchMatch[1]\n var startIndex = searchMatch.index\n var matches = balanced(\"(\", \")\", call.substring(startIndex))\n\n if (!matches || matches.start !== searchMatch[0].length - 1) {\n throw new SyntaxError(fn + \"(): missing closing ')' in the value '\" + call + \"'\")\n }\n\n expressions.push({matches: matches, functionIdentifier: fn})\n call = matches.post\n }\n while (fnRE.test(call))\n\n return expressions\n}\n\n/**\n * Evaluates an expression\n *\n * @param {String} expression\n * @returns {String}\n * @api private\n */\n\nfunction evalFunctionCall (string, functionIdentifier, callback, call, functionRE) {\n // allow recursivity\n return callback(reduceFunctionCall(string, functionRE, callback), functionIdentifier, call)\n}\n","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","import $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribe(listener) for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n keys.push.apply(keys, Object.getOwnPropertySymbols(object));\n }\n\n if (enumerableOnly) keys = keys.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","'use strict';\n\nvar functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();\n\nvar $Object = Object;\nvar $TypeError = TypeError;\n\nmodule.exports = function flags() {\n\tif (this != null && this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.hasIndices) {\n\t\tresult += 'd';\n\t}\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n};\n\nif (functionsHaveConfigurableNames && Object.defineProperty) {\n\tObject.defineProperty(module.exports, 'name', { value: 'get flags' });\n}\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(getPolyfill());\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\n\nmodule.exports = function getPolyfill() {\n\tif (supportsDescriptors && (/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (\n\t\t\tdescriptor\n\t\t\t&& typeof descriptor.get === 'function'\n\t\t\t&& typeof RegExp.prototype.dotAll === 'boolean'\n\t\t\t&& typeof RegExp.prototype.hasIndices === 'boolean'\n\t\t) {\n\t\t\t/* eslint getter-return: 0 */\n\t\t\tvar calls = '';\n\t\t\tvar o = {};\n\t\t\tObject.defineProperty(o, 'hasIndices', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'd';\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(o, 'sticky', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'y';\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (calls === 'dy') {\n\t\t\t\treturn descriptor.get;\n\t\t\t}\n\t\t}\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","'use strict'\nvar Buffer = require('buffer').Buffer\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = require('./sha')\nexports.sha1 = require('./sha1')\nexports.sha224 = require('./sha224')\nexports.sha256 = require('./sha256')\nexports.sha384 = require('./sha384')\nexports.sha512 = require('./sha512')\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Sha256 = require('./sha256')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","var inherits = require('inherits')\nvar SHA512 = require('./sha512')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n","var inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js')\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js')\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(global = global || self, factory(global.throttleDebounce = {}));\n}(this, (function (exports) { 'use strict';\n\n\t/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n\t/**\n\t * Throttle execution of a function. Especially useful for rate limiting\n\t * execution of handlers on events like resize and scroll.\n\t *\n\t * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n\t * @param {boolean} [noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds while the\n\t * throttled-function is being called. If noTrailing is false or unspecified, callback will be executed one final time\n\t * after the last throttled-function call. (After the throttled-function has not been called for `delay` milliseconds,\n\t * the internal counter is reset).\n\t * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n\t * to `callback` when the throttled-function is executed.\n\t * @param {boolean} [debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is false (at end),\n\t * schedule `callback` to execute after `delay` ms.\n\t *\n\t * @returns {Function} A new, throttled, function.\n\t */\n\tfunction throttle (delay, noTrailing, callback, debounceMode) {\n\t /*\n\t * After wrapper has stopped being called, this timeout ensures that\n\t * `callback` is executed at the proper times in `throttle` and `end`\n\t * debounce modes.\n\t */\n\t var timeoutID;\n\t var cancelled = false; // Keep track of the last time `callback` was executed.\n\n\t var lastExec = 0; // Function to clear existing timeout\n\n\t function clearExistingTimeout() {\n\t if (timeoutID) {\n\t clearTimeout(timeoutID);\n\t }\n\t } // Function to cancel next exec\n\n\n\t function cancel() {\n\t clearExistingTimeout();\n\t cancelled = true;\n\t } // `noTrailing` defaults to falsy.\n\n\n\t if (typeof noTrailing !== 'boolean') {\n\t debounceMode = callback;\n\t callback = noTrailing;\n\t noTrailing = undefined;\n\t }\n\t /*\n\t * The `wrapper` function encapsulates all of the throttling / debouncing\n\t * functionality and when executed will limit the rate at which `callback`\n\t * is executed.\n\t */\n\n\n\t function wrapper() {\n\t for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n\t arguments_[_key] = arguments[_key];\n\t }\n\n\t var self = this;\n\t var elapsed = Date.now() - lastExec;\n\n\t if (cancelled) {\n\t return;\n\t } // Execute `callback` and update the `lastExec` timestamp.\n\n\n\t function exec() {\n\t lastExec = Date.now();\n\t callback.apply(self, arguments_);\n\t }\n\t /*\n\t * If `debounceMode` is true (at begin) this is used to clear the flag\n\t * to allow future `callback` executions.\n\t */\n\n\n\t function clear() {\n\t timeoutID = undefined;\n\t }\n\n\t if (debounceMode && !timeoutID) {\n\t /*\n\t * Since `wrapper` is being called for the first time and\n\t * `debounceMode` is true (at begin), execute `callback`.\n\t */\n\t exec();\n\t }\n\n\t clearExistingTimeout();\n\n\t if (debounceMode === undefined && elapsed > delay) {\n\t /*\n\t * In throttle mode, if `delay` time has been exceeded, execute\n\t * `callback`.\n\t */\n\t exec();\n\t } else if (noTrailing !== true) {\n\t /*\n\t * In trailing throttle mode, since `delay` time has not been\n\t * exceeded, schedule `callback` to execute `delay` ms after most\n\t * recent execution.\n\t *\n\t * If `debounceMode` is true (at begin), schedule `clear` to execute\n\t * after `delay` ms.\n\t *\n\t * If `debounceMode` is false (at end), schedule `callback` to\n\t * execute after `delay` ms.\n\t */\n\t timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n\t }\n\t }\n\n\t wrapper.cancel = cancel; // Return the wrapper function.\n\n\t return wrapper;\n\t}\n\n\t/* eslint-disable no-undefined */\n\t/**\n\t * Debounce execution of a function. Debouncing, unlike throttling,\n\t * guarantees that a function is only executed a single time, either at the\n\t * very beginning of a series of calls, or at the very end.\n\t *\n\t * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n\t * @param {boolean} [atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n\t * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n\t * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n\t * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n\t * to `callback` when the debounced-function is executed.\n\t *\n\t * @returns {Function} A new, debounced function.\n\t */\n\n\tfunction debounce (delay, atBegin, callback) {\n\t return callback === undefined ? throttle(delay, atBegin, false) : throttle(delay, callback, atBegin !== false);\n\t}\n\n\texports.debounce = debounce;\n\texports.throttle = throttle;\n\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=index.umd.js.map\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? prefix + \": \" + provided : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","!function(n,r){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=r():\"function\"==typeof define&&define.amd?define(\"underscore\",r):(n=\"undefined\"!=typeof globalThis?globalThis:n||self,function(){var t=n._,e=n._=r();e.noConflict=function(){return n._=t,e}}())}(this,(function(){\n// Underscore.js 1.13.3\n// https://underscorejs.org\n// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\nvar n=\"1.13.3\",r=\"object\"==typeof self&&self.self===self&&self||\"object\"==typeof global&&global.global===global&&global||Function(\"return this\")()||{},t=Array.prototype,e=Object.prototype,u=\"undefined\"!=typeof Symbol?Symbol.prototype:null,o=t.push,i=t.slice,a=e.toString,f=e.hasOwnProperty,c=\"undefined\"!=typeof ArrayBuffer,l=\"undefined\"!=typeof DataView,s=Array.isArray,p=Object.keys,v=Object.create,h=c&&ArrayBuffer.isView,y=isNaN,d=isFinite,g=!{toString:null}.propertyIsEnumerable(\"toString\"),b=[\"valueOf\",\"isPrototypeOf\",\"toString\",\"propertyIsEnumerable\",\"hasOwnProperty\",\"toLocaleString\"],m=Math.pow(2,53)-1;function j(n,r){return r=null==r?n.length-1:+r,function(){for(var t=Math.max(arguments.length-r,0),e=Array(t),u=0;u=0&&t<=m}}function J(n){return function(r){return null==r?void 0:r[n]}}var G=J(\"byteLength\"),H=K(G),Q=/\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;var X=c?function(n){return h?h(n)&&!q(n):H(n)&&Q.test(a.call(n))}:C(!1),Y=J(\"length\");function Z(n,r){r=function(n){for(var r={},t=n.length,e=0;e\":\">\",'\"':\""\",\"'\":\"'\",\"`\":\"`\"},$n=zn(Ln),Cn=zn(_n(Ln)),Kn=tn.templateSettings={evaluate:/<%([\\s\\S]+?)%>/g,interpolate:/<%=([\\s\\S]+?)%>/g,escape:/<%-([\\s\\S]+?)%>/g},Jn=/(.)^/,Gn={\"'\":\"'\",\"\\\\\":\"\\\\\",\"\\r\":\"r\",\"\\n\":\"n\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},Hn=/\\\\|'|\\r|\\n|\\u2028|\\u2029/g;function Qn(n){return\"\\\\\"+Gn[n]}var Xn=/^\\s*(\\w|\\$)+\\s*$/;var Yn=0;function Zn(n,r,t,e,u){if(!(e instanceof r))return n.apply(t,u);var o=Mn(n.prototype),i=n.apply(o,u);return _(i)?i:o}var nr=j((function(n,r){var t=nr.placeholder,e=function(){for(var u=0,o=r.length,i=Array(o),a=0;a1)er(a,r-1,t,e),u=e.length;else for(var f=0,c=a.length;f0&&(t=r.apply(this,arguments)),n<=1&&(r=null),t}}var cr=nr(fr,2);function lr(n,r,t){r=Pn(r,t);for(var e,u=nn(n),o=0,i=u.length;o0?0:u-1;o>=0&&o0?a=o>=0?o:Math.max(o+f,a):f=o>=0?Math.min(o+1,f):o+f+1;else if(t&&o&&f)return e[o=t(e,u)]===u?o:-1;if(u!=u)return(o=r(i.call(e,a,f),$))>=0?o+a:-1;for(o=n>0?a:f-1;o>=0&&o0?0:i-1;for(u||(e=r[o?o[a]:a],a+=n);a>=0&&a=3;return r(n,Rn(t,u,4),e,o)}}var wr=_r(1),Ar=_r(-1);function xr(n,r,t){var e=[];return r=Pn(r,t),mr(n,(function(n,t,u){r(n,t,u)&&e.push(n)})),e}function Sr(n,r,t){r=Pn(r,t);for(var e=!tr(n)&&nn(n),u=(e||n).length,o=0;o=0}var Er=j((function(n,r,t){var e,u;return D(r)?u=r:(r=Bn(r),e=r.slice(0,-1),r=r[r.length-1]),jr(n,(function(n){var o=u;if(!o){if(e&&e.length&&(n=Nn(n,e)),null==n)return;o=n[r]}return null==o?o:o.apply(n,t)}))}));function Br(n,r){return jr(n,Dn(r))}function Nr(n,r,t){var e,u,o=-1/0,i=-1/0;if(null==r||\"number\"==typeof r&&\"object\"!=typeof n[0]&&null!=n)for(var a=0,f=(n=tr(n)?n:jn(n)).length;ao&&(o=e);else r=Pn(r,t),mr(n,(function(n,t,e){((u=r(n,t,e))>i||u===-1/0&&o===-1/0)&&(o=n,i=u)}));return o}var Ir=/[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;function Tr(n){return n?U(n)?i.call(n):S(n)?n.match(Ir):tr(n)?jr(n,Tn):jn(n):[]}function kr(n,r,t){if(null==r||t)return tr(n)||(n=jn(n)),n[Un(n.length-1)];var e=Tr(n),u=Y(e);r=Math.max(Math.min(r,u),0);for(var o=u-1,i=0;i1&&(e=Rn(e,r[1])),r=an(n)):(e=qr,r=er(r,!1,!1),n=Object(n));for(var u=0,o=r.length;u1&&(t=r[1])):(r=jr(er(r,!1,!1),String),e=function(n,t){return!Mr(r,t)}),Ur(n,e,t)}));function zr(n,r,t){return i.call(n,0,Math.max(0,n.length-(null==r||t?1:r)))}function Lr(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[0]:zr(n,n.length-r)}function $r(n,r,t){return i.call(n,null==r||t?1:r)}var Cr=j((function(n,r){return r=er(r,!0,!0),xr(n,(function(n){return!Mr(r,n)}))})),Kr=j((function(n,r){return Cr(n,r)}));function Jr(n,r,t,e){A(r)||(e=t,t=r,r=!1),null!=t&&(t=Pn(t,e));for(var u=[],o=[],i=0,a=Y(n);ir?(e&&(clearTimeout(e),e=null),a=c,i=n.apply(u,o),e||(u=o=null)):e||!1===t.trailing||(e=setTimeout(f,l)),i};return c.cancel=function(){clearTimeout(e),a=0,e=u=o=null},c},debounce:function(n,r,t){var e,u,o,i,a,f=function(){var c=Wn()-u;r>c?e=setTimeout(f,r-c):(e=null,t||(i=n.apply(a,o)),e||(o=a=null))},c=j((function(c){return a=this,o=c,u=Wn(),e||(e=setTimeout(f,r),t&&(i=n.apply(a,o))),i}));return c.cancel=function(){clearTimeout(e),e=o=a=null},c},wrap:function(n,r){return nr(r,n)},negate:ar,compose:function(){var n=arguments,r=n.length-1;return function(){for(var t=r,e=n[r].apply(this,arguments);t--;)e=n[t].call(this,e);return e}},after:function(n,r){return function(){if(--n<1)return r.apply(this,arguments)}},before:fr,once:cr,findKey:lr,findIndex:pr,findLastIndex:vr,sortedIndex:hr,indexOf:dr,lastIndexOf:gr,find:br,detect:br,findWhere:function(n,r){return br(n,kn(r))},each:mr,forEach:mr,map:jr,collect:jr,reduce:wr,foldl:wr,inject:wr,reduceRight:Ar,foldr:Ar,filter:xr,select:xr,reject:function(n,r,t){return xr(n,ar(Pn(r)),t)},every:Sr,all:Sr,some:Or,any:Or,contains:Mr,includes:Mr,include:Mr,invoke:Er,pluck:Br,where:function(n,r){return xr(n,kn(r))},max:Nr,min:function(n,r,t){var e,u,o=1/0,i=1/0;if(null==r||\"number\"==typeof r&&\"object\"!=typeof n[0]&&null!=n)for(var a=0,f=(n=tr(n)?n:jn(n)).length;ae||void 0===t)return 1;if(t