-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcommons-0505a6bf3043fc8624f7.js.map
1 lines (1 loc) · 246 KB
/
commons-0505a6bf3043fc8624f7.js.map
1
{"version":3,"file":"commons-0505a6bf3043fc8624f7.js","mappings":";2FAEA,MAAMA,EAAY,YACZC,EAAY,YACZC,EAAkB,0BAClBC,EAAa,yBACbC,EAAa,WAEbC,EAAqB,IAAIC,OAAO,IAAMF,EAAWG,QACjDC,EAA4B,IAAIF,OAAOF,EAAWG,OAASJ,EAAWI,OAAQ,MAC9EE,EAAyB,IAAIH,OAAO,OAASH,EAAWI,OAAQ,MA6ChEG,EAAY,CAACC,EAAOC,KACzB,GAAuB,iBAAVD,IAAsBE,MAAMC,QAAQH,GAChD,MAAM,IAAII,UAAU,gDAiBrB,GAdAH,EAAU,CACTI,YAAY,EACZC,8BAA8B,KAC3BL,GAWiB,KAPpBD,EADGE,MAAMC,QAAQH,GACTA,EAAMO,KAAIC,GAAKA,EAAEC,SACvBC,QAAOF,GAAKA,EAAEG,SACdC,KAAK,KAECZ,EAAMS,QAGLE,OACT,MAAO,GAGR,MAAME,GAAiC,IAAnBZ,EAAQa,OAC3BC,GAAUA,EAAOF,cACjBE,GAAUA,EAAOC,kBAAkBf,EAAQa,QACtCG,GAAiC,IAAnBhB,EAAQa,OAC3BC,GAAUA,EAAOE,cACjBF,GAAUA,EAAOG,kBAAkBjB,EAAQa,QAE5C,GAAqB,IAAjBd,EAAMW,OACT,OAAOV,EAAQI,WAAaY,EAAYjB,GAASa,EAAYb,GAqB9D,OAlBqBA,IAAUa,EAAYb,KAG1CA,EAhFwB,EAACe,EAAQF,EAAaI,KAC/C,IAAIE,GAAkB,EAClBC,GAAkB,EAClBC,GAAsB,EAE1B,IAAK,IAAIC,EAAI,EAAGA,EAAIP,EAAOJ,OAAQW,IAAK,CACvC,MAAMC,EAAYR,EAAOO,GAErBH,GAAmB9B,EAAUmC,KAAKD,IACrCR,EAASA,EAAOU,MAAM,EAAGH,GAAK,IAAMP,EAAOU,MAAMH,GACjDH,GAAkB,EAClBE,EAAsBD,EACtBA,GAAkB,EAClBE,KACUF,GAAmBC,GAAuB/B,EAAUkC,KAAKD,IACnER,EAASA,EAAOU,MAAM,EAAGH,EAAI,GAAK,IAAMP,EAAOU,MAAMH,EAAI,GACzDD,EAAsBD,EACtBA,GAAkB,EAClBD,GAAkB,IAElBA,EAAkBN,EAAYU,KAAeA,GAAaN,EAAYM,KAAeA,EACrFF,EAAsBD,EACtBA,EAAkBH,EAAYM,KAAeA,GAAaV,EAAYU,KAAeA,EAEvF,CAEA,OAAOR,CAAM,EAsDJW,CAAkB1B,EAAOa,EAAaI,IAG/CjB,EAAQA,EAAM2B,QAAQjC,EAAoB,IAGzCM,EADGC,EAAQK,6BAxDwB,EAACN,EAAOa,KAC5CtB,EAAgBqC,UAAY,EAErB5B,EAAM2B,QAAQpC,GAAiBsC,GAAMhB,EAAYgB,MAsD/CvB,CAA6BN,EAAOa,GAEpCA,EAAYb,GAGjBC,EAAQI,aACXL,EAAQiB,EAAYjB,EAAM8B,OAAO,IAAM9B,EAAMyB,MAAM,IAzDjC,EAACzB,EAAOiB,KAC3BpB,EAA0B+B,UAAY,EACtC9B,EAAuB8B,UAAY,EAE5B5B,EAAM2B,QAAQ9B,GAA2B,CAACkC,EAAGC,IAAef,EAAYe,KAC7EL,QAAQ7B,GAAwBmC,GAAKhB,EAAYgB,MAuD5CC,CAAYlC,EAAOiB,EAAY,EAGvCkB,EAAOC,QAAUrC,EAEjBoC,EAAOC,QAAP,QAAyBrC,wBChHzB,OAOC,WACA,aAEA,IAAIsC,IACe,oBAAXC,SACPA,OAAOC,WACPD,OAAOC,SAASC,eAGbC,EAAuB,CAE1BJ,UAAWA,EAEXK,cAAiC,oBAAXC,OAEtBC,qBACCP,MAAgBC,OAAOO,mBAAoBP,OAAOQ,aAEnDC,eAAgBV,KAAeC,OAAOU,aAOrC,KAFD,aACC,OAAOP,CACP,+BAOH,CAhCA,kCCLAN,EAAOC,QAAUa,OAAOC,4qBC8mBxB,MCjmBaC,EAA2BC,IACC,oBAAhCC,kBACP,YAA6BA,iBAACC,UAgBhC,MAAAvB,EAwBEwB,IACgC,IAAAC,EAEhC,MA3BwB,CAExBD,IAA4B,IAAAC,EAAAC,EAAA,OAGrBC,QAAC,MAAAH,GAAA,OAAAC,EAAAD,EAAMI,SAAgB,OAAtBF,EAAAD,EAAcI,eAAA,EAAdH,EAAwBI,IAAG,EALX,CA2BFN,GAErBA,EAtB6B,CAE9BA,GACsCG,QAAQ,MAAAH,OAAA,EAAAA,EAAMO,iBAHtB,CAwBFP,GACfA,EAACO,gBApBY,CAE1BP,GACkCG,QAAQ,MAAAH,OAAA,EAAAA,EAAMQ,aAHtB,CAuBFR,GACfA,EAAKQ,YAEH,MAAAR,GAAiB,OAAjBC,EAAJD,EAAMS,sBAAA,EAANR,EAAuBM,eAAA,EAOI,SAAAG,EAGlCV,EACAC,EACAC,GAIA,MAAMnC,EAA8B,CAAC,EAErC,IAAa4C,EAAG,uBAmBhB,MAXe,UAAXT,GACFnC,EAAa6C,MAAQZ,EACrBjC,EAAa8C,OAASZ,GACF,gBAAXC,IAKTS,EAAA,yDAGK,CACLG,UAAAH,EACA,4BAA+B,GAC/BI,MAAOhD,EAEX,CA0GgB,SAAYiD,EAC1BhB,EACAC,EACAC,EACAnC,EACA4C,GA4BA,YA5BA,IAAAA,IAAAA,EAAuB,CAAC,GAkBnBM,EAAA,GAAAf,EACH,CAAAgB,QAAAnD,EACAoD,WAAYnB,EACZ,kBAAqB,GACrBe,MAAKE,EAAA,GACAN,EAAK,CACRS,QAASnB,EAAW,EAAI,KAK9B,UAOmCoB,EACjCrB,EACAC,EACAC,EACAnC,EACA4C,EACAW,EACAC,EACAC,GAEA,MAAkBC,EAAkB,CAAC,EAEjCH,IACFG,EAAaC,gBAAkBJ,EAEhB,UAAXpB,GACFuB,EAAab,MAAQ7C,EACrB0D,EAAaZ,OAASF,EACtBc,EAAaC,gBAAkBJ,EAC/BG,EAAaE,SAAW,aACJ,gBAAXzB,GAMW,cAAXA,KALTuB,EAAaE,SAAW,WACxBF,EAAaG,IAAM,EACnBH,EAAaI,KAAO,EACpBJ,EAAaK,OAAS,EACtBL,EAAaM,MAAQ,IAUrBR,IACFE,EAAaO,UAAYT,GAGvBC,IACFC,EAAaQ,eAAiBT,GAEhC,MAAYU,EAAAjB,EAAA,GACPjB,EAAW,CACd,eAAc,EACd,yBAA4B,GAC5Be,MACEE,EAAA,CAAAG,QAASnB,EAAW,EAAI,EACxBkC,WAAkC,wBAC/BV,KAeP,OACFS,CAAA,CCrUA,MAAAE,EAAA,aAkEWC,EAA2C,SAAAC,GAGpD,IAHmEC,OACnEtC,EAAMW,MACNV,EAAKW,OACL9C,GAAAuE,EAEA,MAAe,cAAXrC,EAEAD,EAAAA,cAAiB,wBAAAe,MAAO,CAAEyB,WAAgBzE,EAASmC,EAAS,IAAnB,OAI9B,gBAAXD,EAEAD,EAAAA,cAAA,OAAKe,MAAO,CAAE0B,SAAUvC,EAAOwC,QAAS,UACtC1C,EAAAA,cAAA,OACE2C,IAAI,GACJC,KAAK,eACO,qBACZtC,IAAA,qDAA0DvC,EAAA,cAAoBmC,EAAA,sEAC9Ea,MAAO,CACL0B,SAAgB,OAChBC,QAAgB,QAChBf,SAAkB,aAOrB,IACT,EAE0BkB,EAEtB,SAA6C3C,GAAA,IAAtB4C,SAAE/E,GAAoBmC,EAAPS,EAAKoC,EAAA7C,EAAAkC,GAC7C,OACEpC,EAAAA,cAACC,EAAAA,SAAQ,KACPD,EAAAA,cAACqC,EAAUpB,EAAA,GAAAN,IACV5C,EAEmC,KAG1C,EAAAiF,EAAA,8CAAAC,EAAA,oCC1EWC,EAAkC,SAAcjD,GAAA,IAACK,IAC1DJ,EAAGiD,OACHpF,EAAMmD,QACNP,EAAOgC,IACPrB,EAAQ,GAAAH,WACRI,GACGtB,EAAAuB,EAEHuB,EAAA9C,EAAA+C,GAAA,OACEhD,EAAAA,cAAA,MAAAiB,EAAA,GACMO,EAAK,CACT4B,SAAS,QACTlC,QAASP,EACTL,IAAKiB,EAAarB,OAAA,EAAe,WACtBqB,OAAA,EAAarB,EACxBiD,OAAQ5B,EAAaxD,OAAA,EACR,cAACwD,OAAA,EAAaxD,EAC3B4E,IAAKrB,IAGX,EAEoB+B,EAA2B,SAAgBpD,GAAC,IAAAI,SAC9DH,EAAQoD,QACRvF,EAAU,GAAEoD,WACZR,GAAA,GAEDV,EADIqB,EAEHyB,EAAA9C,EAAAgD,GAAA,MAAA1B,EAAcD,EAAMiC,QAAS,MAAArD,OAAA,EAAAA,EAAUqD,OAAA/B,EAErCxB,EAAAA,cAACkD,EAAUjC,EAAA,GAAAK,EAAWpB,EAAU,CAAAqD,MAAOhC,EAAOJ,WAAYR,KAG5D,OAAK5C,EAAQX,OAAA4C,EAAAA,cAKX,eACGjC,EAAQf,KAAIwG,IAAA,IAAGC,MAAAxD,EAAOkD,OAAAjD,EAAQwD,KAAA3F,GAAAyF,EAAA,OAC7BxD,EAAAA,cAAA,UACE2D,IAAQ1D,EAAA,IAASlC,EAAA,IAAQmC,EACzBwD,KAAM3F,EACN0F,MAAOxD,EACPkD,OAAQxC,EAAaT,OAAA,EACR,cAACS,OAAA,EAAaT,EAC3BqD,MAAOhC,GAAA,IAGVC,GAAAA,CAGP,ECvFA,IAAAoC,EDyFAV,EAAMW,UAAY,CAChBvD,IAAK4B,EAAAA,OAAiB4B,WACtBnB,IAAKT,EAAAA,OAAiB4B,WACtBP,MAAOrB,EAAAA,OACPiB,OAAQjB,EAAAA,OACRf,WAAYe,EAAAA,MAGdmB,EAAQU,YAAc,UACtBV,EAAQQ,UAAY,CAClBlB,IAAKT,EAAAA,OAAiB4B,WACtB3C,WAAYe,EAAAA,KACZ7B,SAAU6B,EAAAA,MAAgB,CACxB5B,IAAK4B,EAAAA,OAAiB4B,WACtBX,OAAQjB,EAAAA,OACRqB,MAAOrB,EAAAA,SAEToB,QAASpB,EAAAA,QACPA,EAAAA,UAAoB,CAClBA,EAAAA,MAAgB,CACduB,MAAOvB,EAAAA,OAAiB4B,WACxBJ,KAAMxB,EAAAA,OACNqB,MAAOrB,EAAAA,OACPiB,OAAQjB,EAAAA,OAAiB4B,aAE3B5B,EAAAA,MAAgB,CACduB,MAAOvB,EAAAA,OACPwB,KAAMxB,EAAAA,OAAiB4B,WACvBP,MAAOrB,EAAAA,OACPiB,OAAQjB,EAAAA,OAAiB4B,iBCtHjC,MAAAE,EAAA,aASaC,EACX,SAAoBhE,GAAC,IAAAI,SAAEH,GAAaD,EAAAlC,EAAAgF,EAAA9C,EAAA+D,GAClC,OAAI9D,EAEAF,EAAAA,cAACqD,EACKpC,EAAA,GAAAlD,EACJ,CAAAsC,SAAU,CACRC,IAAKJ,GACN,iBAEDyC,IAAI,MAAA3C,EAAAA,cAID,MAASiB,EAAA,GAAAlD,GAEpB,EAEFkG,EAAYF,YAAc,cAC1BE,EAAYJ,UAAY,CACtBxD,SAAU6B,EAAAA,OACVoB,QAA0B,OAAnBM,EAAEP,EAAQQ,gBAAA,EAARD,EAAmBN,QAC5BX,IAAK,SAAU3C,EAAOC,EAAUC,GAC9B,OAAKF,EAAMC,GAIJ,IAASiE,MAAC,iBACGjE,EAAA,kBAA4BC,EAAA,yBAH/C,IAKH,GClCW,MAAAiE,EAAoC,SAAmBlE,GAClE,OACED,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACqD,EAAYpC,EAAA,GAAAhB,IACbD,EAAAA,cAAA,gBACEA,EAAAA,cAACqD,EAAYpC,EAAA,GAAAhB,EAAA,CAAOkB,YAAA,MAI5B,EAEAgD,EAAUJ,YAAc,YACxBI,EAAUN,UAAYR,EAAQQ,UAAA,MAAAO,EAAA,8HAAAC,EAAA,sBCRxBC,EAAkBtE,GAAwBA,EAAI5B,QAAQ,MAAO,IAmHtDmG,EAA4C,SACvDvE,EACAC,EACAC,GAAA,QAAAsE,EAAAC,UAAArH,OACGW,EAAA,IAAApB,MAAA6H,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAA3G,EAAA2G,EAAA,GAAAD,UAAAC,GAAA,OAEE1E,EAAM2C,KAAqB,KAAd3C,EAAM2C,IAMRgC,IAAAA,OAACC,MAADD,IAAA,CAAQ3E,EAAOC,EAAUC,GAAA2E,OAAkB9G,IALlD,IAAAmG,MAAA,iCAC4BhE,EAAA,4JAOjB4E,EAAG,CACvBC,MAAOJ,IAAAA,OAAiBb,WACxBnB,IAAK4B,GC7IPS,EAAA,8FAAAC,EAAA,sBAAAC,EA4BmB,IAAAC,IACnB,IAA8BC,EACyBC,EAgCvD,MAAMC,EAA4C,SAWjDtF,GAAA,IAX8EuF,GAC7EtF,EAAU,MAAA8E,MACV7E,EAAKa,MACLU,EAAKC,gBACLQ,EAAepB,UACf6D,EACAa,MAAOC,EAAWC,YAClBC,EAAWC,OACXlH,EAAMmH,QACNC,GAED9F,EADI+F,EAEHhD,EAAA/C,EAAAgF,GAAA,MAAMpE,MAAEoF,EAAKnF,OAAEoF,EAAM1D,OAAE2D,GAAWhG,EAAAiG,EAK9BzF,EAAgBsF,EAAOC,EAAQC,IAHjCnF,MAAOqF,EACPtF,UAAWuF,GACRF,EAAAG,EAAAvD,EAAAoD,EAAAlB,GAECsB,GAAO5F,EAAAA,EAAAA,UAAA6F,GACIlF,EAAAA,EAAAA,UAAQ,IAAMmF,KAAKC,UAAUxG,EAAME,SAAS,CAACF,EAAME,SAGhEqF,IACFd,EAAYc,GAGd,MAAWkB,EAAA,SLxCX3G,EACAC,EACAC,GAEA,IAASnC,EAAG,GAWZ,MAVe,cAAXiC,IACFjC,EAAA,+CACGmC,EAASD,EAAS,kBAIR,gBAAXD,IACFjC,EAAA,0BAAkCkC,EAAA,mIAAuIC,EAAA,cAAoBD,EAAA,6IAGxLlC,CACT,CKwBa,CAAYmI,EAAQF,EAAOC,GA+HtC,OA7HA1E,EAAAA,EAAAA,YAAU,KACH6D,IACHA,EAA6B,8BAAyBwB,MACpDC,IAAA,IAAGC,oBAAA9G,EAAqB+G,qBAAA9G,GAAA4G,EAAA,OACtBxB,EAAcrF,EAEP,CACL8G,oBAAA9G,EACA+G,qBAAA9G,EAAA,KAQR,MAAMD,EAAWuG,EAAKS,QAAQC,cACH,2BAE3B,GAAIjH,GAAYJ,IAkCd,OAjCII,EAASkH,UAAA,MAEXvB,GAAAA,EAAc,CACZwB,WAAA,IAAW,MAEbzI,GAAAA,EAAS,CACPyI,WAAA,IAIFC,YAAW,KACTpH,EAASqH,gBAAgB,2BACxB,KAEQ,MAAX1B,GAAAA,EAAc,CACZwB,WAAA,IAGFnH,EAASV,iBAAuB,QAAE,SAAAW,IAChCD,EAASsH,oBAAA,OAA4BrH,GAE/B,MAANvB,GAAAA,EAAS,CACPyI,WAAA,IAGFC,YAAW,KACTpH,EAASqH,gBAAgB,wBAAuB,GAC/C,EACL,UAGFnC,EAAWqC,IAAIf,GAKjB,GAAInB,GAAeH,EAAWsC,IAAIhB,GAChC,OAGF,IAAIvG,EACAlC,EAiCJ,OAhCAqH,EAA2BwB,MACzBa,IAAwB,IAArBX,oBAAA9G,EAAqB+G,qBAAApG,GAAA8G,EACjBlB,EAAKS,UAIVT,EAAKS,QAAQU,UAAY1H,EAAAiB,EAAA,CACvB0G,WAAA,EACAC,SAAU1C,EAAWsC,IAAIhB,GACzBzB,MAAA7E,GACG6F,IAGAb,EAAWsC,IAAIhB,KAClBvG,EAAiB4H,uBAAsB,KACjCtB,EAAKS,UACPjJ,EAAkB4C,EAChB4F,EAAKS,QACLR,EACAtB,EACAzD,EACAkE,EACAjH,EACAoH,GAEH,KAEJ,IAKE,KACD7F,GACF6H,qBAAqB7H,GAEnBlC,GACFA,GACD,CACH,GACC,CAACmC,KAGJsB,EAAAA,EAAAA,kBAAgB,KACV0D,EAAWsC,IAAIhB,IAAanB,IAC9BkB,EAAKS,QAAQU,UAAYrC,EACvBpE,EAAA,CAAA0G,UAAWzC,EAAWsC,IAAIhB,GAC1BoB,SAAU1C,EAAWsC,IAAIhB,GACzBzB,MAAA7E,GACG6F,IAAA,MAILJ,GAAAA,EAAc,CACZwB,WAAA,IAAW,MAEbzI,GAAAA,EAAS,CACPyI,WAAA,IAEH,GACA,CAACjH,KAGGnC,EAAAA,EAAAA,eAAckC,EAAAgB,EAAA,GAChBqF,EAAY,CACfvF,MAAKE,EAAA,GACAmF,EACA3E,EACH,CAAAC,gBAAAQ,IAEFpB,UAAcuF,GAAS1B,EAAA,IAAgBA,EAAA,IACvCoD,IAAKxB,EACLyB,wBAAyB,CACvBC,OAAQtB,GAEVuB,0BAAA,IAEJ,EAEwBC,GAAwCjI,EAAAA,EAAAA,OAC9D,SAAqBF,GACnB,OAAKA,EAAM+E,OAcJhH,EAAAA,EAAAA,eAAcuH,EAAqBtF,GARzC,IASH,IAGFmI,EAAYtE,UAAYiB,EACxBqD,EAAYpE,YAAc,cC5P1B,MAAAqE,EAAA,mPAsBgB,SAAAC,EACdpI,GAEA,OAAgB,SAuBfC,GAAA,IAvB2BI,IAC1BvC,EACAuK,YAAa3H,EAAS4H,QACtBjH,GAmBGpB,EAAAqB,EAEHwB,EAAA7C,EAAAkI,GAIA,OAJI9G,GACFkH,QAAQC,KAAKnH,GAGXX,EACKX,EAAAA,cAACC,EAAYgB,EAAA,CAAA8D,MAAOpE,GAAeY,KAE5CiH,QAAQC,KAAA,mBAAyB1K,GAOnC,MACF,CAEA,MAAiB2K,EACfL,GFvDA,SAAoBpI,GAAA,IAACsF,GACnBrF,EAAA,MAAUY,UACV/C,EACAyH,MAAO7E,EAAWI,MAClBO,EAAKyD,MACLxD,EAAKL,QACLM,EAAgB,OAAAmH,aAChBlH,EAAYmH,SACZ1G,EAAQR,gBACRiD,EAAe3C,UACfyD,EAASxD,eACT0D,GAAA1F,EACGvB,EAAKqE,EAAA9C,EAAAmE,GAER,IAAK7C,EAEH,OADAiH,QAAQC,KAAK,4CACN,KAGL9H,IACF5C,EAAY4C,GAGduB,EAAAjB,EAAA,CACEe,UAAAyD,EACAxD,eAAA0D,EACAjE,gBAAAiD,GACGzC,GAGL,MAAMtB,MACJkF,EAAKjF,OACLkF,EAAMxD,OACNyD,EAAM5F,OACN6F,EAAM4C,YACN3C,EACAxE,gBAAiByE,GACf5E,EAMA6E,EAAA1F,EAAgBoF,EAAOC,EAAQC,IAHjCjF,MAAOsF,EACPvF,UAAWwF,GACRF,EAAAG,EAAAxD,EAAAqD,EAAA/B,GAGCmC,EAA4C,CAChDnG,cAAA,EACAiD,QAAS,IAoBX,OAlBI2C,EAAO5F,WACTmG,EAAcnG,SAAQY,EAAA,GACjBgF,EAAO5F,SAAA,CACV8C,OAAQ8C,EAAO5F,SAAS8C,OACpBmB,EAAe2B,EAAO5F,SAAS8C,aAAA,KAKnC8C,EAAO3C,UACTkD,EAAclD,QAAU2C,EAAO3C,QAAQtG,KAAIgD,GAAAiB,EAAA,GAEpCjB,EAAM,CACTmD,OAAQmB,EAAetE,EAAOmD,aAAAnD,EAAAA,cAMlCE,EAEKe,EAAA,GAAAsF,EAAA,CACHxF,MAAKE,EAAA,GACAoF,EACA/E,EAAK,CACRI,gBAAAiD,IAEF7D,UAAcwF,GAASvI,EAAA,IAAgBA,EAAA,MAEzCiC,EAAAA,cAAC6C,EAAc,CAAAN,OAAQyD,EAAQpF,MAAOkF,EAAOjF,OAAQkF,GACnD/F,EAAAA,cAACiE,EAAWhD,EAAA,GACNI,EACF6E,GAAA,EAEAF,EACAF,EACAC,EACAI,EACAV,EACAE,KAIJ3F,EAAAA,cAACmE,EACuBlD,EAAA,4BACtBH,UAAWW,GACN/C,EAKDsC,EACU,UAAZQ,GAAA,EAEAgF,EACAhF,EACAU,MAKV,IErDuB4G,EAAgC,SACvD9I,EACAC,GAAA,QAAA8I,EAAAtE,UAAArH,OACG8C,EAAA,IAAAvD,MAAAoM,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAA9I,EAAA8I,EAAA,GAAAvE,UAAAuE,GAAA,MAG2B,cAA5BhJ,EAAMuC,QACQ,UAAbtC,GAAA,WAAwBA,IACzBD,EAAMC,GAAA0E,IAAAA,OAMSC,MANTD,IAAA,CAMgB3E,EAAOC,GAAA4E,OAAa3E,IAJnC,IAASgE,MAAC,IACXjE,EAAA,KAAaD,EAAMC,GAAA,iDAMXgJ,EAAG,IAAI9D,IAAI,CAAQ,QAAa,YAAe,gBAEpD+D,EAAY,CACvB5I,IAAKqE,IAAAA,OAAiBb,WACtBnB,IAAK4B,EACL3D,MAAOkI,EACPjI,OAAQiI,EACRvF,MAAOoB,IAAAA,OACPpC,OAASvC,IACP,YAAIA,EAAMuC,SAGN0G,EAAazB,IAAIxH,EAAMuC,QAI3B,OAAW,IAAA2B,MAAA,iBACQlE,EAAMuC,OAAA,qHAA0H,GAKvJmG,EAAY3E,YAAc,cAC1B2E,EAAY7E,UAAYqF,EC7FlB,MAAAC,EACJd,EAAgBF,GAElBgB,EAAYpF,YAAc,cAC1BoF,EAAYtF,UAAYqF,6FCVxB,MAAME,EAAgDC,IAK/C,IALgD,UACrDvI,EAAY,GAAE,SACdwI,GAAW,EAAI,KACfC,EAAI,GACJC,GACDH,EACC,OAAOC,EACLG,EAAAA,cAACC,EAAAA,GAAI,CAACF,GAAIA,EAAI1I,UAAWA,GACtByI,GAGHE,EAAAA,cAAA,KAAGE,KAAMH,EAAI1I,UAAWA,EAAW8I,OAAO,SAASC,IAAI,cACpDN,EAEJ,EAGH,OAAeO,EAAAA,EAAAA,MAAKV,GCapB,MAxBkEC,IAI3D,IAJ4D,MACjEU,EAAK,KACLC,EAAI,UACJlJ,EAAY,IACbuI,EACC,OAAKW,EAAK5M,OAGRqM,EAAAA,cAAAA,EAAAA,SAAA,KACGO,EAAKhN,KAAIiN,IAAA,IAAC,SAAEX,EAAQ,IAAEY,EAAG,KAAEX,EAAMQ,MAAOI,GAAQF,EAAA,OAC/CE,EAAOC,SAASL,GACdN,EAAAA,cAACY,EAAc,CACb1G,IAAKuG,EACLX,KAAMA,EACNC,GAAIU,EACJZ,SAAUA,EACVxI,UAAS,mBAAqBA,IAE9B,IAAI,KAbW,IAepB,wJCNP,IAAIwJ,EAAgB,KACb,MAAMC,EAAkBA,KAC7B,GAAID,EAAe,OAAOA,EAE1B,MAAM,KAAEE,EAAI,KAAEC,EAAI,MAAEC,IAAUC,EAAAA,EAAAA,IAAe,aAmD7C,OANAL,EAAgB,IACXE,EAAKI,aACRH,KAAMA,QAAAA,EAAQ,CAAC,EACfC,MAAOA,QAAAA,EAAS,CAAC,GAGZJ,CAAa,gBCpEf,MAAMO,EAA4CA,KACvD,MAAQC,mBAAmB,MAAEC,EAAK,YAAEC,EAAW,SAAEC,GAAU,UAAEC,GAAcX,KACrE,EAACY,EAAO,EAACC,IAAaC,EAAAA,EAAAA,WAAS,GAE/BC,EAAcJ,EAAUK,MAAM5K,GAAMA,EAAE4I,KAAKiC,MAAM,mBACjDC,EAAYP,EAAUK,MAAM5K,GAAMA,EAAE4I,KAAKiC,MAAM,cAoBrD,OANAE,EAAAA,EAAAA,kBAAgB,KACT3M,OAAO4M,aAAaC,QAAQC,EAAAA,KAC/BT,GAAU,EACZ,IAIA3B,EAAAA,cAAA,OAAK3I,UAAU,iDACb2I,EAAAA,cAAA,OAAK3I,UAAS,2BAA4BqK,EAAS,OAAS,KAC1D1B,EAAAA,cAAA,MAAI3I,UAAU,sBAAuBiK,GAASe,EAAAA,IAC9CrC,EAAAA,cAAA,KAAG3I,UAAU,gBACTkK,GAAee,EAAAA,KAEjBT,GAAeG,IACfhC,EAAAA,cAAA,KAAG3I,UAAU,+BACX2I,EAAAA,cAAA,YAAQwB,GAAYe,EAAAA,IACnBV,GAAe7B,EAAAA,cAACC,EAAAA,GAAI,CAAC5I,UAAU,sBAAsB0I,GAAI8B,EAAYpB,KAAMoB,EAAY/B,MACvFkC,GAAahC,EAAAA,cAACC,EAAAA,GAAI,CAAC5I,UAAU,sBAAsB0I,GAAIiC,EAAUvB,KAAMuB,EAAUlC,OAGtFE,EAAAA,cAAA,OAAK3I,UAAU,wBACb2I,EAAAA,cAAA,UAAQ3I,UAAU,eAAemL,QAjCrBC,KACdnN,OAAO4M,aAAaC,QAAQC,EAAAA,MAIhC9M,OAAO4M,aAAaQ,QAAQN,EAAAA,GAAyB,QAErDzE,YAAW,KACTgE,GAAU,EAAM,GACf,GAAE,GAwBwD,WAKvD,EAIGgB,EAAkBA,MAC7BV,EAAAA,EAAAA,kBAAgB,KACd,IAAIW,EAAerN,SAASsN,eAAeC,EAAAA,IAEtCF,IACHA,EAAerN,SAASC,cAAc,OACtCoN,EAAaG,GAAKD,EAAAA,IAGpBE,EAAAA,OAAgBhD,EAAAA,cAACoB,EAAY,MAAK7L,SAAS0N,KAAKC,YAAYN,GAAc,GACzE,GAAG,gBCzER,MAAMO,EAAS,CAAC,UAAW,QAAS,WAEvBC,EAAmB,SAC9BC,EACAC,EACAC,EACAC,QAHsB,IAAtBH,IAAAA,EAAyB9N,SAAS0N,WACvB,IAAXK,IAAAA,EAAc,QACF,IAAZC,IAAAA,EAAe,QACA,IAAfC,IAAAA,EAAkB,IAMlB,MAAM,EAACpL,EAAK,EAACqL,IAAW7B,EAAAA,EAAAA,UAAiB,IACnC,EAACzJ,EAAI,EAACuL,IAAU9B,EAAAA,EAAAA,UAAiB,IACjC,EAAC+B,EAAY,EAACC,IAAkBhC,EAAAA,EAAAA,UAAiB,IAEjDiC,EAAsBtN,IAC1BoH,YAAW,KACT,MAAM,EACJnK,EAAC,EACD+I,EAAC,MACDpF,EAAK,OACLC,EACAuM,YAAaG,IACXC,EAAAA,EAAAA,MAEJ,IAAIC,EAAe,EACfX,IACFW,EACEX,EAAUY,wBAAwB1H,EAClC8G,EAAUa,UACVX,GAEJ,IAAInL,EACFhB,EAASoM,EACJjN,EAAE4J,OAAuBgE,WACzB5N,EAAE4J,OAAuBiE,YAAc,EACxCd,EACA9P,EAAI2D,EAAQ,EAAImM,EAClBnL,EAAMoE,EAAIyH,EAETF,IACH1L,EAAOD,GAAO,MAGhBsL,EAAQrL,IAAS,MACjBsL,EAAOvL,IAAQ,MACfyL,EAAeE,EAAa,GAC3B,EAAE,EAGDO,GAAUC,EAAAA,EAAAA,aAAYT,EAAoB,CAC9CR,EACAC,EACAC,IAmBF,OAhBAgB,EAAAA,EAAAA,YAAU,KACRjP,OAAOO,iBAAiB,SAAUgO,GAElCV,EAAOqB,SAASC,IACdpB,EAAUxN,iBAAiB4O,EAAOJ,EAAQ,IAGrC,KACL/O,OAAOuI,oBAAoB,SAAUwG,GAErClB,EAAOqB,SAASC,IACdpB,EAAUxF,oBAAoB4G,EAAOJ,EAAQ,GAC7C,IAEH,CAAChB,EAAWC,EAAaC,IAErB,CAAEnL,OAAMD,MAAKwL,cACtB,kHCtEA,MAAMe,EAA2BA,KAC/B,MAAM,EAACC,EAAO,EAACC,IAAWhD,EAAAA,EAAAA,WAASiD,EAAAA,EAAAA,OAOnC,OACE7E,EAAAA,cAAA,UAAQwC,QANYsC,MACpBC,EAAAA,EAAAA,KAAYJ,GACZC,GAASD,EAAO,EAIgBtN,UAAU,aACvCsN,EACC3E,EAAAA,cAACgF,EAAAA,IAAS,CAAC3N,UAAU,0BAErB2I,EAAAA,cAACiF,EAAAA,IAAe,CAAC5N,UAAU,0BAEtB,EAIb,OAAegJ,EAAAA,EAAAA,MAAKqE,aC1BhBQ,EAAkC,SAAUnN,EAAGD,GAC/C,IAAI7C,EAAsB,mBAAXkQ,QAAyBpN,EAAEoN,OAAOC,UACjD,IAAKnQ,EAAG,OAAO8C,EACf,IAAmBF,EAAYtB,EAA3BjC,EAAIW,EAAEoQ,KAAKtN,GAAOuN,EAAK,GAC3B,IACI,WAAc,IAANxN,GAAgBA,KAAM,MAAQD,EAAIvD,EAAEiR,QAAQC,MAAMF,EAAGG,KAAK5N,EAAE6N,MACxE,CACA,MAAOC,GAASpP,EAAI,CAAEoP,MAAOA,EAAS,CACtC,QACI,IACQ9N,IAAMA,EAAE2N,OAASvQ,EAAIX,EAAU,SAAIW,EAAEoQ,KAAK/Q,EAClD,CACA,QAAU,GAAIiC,EAAG,MAAMA,EAAEoP,KAAO,CACpC,CACA,OAAOL,CACX,EACWM,EAAgB,SAAU5S,GAEjC,OADiBA,EAAM6S,MAAM,SACXC,QAAO,SAAUC,EAAKtN,GACpC,IAAIuN,EAAKd,EAAOzM,EAAEoN,MAAM,SAAU,GAAI3L,EAAM8L,EAAG,GAAIN,EAAQM,EAAG,GAM9D,OALI9L,GAAOwL,IACPK,EAAI7L,EAAIvF,QAAQ,UAAU,SAAUsR,EAAKC,GAAM,OAAOA,EAAGjS,aAAe,KAAMkS,OAAOC,MAAMD,OAAOT,IAC5FA,EACAS,OAAOT,IAEVK,CACX,GAAG,CAAC,EACR,EAWO,IAAIM,EAAmB,CAC1B,KACA,MACA,WACA,KACA,KACA,SACA,MACA,QACA,OACA,WACA,OACA,KACA,QACA,SACA,QACA,QACA,QACA,QACA,KACA,KACA,OAUOC,EAAwB,CAE/B,iBAAkB,gBAClBC,cAAe,gBACfC,UAAW,YACXC,gBAAiB,kBACjBC,eAAgB,iBAChBC,aAAc,eACdC,YAAa,cACbC,UAAW,YACXC,SAAU,WACVC,SAAU,WACVC,YAAa,cACbC,YAAa,cACbC,QAAS,UACTnL,MAAO,YACPoL,QAAS,UACTC,UAAW,YACXC,QAAS,UACTC,gBAAiB,kBACjBC,YAAa,cACbC,aAAc,eACdC,YAAa,cACbC,wBAAyB,0BACzBC,SAAU,WACVC,eAAgB,iBAChBC,aAAc,eACdC,QAAS,UACTC,IAAK,UACLC,WAAY,aACZC,WAAY,aACZC,YAAa,cACbC,eAAgB,iBAChBC,WAAY,aACZC,YAAa,cACbC,SAAU,WACVC,QAAS,UACTC,UAAW,YACX,aAAc,YACdxH,KAAM,OACNyH,UAAW,YACXC,UAAW,YACXC,OAAQ,SACRC,SAAU,WACVC,QAAS,UACTC,UAAW,YACXC,SAAU,WACVC,UAAW,YACXC,QAAS,UACTC,YAAa,cACbC,aAAc,eACdC,UAAW,YACXC,WAAY,aACZC,UAAW,YACXC,SAAU,WACVC,WAAY,aACZC,YAAa,cACbC,WAAY,aACZC,SAAU,WACVC,eAAgB,iBAChBC,QAAS,UACTC,WAAY,aACZC,OAAQ,SACRC,QAAS,UACTC,OAAQ,SACRC,SAAU,WACVC,cAAe,gBACfC,OAAQ,SAERC,aAAc,eACd,gBAAiB,eACjBC,kBAAmB,oBACnB,qBAAsB,oBACtBC,aAAc,eACdC,WAAY,aACZ,cAAe,aACfC,cAAe,gBACfC,cAAe,gBACfC,YAAa,cACbC,cAAe,gBACfC,cAAe,gBACf,iBAAkB,gBAClBC,YAAa,cACbC,SAAU,WACVC,UAAW,YACX,aAAc,YACdC,SAAU,WACV,YAAa,WACbC,cAAe,gBACfC,SAAU,WACV,YAAa,WACbC,mBAAoB,qBACpB,sBAAuB,qBACvBC,0BAA2B,4BAC3B,8BAA+B,4BAC/BC,aAAc,eACd,gBAAiB,eACjBC,eAAgB,iBAChB,kBAAmB,iBACnBC,kBAAmB,oBACnBC,iBAAkB,mBAClBC,gBAAiB,kBACjBC,iBAAkB,mBAClB,oBAAqB,mBACrBC,SAAU,WACVC,iBAAkB,mBAClB,oBAAqB,mBACrBC,0BAA2B,4BAC3BC,YAAa,cACb,eAAgB,cAChBC,SAAU,WACV,YAAa,WACbC,UAAW,YACXC,YAAa,cACbC,aAAc,eACd,gBAAiB,eACjBC,WAAY,aACZ,cAAe,aACfC,WAAY,aACZ,cAAe,aACfC,SAAU,WACV,YAAa,WACbC,eAAgB,iBAChB,mBAAoB,iBACpBC,YAAa,cACb,eAAgB,cAChBC,UAAW,YACX,aAAc,YACdC,YAAa,cACb,eAAgB,cAChBC,WAAY,aACZ,cAAe,aACfC,UAAW,YACX,aAAc,YACdC,2BAA4B,6BAC5B,+BAAgC,6BAChCC,yBAA0B,2BAC1B,6BAA8B,2BAC9BC,SAAU,WACVC,kBAAmB,oBACnBC,cAAe,gBACfC,UAAW,YACX,cAAe,YACfC,aAAc,eACd,iBAAkB,eAClBC,eAAgB,iBAChB,kBAAmB,iBACnBC,aAAc,eACdC,iBAAkB,mBAClBC,UAAW,YACXC,WAAY,aACZC,SAAU,WACVC,aAAc,eACdC,cAAe,gBACf,iBAAkB,gBAClBC,cAAe,gBACf,iBAAkB,gBAClBC,kBAAmB,oBACnBC,UAAW,YACX,aAAc,YACdC,aAAc,eACdC,UAAW,YACX,aAAc,YACdC,YAAa,cACb,eAAgB,cAChBC,YAAa,cACbC,YAAa,cACbC,iBAAkB,mBAClBC,UAAW,YACXC,WAAY,aACZC,iBAAkB,mBAClB,oBAAqB,mBACrBC,kBAAmB,oBACnB,qBAAsB,oBACtBC,WAAY,aACZ,cAAe,aACf,WAAY,UACZC,WAAY,aACZC,oBAAqB,sBACrBC,iBAAkB,mBAClBC,aAAc,eACdC,cAAe,gBACf,iBAAkB,gBAClBC,UAAW,YACXC,UAAW,YACXC,UAAW,YACXC,cAAe,gBACfC,oBAAqB,sBACrBC,eAAgB,iBAChBC,KAAM,OACNC,KAAM,OACNC,gBAAiB,kBACjB,mBAAoB,kBACpBC,YAAa,cACbC,UAAW,YACXC,mBAAoB,qBACpBC,iBAAkB,mBAClBC,eAAgB,iBAChB,kBAAmB,iBACnBC,iBAAkB,mBAClBC,iBAAkB,mBAClBC,aAAc,eACdC,YAAa,cACbC,aAAc,eACdC,YAAa,cACbC,UAAW,YACX,aAAc,YACdC,YAAa,cACb,eAAgB,cAChBC,sBAAuB,wBACvB,yBAA0B,wBAC1BC,uBAAwB,yBACxB,0BAA2B,yBAC3BC,gBAAiB,kBACjB,mBAAoB,kBACpBC,iBAAkB,mBAClB,oBAAqB,mBACrBC,cAAe,gBACf,iBAAkB,gBAClBC,eAAgB,iBAChB,kBAAmB,iBACnBC,iBAAkB,mBAClB,oBAAqB,mBACrBC,YAAa,cACb,eAAgB,cAChBC,cAAe,gBACf,iBAAkB,gBAClBC,+BAAgC,iCAChCC,yBAA0B,2BAC1BC,aAAc,eACdC,eAAgB,iBAChBC,YAAa,cACbC,QAAS,UACTC,QAAS,UACTC,WAAY,aACZ,cAAe,aACfC,eAAgB,iBAChB,kBAAmB,iBACnBC,WAAY,aACZC,cAAe,gBACf,iBAAkB,gBAClBC,kBAAmB,oBACnB,qBAAsB,oBACtBC,mBAAoB,qBACpB,sBAAuB,qBACvBC,YAAa,cACb,eAAgB,cAChBC,aAAc,eACd,gBAAiB,eACjBC,WAAY,aACZ,eAAgB,aAChBC,aAAc,eACdC,YAAa,cACb,eAAgB,cAChBC,aAAc,eACd,gBAAiB,eACjBC,SAAU,WACV,aAAc,WACdC,YAAa,cACb,gBAAiB,cACjBC,YAAa,cACb,gBAAiB,cACjBC,SAAU,WACV,YAAa,WACbC,aAAc,eACd,gBAAiB,eACjBC,QAAS,UACTC,WAAY,aACZC,cAAe,gBACf,iBAAkB,gBAClBC,YAAa,cACb,eAAgB,cAChBC,YAAa,cACb,eAAgB,cAChBC,iBAAkB,mBAClBC,QAAS,UACT,WAAY,UACZC,aAAc,eACd,gBAAiB,eACjBC,aAAc,eACd,gBAAiB,eACjBC,UAAW,YACX,aAAc,YACdC,UAAW,YACX,aAAc,YACdC,UAAW,YACX,aAAc,YACdC,WAAY,aACZ,cAAe,aACfC,UAAW,YACX,aAAc,YACdC,QAAS,UACT,WAAY,UACZC,QAAS,UACT,WAAY,UACZ,YAAa,WACbC,WAAY,aACZ,cAAe,aACfC,SAAU,WACVC,iBAAkB,mBAClBC,WAAY,aAEZC,OAAQ,SACRC,SAAU,WACVC,QAAS,UACTC,cAAe,gBACfC,cAAe,gBACfC,OAAQ,SACRC,UAAW,YACXC,YAAa,cACbC,WAAY,aACZC,YAAa,cACbC,WAAY,aACZC,YAAa,cACbC,OAAQ,SACRC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,UAAW,YACXC,UAAW,YACXC,WAAY,aACZC,QAAS,UACTC,OAAQ,SACRC,YAAa,cACbC,aAAc,eACdC,aAAc,eACdC,YAAa,cACbC,WAAY,aACZC,YAAa,cACbC,UAAW,YACXC,SAAU,WACVC,SAAU,WACVC,cAAe,gBACfC,WAAY,aACZC,YAAa,cACbC,aAAc,eACdC,QAAS,WCrZTC,EAAsC,WAStC,OARAA,EAAW5f,OAAOC,QAAU,SAASM,GACjC,IAAK,IAAIU,EAAG5C,EAAI,EAAGwD,EAAIkD,UAAUrH,OAAQW,EAAIwD,EAAGxD,IAE5C,IAAK,IAAI4H,KADThF,EAAI8D,UAAU1G,GACO2B,OAAOK,UAAUwf,eAAezQ,KAAKnO,EAAGgF,KACzD1F,EAAE0F,GAAKhF,EAAEgF,IAEjB,OAAO1F,CACX,EACOqf,EAAS1a,MAAM4a,KAAM/a,UAChC,EACI,EAAkC,SAAUjD,EAAGD,GAC/C,IAAI7C,EAAsB,mBAAXkQ,QAAyBpN,EAAEoN,OAAOC,UACjD,IAAKnQ,EAAG,OAAO8C,EACf,IAAmBF,EAAYtB,EAA3BjC,EAAIW,EAAEoQ,KAAKtN,GAAOuN,EAAK,GAC3B,IACI,WAAc,IAANxN,GAAgBA,KAAM,MAAQD,EAAIvD,EAAEiR,QAAQC,MAAMF,EAAGG,KAAK5N,EAAE6N,MACxE,CACA,MAAOC,GAASpP,EAAI,CAAEoP,MAAOA,EAAS,CACtC,QACI,IACQ9N,IAAMA,EAAE2N,OAASvQ,EAAIX,EAAU,SAAIW,EAAEoQ,KAAK/Q,EAClD,CACA,QAAU,GAAIiC,EAAG,MAAMA,EAAEoP,KAAO,CACpC,CACA,OAAOL,CACX,EACI0Q,EAAgD,SAAUjW,EAAIkW,EAAMC,GACpE,GAAIA,GAA6B,IAArBlb,UAAUrH,OAAc,IAAK,IAA4B2R,EAAxBhR,EAAI,EAAG0D,EAAIie,EAAKtiB,OAAYW,EAAI0D,EAAG1D,KACxEgR,GAAQhR,KAAK2hB,IACR3Q,IAAIA,EAAKpS,MAAMoD,UAAU7B,MAAM4Q,KAAK4Q,EAAM,EAAG3hB,IAClDgR,EAAGhR,GAAK2hB,EAAK3hB,IAGrB,OAAOyL,EAAG3E,OAAOkK,GAAMpS,MAAMoD,UAAU7B,MAAM4Q,KAAK4Q,GACtD,EAwEO,SAASE,EAAgBnjB,EAAOC,GACnC,IAAI+S,EAEJ,QADgB,IAAZ/S,IAAsBA,EAAU,CAAC,KAChCD,GAAWA,aAAiBojB,MAC7B,OAAO,KAEX,IAZeC,EAYXC,EAAKrjB,EAAQsjB,QAASA,OAAiB,IAAPD,EAAgB,GAAKA,EAAIE,EAAKvjB,EAAQwjB,MAAOA,OAAe,IAAPD,EAAgB,EAAIA,EAAIE,EAAKzjB,EAAQ0jB,MAAOA,OAAe,IAAPD,EAAgB,EAAIA,EAAIE,EAAY3jB,EAAQ2jB,UACrLC,EAAO7jB,EACPkH,EAAM,GAAGkB,OAAOub,EAAO,KAAKvb,OAAOqb,GACnCK,EAAS,GAyBb,GAxBIF,GAAuB,IAAVD,IACbzc,EAAM,GAAGkB,ODzFV,SAAsBzH,QACV,IAAXA,IAAqBA,EAAS,GAGlC,IAFA,IAAIojB,EAAa,iEACbD,EAAS,GACJL,EAAQ9iB,EAAQ8iB,EAAQ,IAAKA,EAClCK,GAAUC,EAAWC,KAAKC,MAAsB,GAAhBD,KAAKE,WAEzC,OAAOJ,CACX,CCiFwBK,GAAgB,KAAK/b,OAAOlB,IAG5ChH,MAAMC,QAAQojB,IACdA,EAAQ/R,SAAQ,SAAU4S,GAClBA,EAAOC,UAAUR,EAAM3c,EAAKyc,KACF,mBAAfS,EAAOE,OACdT,EAAOO,EAAOE,IAAIT,EAAM3c,EAAKyc,cACPP,OAClBS,EAAO7jB,IAQY,mBAAhBokB,EAAOG,MACdT,EAAOrR,KAAK2R,EAAOG,KAAKV,EAAM3c,EAAKyc,IAG/C,IAEAG,EAAOnjB,OACP,OAAOmjB,EAEX,OAAQD,EAAKW,UACT,KAAK,EAED,OAAO,iBA9CAnB,EA8C8BQ,EAAKR,SA7C9C,qBAAqB7hB,KAAK6hB,GACnBA,EAEJA,EAASxiB,eAlEpB,SAAyBgjB,EAAMY,GAC3B,IAAIC,EAAa,CACbxd,IAAKud,GAGT,GAAIZ,aAAgBc,QAAS,CACzB,IAAIC,EAAiBf,EAAKgB,aAAa,SACnCD,IACAF,EAAWrgB,UAAYugB,GAE3B5B,EAAc,GAAI,EAAOa,EAAKa,aAAa,GAAOlT,SAAQ,SAAU/L,GAChE,OAAQA,EAAEqH,MAEN,IAAK,QACD,MACJ,IAAK,QACD4X,EAAWjf,EAAEqH,MAAQ8F,EAAcnN,EAAEiN,OACrC,MACJ,IAAK,kBACL,IAAK,sBACL,IAAK,QACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,UACL,IAAK,QACL,IAAK,WACL,IAAK,iBACL,IAAK,SACL,IAAK,QACL,IAAK,YACL,IAAK,OACL,IAAK,WACL,IAAK,QACL,IAAK,WACL,IAAK,aACL,IAAK,OACL,IAAK,WACL,IAAK,WACL,IAAK,WACL,IAAK,WACL,IAAK,gBACDgS,EAAWpR,EAAsB7N,EAAEqH,OAASrH,EAAEqH,OAAQ,EACtD,MACJ,QACI4X,EAAWpR,EAAsB7N,EAAEqH,OAASrH,EAAEqH,MAAQrH,EAAEiN,MAEpE,GACJ,CACA,OAAOgS,CACX,CAyDiEI,CAAgBjB,EAAM3c,GAxDvF,SAAuB6d,EAAepB,EAAO1jB,GACzC,IAAIoG,EAAW2c,EAAc,GAAI,EAAO+B,IAAgB,GAAOxkB,KAAI,SAAUsjB,EAAMJ,GAC/E,OAAON,EAAgBU,EAAMhB,EAASA,EAAS,CAAC,EAAG5iB,GAAU,CAAEwjB,MAAOA,EAAOE,MAAOA,EAAQ,IAChG,IACKjjB,OAAOgD,SACZ,OAAK2C,EAAS1F,OAGP0F,EAFI,IAGf,CA+C6F2e,CAAcnB,EAAKoB,WAAYtB,EAAO1jB,IAE3H,KAAK,EAED,IAAIilB,GAAsC,QAAzBlS,EAAK6Q,EAAKsB,iBAA8B,IAAPnS,OAAgB,EAASA,EAAGoS,aAAe,GAE7F,GAAI,QAAQ5jB,KAAK0jB,KAAc,iBAAiB1jB,KAAK0jB,GACjD,OAAO,KAGX,IAAKrB,EAAKwB,WACN,OAAOH,EAEX,IAAII,EAAiBzB,EAAKwB,WAAWhC,SAASxiB,cAC9C,OAAIwS,EAAiB1F,SAAS2X,IAEtB,KAAK9jB,KAAK0jB,IAEVnZ,QAAQC,KAAK,qCAAqC5D,OAAOkd,EAAgB,mBAAmBld,OAAO8c,EAAU,sBAE1G,MAEJA,EAOX,QACI,OAAO,KAGnB,CA4Be,SAASK,EAAQvlB,EAAOC,GAEnC,YADgB,IAAZA,IAAsBA,EAAU,CAAC,GAChB,iBAAVD,EA7BR,SAA2BA,EAAOC,GAErC,QADgB,IAAZA,IAAsBA,EAAU,CAAC,IAChCD,GAA0B,iBAAVA,EACjB,OAAO,KAEX,IAAIgT,EAAK/S,EAAQulB,SAAUA,OAAkB,IAAPxS,GAAwBA,EAAIsQ,EAAKrjB,EAAQwlB,SAAUA,OAAkB,IAAPnC,EAAgB,WAAaA,EAAIE,EAAKvjB,EAAQgH,KAAMA,OAAc,IAAPuc,EAAgB,YAAcA,EAC7L,IACI,IAEIK,GAFS,IAAI6B,WACOC,gBAAgB3lB,EAAOiH,GACzBuD,cAAcib,GACpC,KAAM5B,aAAgBT,MAClB,MAAM,IAAIhjB,UAAU,uBAExB,OAAIolB,EACO3B,EAEJV,EAAgBU,EAAM5jB,EACjC,CACA,MAAO0S,GAMP,CACA,OAAO,IACX,CAIeiT,CAAkB5lB,EAAOC,GAEhCD,aAAiBojB,KACVD,EAAgBnjB,EAAOC,GAE3B,IACX,eCxNW4lB,EAAS,CAChBC,OAAQ,SACRC,OAAQ,SACRC,QAAS,UACTC,QAAS,UACTC,MAAO,QACPC,YAAa,eAEV,SAAS9jB,IACZ,OAAO,EAAAA,SACX,CACO,SAAS+jB,IACZ,OAEG,WAEH,IAAK7jB,SACD,OAAO,EAEX,IAAI8jB,EAAM9jB,SAASC,cAAc,OACjC6jB,EAAIpb,UAAY,UAChB,IAAIqb,EAAMD,EAAIE,WACd,QAASD,GAA4B,+BAArBA,EAAIE,YACxB,CAXWC,IAAyC,oBAAXnkB,QAAqC,OAAXA,MACnE,CCdA,IACQokB,EADJC,GACID,EAAgB,SAAUjhB,EAAG+D,GAI7B,OAHAkd,EAAgBzjB,OAAO2jB,gBAClB,CAAEC,UAAW,cAAgB3mB,OAAS,SAAUuF,EAAG+D,GAAK/D,EAAEohB,UAAYrd,CAAG,GAC1E,SAAU/D,EAAG+D,GAAK,IAAK,IAAIN,KAAKM,EAAOvG,OAAOK,UAAUwf,eAAezQ,KAAK7I,EAAGN,KAAIzD,EAAEyD,GAAKM,EAAEN,GAAI,EAC7Fwd,EAAcjhB,EAAG+D,EAC5B,EACO,SAAU/D,EAAG+D,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIpJ,UAAU,uBAAyB0mB,OAAOtd,GAAK,iCAE7D,SAASud,IAAOhE,KAAKiE,YAAcvhB,CAAG,CADtCihB,EAAcjhB,EAAG+D,GAEjB/D,EAAEnC,UAAkB,OAANkG,EAAavG,OAAOgkB,OAAOzd,IAAMud,EAAGzjB,UAAYkG,EAAElG,UAAW,IAAIyjB,EACnF,GAEA,EAAsC,WAStC,OARA,EAAW9jB,OAAOC,QAAU,SAASM,GACjC,IAAK,IAAIU,EAAG5C,EAAI,EAAGwD,EAAIkD,UAAUrH,OAAQW,EAAIwD,EAAGxD,IAE5C,IAAK,IAAI4H,KADThF,EAAI8D,UAAU1G,GACO2B,OAAOK,UAAUwf,eAAezQ,KAAKnO,EAAGgF,KACzD1F,EAAE0F,GAAKhF,EAAEgF,IAEjB,OAAO1F,CACX,EACO,EAAS2E,MAAM4a,KAAM/a,UAChC,EACI,EAAkC,SAAUjD,EAAGD,GAC/C,IAAI7C,EAAsB,mBAAXkQ,QAAyBpN,EAAEoN,OAAOC,UACjD,IAAKnQ,EAAG,OAAO8C,EACf,IAAmBF,EAAYtB,EAA3BjC,EAAIW,EAAEoQ,KAAKtN,GAAOuN,EAAK,GAC3B,IACI,WAAc,IAANxN,GAAgBA,KAAM,MAAQD,EAAIvD,EAAEiR,QAAQC,MAAMF,EAAGG,KAAK5N,EAAE6N,MACxE,CACA,MAAOC,GAASpP,EAAI,CAAEoP,MAAOA,EAAS,CACtC,QACI,IACQ9N,IAAMA,EAAE2N,OAASvQ,EAAIX,EAAU,SAAIW,EAAEoQ,KAAK/Q,EAClD,CACA,QAAU,GAAIiC,EAAG,MAAMA,EAAEoP,KAAO,CACpC,CACA,OAAOL,CACX,EACI,EAAgD,SAAUvF,EAAIkW,EAAMC,GACpE,GAAIA,GAA6B,IAArBlb,UAAUrH,OAAc,IAAK,IAA4B2R,EAAxBhR,EAAI,EAAG0D,EAAIie,EAAKtiB,OAAYW,EAAI0D,EAAG1D,KACxEgR,GAAQhR,KAAK2hB,IACR3Q,IAAIA,EAAKpS,MAAMoD,UAAU7B,MAAM4Q,KAAK4Q,EAAM,EAAG3hB,IAClDgR,EAAGhR,GAAK2hB,EAAK3hB,IAGrB,OAAOyL,EAAG3E,OAAOkK,GAAMpS,MAAMoD,UAAU7B,MAAM4Q,KAAK4Q,GACtD,EAIWiE,EAAajkB,OAAOgkB,OAAO,MAClCE,EAA2B,SAAUC,GAErC,SAASD,EAAUE,GACf,IAAIC,EAAQF,EAAO/U,KAAK0Q,KAAMsE,IAAUtE,KAuHxC,OAtHA9f,OAAOskB,eAAeD,EAAO,gBAAiB,CAC1CE,YAAY,EACZC,cAAc,EACdC,UAAU,EACVhV,OAAO,IAEXzP,OAAOskB,eAAeD,EAAO,WAAY,CACrCE,YAAY,EACZC,cAAc,EACdC,UAAU,EACVhV,OAAO,IAEXzP,OAAOskB,eAAeD,EAAO,OAAQ,CACjCE,YAAY,EACZC,cAAc,EACdC,UAAU,EACVhV,WAAO,IAEXzP,OAAOskB,eAAeD,EAAO,aAAc,CACvCE,YAAY,EACZC,cAAc,EACdC,UAAU,EACVhV,MAAO,SAAUiV,EAASC,QACL,IAAbA,IAAuBA,GAAW,GAElCN,EAAMO,UACNP,EAAMQ,SAAS,CACXH,QAASA,EACTC,SAAUA,EACVG,OAAQlC,EAAOE,QAChBuB,EAAMU,WAEjB,IAEJ/kB,OAAOskB,eAAeD,EAAO,cAAe,CACxCE,YAAY,EACZC,cAAc,EACdC,UAAU,EACVhV,MAAO,SAAUC,GACb,IAAIvJ,EAAUke,EAAMD,MAAMje,QACtB2e,EAA2B,iCAAlBpV,EAAMsV,QAA6CpC,EAAOM,YAAcN,EAAOC,OAExFwB,EAAMO,UACNP,EAAMQ,SAAS,CAAEC,OAAQA,IAAU,WAER,mBAAZ3e,GACPA,EAAQuJ,EAEhB,GAER,IAEJ1P,OAAOskB,eAAeD,EAAO,UAAW,CACpCE,YAAY,EACZC,cAAc,EACdC,UAAU,EACVhV,MAAO,WACH,IAAIM,EAAKsU,EAAMD,MAAOa,EAAgBlV,EAAGkV,cAAeC,EAAenV,EAAGmV,aAActkB,EAAMmP,EAAGnP,IACjG,IAII,OAHIqkB,IACAhB,EAAWrjB,GAAO,CAAE8jB,QAAS,GAAII,OAAQlC,EAAOG,UAE7CoC,MAAMvkB,EAAKskB,GACbhe,MAAK,SAAUke,GAChB,IAAIC,EAAcD,EAASE,QAAQC,IAAI,gBACiBC,EAA/C,GAAQH,GAAe,IAAIzV,MAAM,SAAU,GAAkB,GACtE,GAAIwV,EAASN,OAAS,IAClB,MAAM,IAAItgB,MAAM,aAEpB,IAAK,CAAC,gBAAiB,cAAcihB,MAAK,SAAUjjB,GAAK,OAAOgjB,EAAS9a,SAASlI,EAAI,IAClF,MAAM,IAAIgC,MAAM,6BAA6BW,OAAOqgB,IAExD,OAAOJ,EAASM,MACpB,IACKxe,MAAK,SAAUwd,GAChB,IAAIiB,EAAatB,EAAMD,MAAMxjB,IAE7B,GAAIA,IAAQ+kB,GAQZ,GAFAtB,EAAMuB,WAAWlB,GAEbO,EAAe,CACf,IAAIY,EAAQ5B,EAAWrjB,GAEnBilB,IACAA,EAAMnB,QAAUA,EAChBmB,EAAMf,OAASlC,EAAOE,OAE9B,OAdQmB,EAAWrjB,GAAKkkB,SAAWlC,EAAOG,gBAC3BkB,EAAWrjB,EAc9B,IACKklB,OAAM,SAAUpW,IACjB2U,EAAM0B,YAAYrW,GAEduV,KACYhB,EAAWrjB,WAGZqjB,EAAWrjB,GAG9B,GACJ,CACA,MAAO8O,GACH,OAAO2U,EAAM0B,YAAY,IAAIvhB,MAAMkL,EAAMsV,SAC7C,CACJ,IAEJX,EAAM2B,MAAQ,CACVtB,QAAS,GACTuB,QAAS,KACTtB,WAAYP,EAAMa,iBAAmBhB,EAAWG,EAAMxjB,KACtDkkB,OAAQlC,EAAOI,SAEnBqB,EAAM6B,KAAO9B,EAAM+B,YDpJpB,SAAsBzoB,GAKzB,IAJA,IAJqBY,EAIjB8nB,EAAU,6BAEVnV,EAAU,GAAG9L,OAAOihB,GAASjhB,OAAOihB,EAAQpoB,eAAemH,OADjD,cAEVkhB,EAAI,GACC7F,EAAQ,EAAGA,EAAQ9iB,EAAQ8iB,IAChC6F,IATiB/nB,EASI2S,GARR8P,KAAKuF,MAAMvF,KAAKE,SAAW3iB,EAAUZ,SAUtD,OAAO2oB,CACX,CC2IyC,CAAa,GACvChC,CACX,CAqPA,OA/WAX,EAAUQ,EAAWC,GA2HrBnkB,OAAOskB,eAAeJ,EAAU7jB,UAAW,oBAAqB,CAC5DkkB,YAAY,EACZC,cAAc,EACdC,UAAU,EACVhV,MAAO,WAEH,GADAqQ,KAAK8E,UAAW,EACXxlB,MAAe0gB,KAAKyG,cAAzB,CAGA,IAAIzB,EAAShF,KAAKkG,MAAMlB,OACpBlkB,EAAMkf,KAAKsE,MAAMxjB,IACrB,IAEI,GAAIkkB,IAAWlC,EAAOI,QAAS,CAE3B,IAAKG,IACD,MAAM,IAAI3e,MAAM,gCAGpB,IAAK5D,EACD,MAAM,IAAI4D,MAAM,eAEpBsb,KAAK0G,MACT,CACJ,CACA,MAAO9W,GACHoQ,KAAKiG,YAAYrW,EACrB,CACAoQ,KAAKyG,eAAgB,CApBrB,CAqBJ,IAEJvmB,OAAOskB,eAAeJ,EAAU7jB,UAAW,qBAAsB,CAC7DkkB,YAAY,EACZC,cAAc,EACdC,UAAU,EACVhV,MAAO,SAAUgX,EAAeC,GAC5B,GAAKtnB,IAAL,CAGA,IAAI2Q,EAAK+P,KAAKkG,MAAOrB,EAAW5U,EAAG4U,SAAUG,EAAS/U,EAAG+U,OACrDzE,EAAKP,KAAKsE,MAAOle,EAASma,EAAGna,OAAQtF,EAAMyf,EAAGzf,IAOlD,GANI8lB,EAAc5B,SAAWlC,EAAOK,OAAS6B,IAAWlC,EAAOK,OAEvD/c,GACAA,EAAOtF,EAAK+jB,GAGhB8B,EAAc7lB,MAAQA,EAAK,CAC3B,IAAKA,EAED,YADAkf,KAAKiG,YAAY,IAAIvhB,MAAM,gBAG/Bsb,KAAK0G,MACT,CAfA,CAgBJ,IAEJxmB,OAAOskB,eAAeJ,EAAU7jB,UAAW,uBAAwB,CAC/DkkB,YAAY,EACZC,cAAc,EACdC,UAAU,EACVhV,MAAO,WACHqQ,KAAK8E,UAAW,CACpB,IAEJ5kB,OAAOskB,eAAeJ,EAAU7jB,UAAW,UAAW,CAClDkkB,YAAY,EACZC,cAAc,EACdC,UAAU,EACVhV,MAAO,WACH,IAAIM,EAAK+P,KAAKsE,MAAO9Y,EAAcyE,EAAGzE,YAAaD,EAAQ0E,EAAG1E,MAC9D,IACI,IACIuV,EAAO0B,EADGxC,KAAK6G,aACS,CAAEpE,UAAU,IACxC,KAAK3B,GAAUA,aAAgBgG,eAC3B,MAAM,IAAIpiB,MAAM,2CAEpB,IAAI6e,EAAMvD,KAAK+G,oBAAoBjG,GACnC,GAAItV,EAAa,CACb,IAAIwb,EAAezD,EAAI9b,cAAc,QACjCuf,GAAgBA,EAAa1E,YAC7B0E,EAAa1E,WAAW2E,YAAYD,GAExC,IAAIE,EAAc1nB,SAAS2nB,gBAAgB,6BAA8B,QACzED,EAAYhf,UAAYsD,EACxB+X,EAAI6D,QAAQF,EAChB,CACA,QAAqB,IAAV3b,EAAuB,CAC9B,IAAI8b,EAAgB9D,EAAI9b,cAAc,SAItC,GAHI4f,GAAiBA,EAAc/E,YAC/B+E,EAAc/E,WAAW2E,YAAYI,GAErC9b,EAAO,CACP,IAAI+b,EAAe9nB,SAAS2nB,gBAAgB,6BAA8B,SAC1EG,EAAapf,UAAYqD,EACzBgY,EAAI6D,QAAQE,EAChB,CACJ,CACA,OAAO/D,CACX,CACA,MAAO3T,GACH,OAAOoQ,KAAKiG,YAAYrW,EAC5B,CACJ,IAEJ1P,OAAOskB,eAAeJ,EAAU7jB,UAAW,aAAc,CACrDkkB,YAAY,EACZC,cAAc,EACdC,UAAU,EACVhV,MAAO,WACH,IACI,IACIwW,EAAU3D,EADHxC,KAAKuH,WAEhB,IAAKpB,IAAY,iBAAqBA,GAClC,MAAM,IAAIzhB,MAAM,gDAEpBsb,KAAK+E,SAAS,CACVoB,QAASA,EACTnB,OAAQlC,EAAOK,OAEvB,CACA,MAAOvT,GACHoQ,KAAKiG,YAAY,IAAIvhB,MAAMkL,EAAMsV,SACrC,CACJ,IAEJhlB,OAAOskB,eAAeJ,EAAU7jB,UAAW,OAAQ,CAC/CkkB,YAAY,EACZC,cAAc,EACdC,UAAU,EACVhV,MAAO,WACH,IAAI4U,EAAQvE,KAERA,KAAK8E,UACL9E,KAAK+E,SAAS,CACVH,QAAS,GACTuB,QAAS,KACTtB,UAAU,EACVG,OAAQlC,EAAOG,UAChB,WACC,IAAIhT,EAAKsU,EAAMD,MAAOa,EAAgBlV,EAAGkV,cAAerkB,EAAMmP,EAAGnP,IAC7DilB,EAAQZ,GAAiBhB,EAAWrjB,GACxC,GAAIilB,GAASA,EAAMf,SAAWlC,EAAOE,OACjCuB,EAAMuB,WAAWC,EAAMnB,SAAS,OADpC,CAIA,IACI4C,EADAC,EAAU3mB,EAAIkL,MAAM,wCAEpByb,EACAD,EAAYC,EAAQ,GAAKloB,OAAOmoB,KAAKD,EAAQ,IAAME,mBAAmBF,EAAQ,IAEzE3mB,EAAI8J,SAAS,UAClB4c,EAAY1mB,GAEZ0mB,EACAjD,EAAMuB,WAAW0B,GAGrBjD,EAAMqD,SAbN,CAcJ,GAER,IAEJ1nB,OAAOskB,eAAeJ,EAAU7jB,UAAW,sBAAuB,CAC9DkkB,YAAY,EACZC,cAAc,EACdC,UAAU,EACVhV,MAAO,SAAUmR,GACb,IAAIyD,EAAQvE,KACR/P,EAAK+P,KAAKsE,MAAO/D,EAAKtQ,EAAG4X,QAASA,OAAiB,IAAPtH,EAAgB,GAAKA,EAAIuH,EAAc7X,EAAG6X,YACtFC,EAAwB,CAAC,KAAM,OAAQ,aAAc,aAAc,iBACnEC,EAAiB,CAAC,OAAQ,cAI9B,OAAKF,GAGL,EAAc,GAAI,EAAOhH,EAAKxd,WAAW,GAAO9F,KAAI,SAAUkF,GAC1D,GAAIA,EAAEif,YAAcjf,EAAEif,WAAW/jB,OAAQ,CACrC,IAAIqqB,EAAe/nB,OAAOgoB,OAAOxlB,EAAEif,YAAYnkB,KAAI,SAAUkD,GACzD,IAAIynB,EAAYznB,EACZsL,EAAQtL,EAAEiP,MAAM3D,MAAM,gBAI1B,OAHIA,GAASA,EAAM,KACfmc,EAAUxY,MAAQjP,EAAEiP,MAAM/Q,QAAQoN,EAAM,GAAI,OAAO3G,OAAOwiB,GAASxiB,OAAO2G,EAAM,GAAI,MAAM3G,OAAOkf,EAAM6B,KAAM,OAE1G+B,CACX,IACAJ,EAAsBtZ,SAAQ,SAAU3M,GACpC,IAjBgBiI,EAAM4F,EAiBlBwY,EAAYF,EAAalc,MAAK,SAAUrL,GAAK,OAAOA,EAAEqJ,OAASjI,CAAG,IAClEqmB,IAlBYpe,EAkBcjI,EAlBR6N,EAkBWwY,EAAUxY,OAjB5CqY,EAAepd,SAASb,KAAU4F,GAASA,EAAM/E,SAAS,QAkBrDud,EAAUxY,MAAQ,GAAGtK,OAAO8iB,EAAUxY,MAAO,MAAMtK,OAAOkf,EAAM6B,MAExE,GACJ,CACA,OAAI1jB,EAAEY,SAAS1F,OACJ2mB,EAAMwC,oBAAoBrkB,GAE9BA,CACX,IACOoe,GAxBIA,CAyBf,IAEJ5gB,OAAOskB,eAAeJ,EAAU7jB,UAAW,aAAc,CACrDkkB,YAAY,EACZC,cAAc,EACdC,UAAU,EACVhV,MAAO,WACH,IAAIiV,EAAU5E,KAAKkG,MAAMtB,QACrBwD,EAAepI,KAAKsE,MAAM8D,aAC9B,OAAIA,EACOA,EAAaxD,GAEjBA,CACX,IAEJ1kB,OAAOskB,eAAeJ,EAAU7jB,UAAW,SAAU,CACjDkkB,YAAY,EACZC,cAAc,EACdC,UAAU,EACVhV,MAAO,WACH,IAAIM,EAAK+P,KAAKkG,MAAOC,EAAUlW,EAAGkW,QAASnB,EAAS/U,EAAG+U,OACnDzE,EAAKP,KAAKsE,MAAO7D,EAAKF,EAAGjd,SAAUA,OAAkB,IAAPmd,EAAgB,KAAOA,EAAI4H,EAAW9H,EAAG8H,SAAU1H,EAAKJ,EAAG+H,OAAQA,OAAgB,IAAP3H,EAAgB,KAAOA,EACjJ4H,EDxWT,SAActrB,GAEjB,IADA,IAAIU,EAAS,GACJ6qB,EAAK,EAAGA,EAAKvjB,UAAUrH,OAAQ4qB,IACpC7qB,EAAO6qB,EAAK,GAAKvjB,UAAUujB,GAE/B,IAAIC,EAAS,CAAC,EACd,IAAK,IAAItkB,KAAOlH,GAER,CAAC,GAAE8iB,eAAezQ,KAAKrS,EAAOkH,KACzBxG,EAAOiN,SAASzG,KACjBskB,EAAOtkB,GAAOlH,EAAMkH,KAIhC,OAAOskB,CACX,CCyV+BC,CAAK1I,KAAKsE,MAAO,UAAW,gBAAiB,WAAY,cAAe,eAAgB,WAAY,SAAU,UAAW,SAAU,eAAgB,MAAO,QAAS,aAAc,eACpM,OAAKhlB,IAGD6mB,EACO,eAAmBA,EAAS,EAAS,CAAE5d,IAAK8f,GAAYE,IAE/D,CAACzF,EAAOM,YAAaN,EAAOC,QAAQnY,SAASoa,GACtC1hB,EAEJglB,EARIA,CASf,IAEJpoB,OAAOskB,eAAeJ,EAAW,eAAgB,CAC7CK,YAAY,EACZC,cAAc,EACdC,UAAU,EACVhV,MAAO,CACHwV,eAAe,EACf2C,aAAa,KAGd1D,CACX,CAjX8B,CAiX5B,iBACF,IC3ZA,MAAMuE,EAAoC9e,IAInC,IAJoC,IACzC1G,EAAM,GAAE,UACR7B,EAAY,GACZ2J,MAAM,OAAE2d,EAAM,UAAEC,EAAS,UAAEC,IAC5Bjf,EACC,IAAK+e,GAAuB,OAAbC,EACb,OAAO5e,EAAAA,cAAC8e,EAAG,CAACjoB,IAAKgoB,EAAWxnB,UAAWA,EAAWiK,MAAOpI,IAG3D,MAAMoC,GAAQyjB,EAAAA,EAAAA,GAASJ,GAEvB,OACE3e,EAAAA,cAACgf,EAAAA,EAAW,CAAC1jB,MAAOA,EAAOjE,UAAS,aAAeA,EAAa6B,IAAKA,GAAO,EAIhF,OAAemH,EAAAA,EAAAA,MAAKqe,aCpBpB,MAAMO,EAAgCrf,IAE/B,IAFgC,UACrCvI,EAAY,IACbuI,EACC,MAAM,KAAEE,EAAI,MAAEwB,EAAK,KAAEN,IAASF,EAAAA,EAAAA,MAE9B,OACEd,EAAAA,cAAA,OAAK3I,UAAS,6CAA+CA,GAC3D2I,EAAAA,cAACC,EAAAA,GAAI,CAACF,GAAG,IAAI1I,UAAU,+BACrB2I,EAAAA,cAAC0e,EAAQ,CAACrnB,UAAU,UAAU6B,IAAKoI,EAAON,KAAMA,IAChDhB,EAAAA,cAAA,KAAG3I,UAAU,oEACVyI,IAGLE,EAAAA,cAAA,OAAK3I,UAAU,wCACb2I,EAAAA,cAAC0E,EAAc,OAEb,EAIV,OAAerE,EAAAA,EAAAA,MAAK4e,aCrBpB,MAAMC,EAA4Ctf,IAE3C,IAF4C,UACjDvI,EAAY,IACbuI,EACC,MAAMuf,GAAO,IAAIC,MAAOC,eAClB,UAAE5d,EAAS,KAAE3B,EAAI,gBAAEwf,IAAoBxe,EAAAA,EAAAA,MAE7C,OACEd,EAAAA,cAAA,UAAQ3I,UAAWA,GACjB2I,EAAAA,cAAA,OAAK3I,UAAU,kCACb2I,EAAAA,cAAA,OAAK3I,UAAU,sCACb2I,EAAAA,cAAA,MAAI3I,UAAU,cACXyI,EACDE,EAAAA,cAAA,WACAA,EAAAA,cAAA,SAAO3I,UAAU,4CACdioB,KAIPtf,EAAAA,cAAA,OAAK3I,UAAU,uCACb2I,EAAAA,cAAA,OAAK3I,UAAU,uBACb2I,EAAAA,cAAA,MAAI3I,UAAU,kBAAiB,WAC/B2I,EAAAA,cAACC,EAAAA,GAAI,CAAC5I,UAAU,kBAAkB0I,GAAG,KAAI,QAGzCC,EAAAA,cAACC,EAAAA,GAAI,CAAC5I,UAAU,kBAAkB0I,GAAG,UAAS,SAG9CC,EAAAA,cAACC,EAAAA,GAAI,CAAC5I,UAAU,kBAAkB0I,GAAG,eAAc,cAGnDC,EAAAA,cAACC,EAAAA,GAAI,CAAC5I,UAAU,kBAAkB0I,GAAG,YAAW,WAGhDC,EAAAA,cAACuf,EAAAA,EAAoB,CAACjf,MAAM,UAAUC,KAAMkB,KAE9CzB,EAAAA,cAAA,OAAK3I,UAAU,uBACb2I,EAAAA,cAAA,MAAI3I,UAAU,kBAAiB,QAC/B2I,EAAAA,cAACuf,EAAAA,EAAoB,CAACjf,MAAM,OAAOC,KAAMkB,KAE3CzB,EAAAA,cAAA,OAAK3I,UAAU,uBACb2I,EAAAA,cAAA,MAAI3I,UAAU,kBAAiB,WAC/B2I,EAAAA,cAACuf,EAAAA,EAAoB,CAACjf,MAAM,UAAUC,KAAMkB,OAIlDzB,EAAAA,cAAA,OAAK3I,UAAU,iEAAgE,KACrE8nB,EAAK,IAAErf,EAAK,0BAEf,EAIb,OAAeO,EAAAA,EAAAA,MAAK6e,aC/CpB,MAAMM,EAAsD5f,IAErD,IAFsD,UAC3DvI,EAAY,IACbuI,EACC,MAAQ6f,kBAAkB,MAAEne,EAAK,YAAEC,KAAkBT,EAAAA,EAAAA,OAC/C,EAAC4e,EAAM,EAACC,IAAY/d,EAAAA,EAAAA,UAAS,KAC7B,EAACqZ,EAAQ,EAAC2E,IAAche,EAAAA,EAAAA,UAAS,KACjC,EAACie,EAAW,EAACC,IAAiBle,EAAAA,EAAAA,WAAS,GAiC7C,OACE5B,EAAAA,cAAA,OAAK3I,UAAS,gBAAkBA,GAC9B2I,EAAAA,cAAA,OAAK3I,UAAU,0BACb2I,EAAAA,cAAA,MAAI3I,UAAU,sBACViK,GAASye,EAAAA,IAEb/f,EAAAA,cAAA,OAAK3I,UAAU,wBACXkK,GAAeye,EAAAA,IAEnBhgB,EAAAA,cAAA,QAAM3I,UAAU,sBAAsB4oB,SAxCpBxb,IACtBA,EAAMyb,kBAENC,EAAAA,EAAAA,IAAmBT,GAChBviB,MAAKoD,IACJ,GAA6B,UAAxBA,EAAauW,OAChB,MAAMvW,EAGRuf,GAAc,GACdF,EAAW,gBAEXQ,EAAAA,EAAAA,IAAoBC,EAAAA,GAA2B,CAAEX,UAEjD/hB,YAAW,KACTmiB,GAAc,GACdH,EAAS,IACTC,EAAW,GAAG,GACb,IAAK,IAET7D,OAAMpW,IACLia,EAAWja,EAAM2a,IAAI,GACrB,GAmBEtgB,EAAAA,cAAA,OAAK3I,UAAU,oCACb2I,EAAAA,cAAA,QAAM3I,UAAU,8DAA6D,KAG7E2I,EAAAA,cAAA,SACEZ,YAAY,aACZU,KAAK,QACL7F,KAAK,QACL5C,UAAU,gCACVqO,MAAOga,EACPa,SA1BY9b,IACtB,MAAMiB,EAAQjB,EAAM+b,cAAc9a,MAClCia,EAASja,GACTka,EAAW,GAAG,EAwBJa,gBAAc,IAEhBzgB,EAAAA,cAAA,UACE3I,UAAU,iEACV4C,KAAK,SACLymB,SAAUb,GACX,cAIH7f,EAAAA,cAAA,SACE3I,UAAS,eACPwoB,EAAa,iBAAmB,iBAGjC5E,GAEHjb,EAAAA,cAAA,WACAA,EAAAA,cAAA,OAAK3I,UAAU,4BACb2I,EAAAA,cAAA,UACE3I,UAAU,uCACV4C,KAAK,SACLymB,SAAUb,GACX,gBAMH,EAIV,ICiNQc,EA0VqBC,EACrBC,EAAQC,ED5iBhB,GAAezgB,EAAAA,EAAAA,MAAKmf,+ECrGhBuB,GACM,iBADNA,GAEM,iBAFNA,GAGO,kBAGPC,GAAY,CACZC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,SAAU,WACVC,OAAQ,SACRC,MAAO,QACPC,MAAO,SAOPC,IAJkB1rB,OAAO2rB,KAAKZ,IAAWztB,KAAI,SAAUuM,GACvD,OAAOkhB,GAAUlhB,EACrB,IAGa,WADT6hB,GAEU,UAFVA,GAGM,OAHNA,GAIW,aAJXA,GAKY,YALZA,GAMW,WANXA,GAOM,OAPNA,GAQU,WARVA,GASK,MATLA,GAUK,MAVLA,GAWQ,SAGRE,GAAgB,CAChBrb,UAAW,YACXU,QAAS,UACTnL,MAAO,YACPuL,gBAAiB,kBACjBC,YAAa,cACb,aAAc,YACdqB,SAAU,WACVsB,SAAU,YAGV4X,GACe,eADfA,GAEO,QAFPA,GAG2B,0BAH3BA,GAIwB,sBAJxBA,GAKgB,gBAGhBC,GAAe9rB,OAAO2rB,KAAKC,IAAe/b,QAAO,SAAUkc,EAAK9nB,GAEhE,OADA8nB,EAAIH,GAAc3nB,IAAQA,EACnB8nB,CACX,GAAG,CAAC,GAEAC,GAAoB,CAACjB,GAAUO,SAAUP,GAAUQ,OAAQR,GAAUS,OAErES,GAAmB,oBAEnBC,GAA4B,mBAAXhd,QAAoD,iBAApBA,OAAOC,SAAwB,SAAU4c,GAC5F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAyB,mBAAX7c,QAAyB6c,EAAIhI,cAAgB7U,QAAU6c,IAAQ7c,OAAO7O,UAAY,gBAAkB0rB,CAC3H,EAQII,GAAc,WAChB,SAASC,EAAiBliB,EAAQka,GAChC,IAAK,IAAI/lB,EAAI,EAAGA,EAAI+lB,EAAM1mB,OAAQW,IAAK,CACrC,IAAIguB,EAAajI,EAAM/lB,GACvBguB,EAAW9H,WAAa8H,EAAW9H,aAAc,EACjD8H,EAAW7H,cAAe,EACtB,UAAW6H,IAAYA,EAAW5H,UAAW,GACjDzkB,OAAOskB,eAAepa,EAAQmiB,EAAWpoB,IAAKooB,EAChD,CACF,CAEA,OAAO,SAAUC,EAAaC,EAAYC,GAGxC,OAFID,GAAYH,EAAiBE,EAAYjsB,UAAWksB,GACpDC,GAAaJ,EAAiBE,EAAaE,GACxCF,CACT,CACF,CAhBkB,GAkBdG,GAAWzsB,OAAOC,QAAU,SAAUiK,GACxC,IAAK,IAAI7L,EAAI,EAAGA,EAAI0G,UAAUrH,OAAQW,IAAK,CACzC,IAAI1B,EAASoI,UAAU1G,GAEvB,IAAK,IAAI4F,KAAOtH,EACVqD,OAAOK,UAAUwf,eAAezQ,KAAKzS,EAAQsH,KAC/CiG,EAAOjG,GAAOtH,EAAOsH,GAG3B,CAEA,OAAOiG,CACT,EAkBIwiB,GAA0B,SAAUX,EAAKJ,GAC3C,IAAIzhB,EAAS,CAAC,EAEd,IAAK,IAAI7L,KAAK0tB,EACRJ,EAAKgB,QAAQtuB,IAAM,GAClB2B,OAAOK,UAAUwf,eAAezQ,KAAK2c,EAAK1tB,KAC/C6L,EAAO7L,GAAK0tB,EAAI1tB,IAGlB,OAAO6L,CACT,EAUI0iB,GAA0B,SAAiCC,GAG3D,OAAe,OAFF9nB,UAAUrH,OAAS,QAAsBovB,IAAjB/nB,UAAU,KAAmBA,UAAU,IAGjE8e,OAAOgJ,GAGXhJ,OAAOgJ,GAAKnuB,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,UAAUA,QAAQ,KAAM,SAChI,EAEIquB,GAAwB,SAA+BC,GACvD,IAAIC,EAAiBC,GAAqBF,EAAWjC,GAAUU,OAC3D0B,EAAoBD,GAAqBF,EAAWnB,IAExD,GAAIsB,GAAqBF,EAErB,OAAOE,EAAkBzuB,QAAQ,OAAO,WACpC,OAAOzB,MAAMC,QAAQ+vB,GAAkBA,EAAetvB,KAAK,IAAMsvB,CACrE,IAGJ,IAAIG,EAAwBF,GAAqBF,EAAWnB,IAE5D,OAAOoB,GAAkBG,QAAyBN,CACtD,EAEIO,GAAyB,SAAgCL,GACzD,OAAOE,GAAqBF,EAAWnB,KAAwC,WAAa,CAChG,EAEIyB,GAA6B,SAAoCC,EAASP,GAC1E,OAAOA,EAAUvvB,QAAO,SAAU2mB,GAC9B,YAAiC,IAAnBA,EAAMmJ,EACxB,IAAGjwB,KAAI,SAAU8mB,GACb,OAAOA,EAAMmJ,EACjB,IAAG1d,QAAO,SAAU2d,EAAUlmB,GAC1B,OAAOmlB,GAAS,CAAC,EAAGe,EAAUlmB,EAClC,GAAG,CAAC,EACR,EAEImmB,GAA0B,SAAiCC,EAAmBV,GAC9E,OAAOA,EAAUvvB,QAAO,SAAU2mB,GAC9B,YAAwC,IAA1BA,EAAM2G,GAAUC,KAClC,IAAG1tB,KAAI,SAAU8mB,GACb,OAAOA,EAAM2G,GAAUC,KAC3B,IAAG2C,UAAU9d,QAAO,SAAU+d,EAAkBC,GAC5C,IAAKD,EAAiBlwB,OAGlB,IAFA,IAAIiuB,EAAO3rB,OAAO2rB,KAAKkC,GAEdxvB,EAAI,EAAGA,EAAIstB,EAAKjuB,OAAQW,IAAK,CAClC,IACIyvB,EADenC,EAAKttB,GACiBT,cAEzC,IAA0D,IAAtD8vB,EAAkBf,QAAQmB,IAAiCD,EAAIC,GAC/D,OAAOF,EAAiBzoB,OAAO0oB,EAEvC,CAGJ,OAAOD,CACX,GAAG,GACP,EAEIG,GAAuB,SAA8BC,EAASN,EAAmBV,GAEjF,IAAIiB,EAAmB,CAAC,EAExB,OAAOjB,EAAUvvB,QAAO,SAAU2mB,GAC9B,QAAInnB,MAAMC,QAAQknB,EAAM4J,WAGM,IAAnB5J,EAAM4J,IACbjlB,GAAK,WAAailB,EAAU,mDAAwD9B,GAAQ9H,EAAM4J,IAAY,MAE3G,EACX,IAAG1wB,KAAI,SAAU8mB,GACb,OAAOA,EAAM4J,EACjB,IAAGL,UAAU9d,QAAO,SAAUqe,EAAcC,GACxC,IAAIC,EAAmB,CAAC,EAExBD,EAAa1wB,QAAO,SAAUowB,GAG1B,IAFA,IAAIQ,OAAsB,EACtB1C,EAAO3rB,OAAO2rB,KAAKkC,GACdxvB,EAAI,EAAGA,EAAIstB,EAAKjuB,OAAQW,IAAK,CAClC,IAAIiwB,EAAe3C,EAAKttB,GACpByvB,EAAwBQ,EAAa1wB,eAGiB,IAAtD8vB,EAAkBf,QAAQmB,IAAmCO,IAAwB3C,IAAiE,cAA3CmC,EAAIQ,GAAqBzwB,eAAoCkwB,IAA0BpC,IAAmE,eAA7CmC,EAAIC,GAAuBlwB,gBACnPywB,EAAsBP,IAGuB,IAA7CJ,EAAkBf,QAAQ2B,IAAyBA,IAAiB5C,IAA6B4C,IAAiB5C,IAA2B4C,IAAiB5C,KAC9J2C,EAAsBC,EAE9B,CAEA,IAAKD,IAAwBR,EAAIQ,GAC7B,OAAO,EAGX,IAAI5e,EAAQoe,EAAIQ,GAAqBzwB,cAUrC,OARKqwB,EAAiBI,KAClBJ,EAAiBI,GAAuB,CAAC,GAGxCD,EAAiBC,KAClBD,EAAiBC,GAAuB,CAAC,IAGxCJ,EAAiBI,GAAqB5e,KACvC2e,EAAiBC,GAAqB5e,IAAS,GACxC,EAIf,IAAGke,UAAUpf,SAAQ,SAAUsf,GAC3B,OAAOK,EAAa1e,KAAKqe,EAC7B,IAIA,IADA,IAAIlC,EAAO3rB,OAAO2rB,KAAKyC,GACd/vB,EAAI,EAAGA,EAAIstB,EAAKjuB,OAAQW,IAAK,CAClC,IAAIiwB,EAAe3C,EAAKttB,GACpBkwB,EAAW,IAAa,CAAC,EAAGN,EAAiBK,GAAeF,EAAiBE,IAEjFL,EAAiBK,GAAgBC,CACrC,CAEA,OAAOL,CACX,GAAG,IAAIP,SACX,EAEIT,GAAuB,SAA8BF,EAAWwB,GAChE,IAAK,IAAInwB,EAAI2uB,EAAUtvB,OAAS,EAAGW,GAAK,EAAGA,IAAK,CAC5C,IAAI+lB,EAAQ4I,EAAU3uB,GAEtB,GAAI+lB,EAAMvE,eAAe2O,GACrB,OAAOpK,EAAMoK,EAErB,CAEA,OAAO,IACX,EAoBIC,IACI/D,EAAQvB,KAAKuF,MAEV,SAAUC,GACb,IAAIC,EAAczF,KAAKuF,MAEnBE,EAAclE,EAAQ,IACtBA,EAAQkE,EACRD,EAASC,IAETlnB,YAAW,WACP+mB,GAAYE,EAChB,GAAG,EAEX,GAGAE,GAAc,SAAqB/hB,GACnC,OAAOgiB,aAAahiB,EACxB,EAEI3E,GAA0C,oBAAX9I,OAAyBA,OAAO8I,uBAAyB9I,OAAO8I,sBAAsB4mB,KAAK1vB,SAAWA,OAAO2vB,6BAA+B3vB,OAAO4vB,0BAA4BR,GAAc,EAAA1oB,EAAOoC,uBAAyBsmB,GAE5PrmB,GAAyC,oBAAX/I,OAAyBA,OAAO+I,sBAAwB/I,OAAO6vB,4BAA8B7vB,OAAO8vB,yBAA2BN,GAAc,EAAA9oB,EAAOqC,sBAAwBymB,GAE1M9lB,GAAO,SAAcshB,GACrB,OAAOvhB,SAAmC,mBAAjBA,QAAQC,MAAuBD,QAAQC,KAAKshB,EACzE,EAEI+E,GAAkB,KAmBlBC,GAAmB,SAA0BC,EAAUC,GACvD,IAAIC,EAAUF,EAASE,QACnBC,EAAiBH,EAASG,eAC1BC,EAAiBJ,EAASI,eAC1BC,EAAWL,EAASK,SACpBC,EAAWN,EAASM,SACpBC,EAAeP,EAASO,aACxBC,EAAsBR,EAASQ,oBAC/BC,EAAaT,EAASS,WACtBC,EAAYV,EAASU,UACrB3kB,EAAQikB,EAASjkB,MACjB4kB,EAAkBX,EAASW,gBAE/BC,GAAiBnF,GAAUE,KAAMwE,GACjCS,GAAiBnF,GAAUI,KAAMuE,GAEjCS,GAAY9kB,EAAO4kB,GAEnB,IAAIG,EAAa,CACbZ,QAASa,GAAWtF,GAAUC,KAAMwE,GACpCG,SAAUU,GAAWtF,GAAUK,KAAMuE,GACrCC,SAAUS,GAAWtF,GAAUM,KAAMuE,GACrCC,aAAcQ,GAAWtF,GAAUO,SAAUuE,GAC7CE,WAAYM,GAAWtF,GAAUQ,OAAQwE,GACzCC,UAAWK,GAAWtF,GAAUS,MAAOwE,IAGvCM,EAAY,CAAC,EACbC,EAAc,CAAC,EAEnBvwB,OAAO2rB,KAAKyE,GAAY7hB,SAAQ,SAAUgf,GACtC,IAAIiD,EAAsBJ,EAAW7C,GACjCkD,EAAUD,EAAoBC,QAC9BC,EAAUF,EAAoBE,QAG9BD,EAAQ/yB,SACR4yB,EAAU/C,GAAWkD,GAErBC,EAAQhzB,SACR6yB,EAAYhD,GAAW6C,EAAW7C,GAASmD,QAEnD,IAEAnB,GAAMA,IAENO,EAAoBR,EAAUgB,EAAWC,EAC7C,EAEII,GAAe,SAAsBC,GACrC,OAAO3zB,MAAMC,QAAQ0zB,GAAiBA,EAAcjzB,KAAK,IAAMizB,CACnE,EAEIT,GAAc,SAAqB9kB,EAAOoW,QACrB,IAAVpW,GAAyB/L,SAAS+L,QAAUA,IACnD/L,SAAS+L,MAAQslB,GAAatlB,IAGlC6kB,GAAiBnF,GAAUU,MAAOhK,EACtC,EAEIyO,GAAmB,SAA0BlC,EAASvM,GACtD,IAAIoP,EAAavxB,SAASwxB,qBAAqB9C,GAAS,GAExD,GAAK6C,EAAL,CASA,IALA,IAAIE,EAAwBF,EAAWjP,aAAaqK,IAChD+E,EAAmBD,EAAwBA,EAAsBnhB,MAAM,KAAO,GAC9EqhB,EAAqB,GAAG9rB,OAAO6rB,GAC/BE,EAAgBlxB,OAAO2rB,KAAKlK,GAEvBpjB,EAAI,EAAGA,EAAI6yB,EAAcxzB,OAAQW,IAAK,CAC3C,IAAI4pB,EAAYiJ,EAAc7yB,GAC1BoR,EAAQgS,EAAWwG,IAAc,GAEjC4I,EAAWjP,aAAaqG,KAAexY,GACvCohB,EAAWM,aAAalJ,EAAWxY,IAGM,IAAzCuhB,EAAiBrE,QAAQ1E,IACzB+I,EAAiBxhB,KAAKyY,GAG1B,IAAImJ,EAAcH,EAAmBtE,QAAQ1E,IACxB,IAAjBmJ,GACAH,EAAmBI,OAAOD,EAAa,EAE/C,CAEA,IAAK,IAAI9I,EAAK2I,EAAmBvzB,OAAS,EAAG4qB,GAAM,EAAGA,IAClDuI,EAAWlpB,gBAAgBspB,EAAmB3I,IAG9C0I,EAAiBtzB,SAAWuzB,EAAmBvzB,OAC/CmzB,EAAWlpB,gBAAgBskB,IACpB4E,EAAWjP,aAAaqK,MAAsBiF,EAAcvzB,KAAK,MACxEkzB,EAAWM,aAAalF,GAAkBiF,EAAcvzB,KAAK,KAhCjE,CAkCJ,EAEI0yB,GAAa,SAAoBrsB,EAAMstB,GACvC,IAAIC,EAAcjyB,SAASkyB,MAAQlyB,SAASiI,cAAcwjB,GAAUG,MAChEuG,EAAWF,EAAYG,iBAAiB1tB,EAAO,IAAMioB,GAAmB,KACxEyE,EAAUzzB,MAAMoD,UAAU7B,MAAM4Q,KAAKqiB,GACrChB,EAAU,GACVkB,OAAgB,EA4CpB,OA1CIL,GAAQA,EAAK5zB,QACb4zB,EAAK/iB,SAAQ,SAAUsf,GACnB,IAAI+D,EAAatyB,SAASC,cAAcyE,GAExC,IAAK,IAAIikB,KAAa4F,EAClB,GAAIA,EAAIhO,eAAeoI,GACnB,GAAIA,IAAcyD,GACdkG,EAAW5pB,UAAY6lB,EAAI7lB,eACxB,GAAIigB,IAAcyD,GACjBkG,EAAWC,WACXD,EAAWC,WAAWC,QAAUjE,EAAIiE,QAEpCF,EAAW3kB,YAAY3N,SAASyyB,eAAelE,EAAIiE,cAEpD,CACH,IAAIriB,OAAkC,IAAnBoe,EAAI5F,GAA6B,GAAK4F,EAAI5F,GAC7D2J,EAAWT,aAAalJ,EAAWxY,EACvC,CAIRmiB,EAAWT,aAAalF,GAAkB,QAGtCyE,EAAQjL,MAAK,SAAUuM,EAAaxR,GAEpC,OADAmR,EAAgBnR,EACToR,EAAWK,YAAYD,EAClC,IACItB,EAAQW,OAAOM,EAAe,GAE9BlB,EAAQjhB,KAAKoiB,EAErB,IAGJlB,EAAQniB,SAAQ,SAAUsf,GACtB,OAAOA,EAAIzL,WAAW2E,YAAY8G,EACtC,IACA4C,EAAQliB,SAAQ,SAAUsf,GACtB,OAAO0D,EAAYtkB,YAAY4gB,EACnC,IAEO,CACH6C,QAASA,EACTD,QAASA,EAEjB,EAEIyB,GAAoC,SAA2CzQ,GAC/E,OAAOzhB,OAAO2rB,KAAKlK,GAAY5R,QAAO,SAAUgd,EAAK5oB,GACjD,IAAIkuB,OAAkC,IAApB1Q,EAAWxd,GAAuBA,EAAM,KAAQwd,EAAWxd,GAAO,IAAO,GAAKA,EAChG,OAAO4oB,EAAMA,EAAM,IAAMsF,EAAOA,CACpC,GAAG,GACP,EAyBIC,GAAuC,SAA8C3Q,GACrF,IAAI4Q,EAAYttB,UAAUrH,OAAS,QAAsBovB,IAAjB/nB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAErF,OAAO/E,OAAO2rB,KAAKlK,GAAY5R,QAAO,SAAUkc,EAAK9nB,GAEjD,OADA8nB,EAAIH,GAAc3nB,IAAQA,GAAOwd,EAAWxd,GACrC8nB,CACX,GAAGsG,EACP,EA8CIC,GAAmB,SAA0BtuB,EAAMstB,EAAMiB,GACzD,OAAQvuB,GACJ,KAAK+mB,GAAUU,MACX,MAAO,CACH+G,YAAa,WACT,OAxC6DnnB,EAwClBimB,EAAKjmB,MAxCoBoW,EAwCb6P,EAAKrB,iBApC3DwC,EAAa,CAC1BxuB,IAAKoH,IACK4gB,KAAoB,EAC9B7H,EAAQgO,GAAqC3Q,EADTgR,GAGjC,CAAC,gBAAoB1H,GAAUU,MAAOrH,EAAO/Y,IATpB,IAA6CA,EAAOoW,EAChFgR,EAMArO,CAkCQ,EACAjC,SAAU,WACN,OApFQ,SAA+Bne,EAAMqH,EAAOoW,EAAY8Q,GAChF,IAAIG,EAAkBR,GAAkCzQ,GACpDkR,EAAiBhC,GAAatlB,GAClC,OAAOqnB,EAAkB,IAAM1uB,EAAO,IAAMioB,GAAmB,WAAeyG,EAAkB,IAAM9F,GAAwB+F,EAAgBJ,GAAU,KAAOvuB,EAAO,IAAM,IAAMA,EAAO,IAAMioB,GAAmB,WAAeW,GAAwB+F,EAAgBJ,GAAU,KAAOvuB,EAAO,GACrS,CAgF2B4uB,CAAsB5uB,EAAMstB,EAAKjmB,MAAOimB,EAAKrB,gBAAiBsC,EACzE,GAER,KAAKzH,GACL,KAAKA,GACD,MAAO,CACH0H,YAAa,WACT,OAAOJ,GAAqCd,EAChD,EACAnP,SAAU,WACN,OAAO+P,GAAkCZ,EAC7C,GAER,QACI,MAAO,CACHkB,YAAa,WACT,OA/Ce,SAAsCxuB,EAAMstB,GAC3E,OAAOA,EAAKh0B,KAAI,SAAUuwB,EAAKxvB,GAC3B,IAAIw0B,EAEAC,IAAaD,EAAa,CAC1B5uB,IAAK5F,IACK4tB,KAAoB,EAAM4G,GAaxC,OAXA7yB,OAAO2rB,KAAKkC,GAAKtf,SAAQ,SAAU0Z,GAC/B,IAAI8K,EAAkBnH,GAAc3D,IAAcA,EAElD,GAAI8K,IAAoBrH,IAA6BqH,IAAoBrH,GAAyB,CAC9F,IAAIhH,EAAUmJ,EAAI7lB,WAAa6lB,EAAIiE,QACnCgB,EAAUxqB,wBAA0B,CAAEC,OAAQmc,EAClD,MACIoO,EAAUC,GAAmBlF,EAAI5F,EAEzC,IAEO,gBAAoBjkB,EAAM8uB,EACrC,GACJ,CA0B2BE,CAA6BhvB,EAAMstB,EAC9C,EACAnP,SAAU,WACN,OAjGO,SAA8Bne,EAAMstB,EAAMiB,GACjE,OAAOjB,EAAKzhB,QAAO,SAAUgd,EAAKgB,GAC9B,IAAIoF,EAAgBjzB,OAAO2rB,KAAKkC,GAAKpwB,QAAO,SAAUwqB,GAClD,QAASA,IAAcyD,IAA6BzD,IAAcyD,GACtE,IAAG7b,QAAO,SAAU/R,EAAQmqB,GACxB,IAAIkK,OAAiC,IAAnBtE,EAAI5F,GAA6BA,EAAYA,EAAY,KAAQ2E,GAAwBiB,EAAI5F,GAAYsK,GAAU,IACrI,OAAOz0B,EAASA,EAAS,IAAMq0B,EAAOA,CAC1C,GAAG,IAECe,EAAarF,EAAI7lB,WAAa6lB,EAAIiE,SAAW,GAE7CqB,GAAqD,IAArCnH,GAAkBW,QAAQ3oB,GAE9C,OAAO6oB,EAAM,IAAM7oB,EAAO,IAAMioB,GAAmB,WAAegH,GAAiBE,EAAgB,KAAO,IAAMD,EAAa,KAAOlvB,EAAO,IAC/I,GAAG,GACP,CAkF2BovB,CAAqBpvB,EAAMstB,EAAMiB,EAC5C,GAGhB,EAEIc,GAAmB,SAA0B1pB,GAC7C,IAAI6lB,EAAU7lB,EAAK6lB,QACfC,EAAiB9lB,EAAK8lB,eACtB8C,EAAS5oB,EAAK4oB,OACd7C,EAAiB/lB,EAAK+lB,eACtBC,EAAWhmB,EAAKgmB,SAChBC,EAAWjmB,EAAKimB,SAChBC,EAAelmB,EAAKkmB,aACpBE,EAAapmB,EAAKomB,WAClBC,EAAYrmB,EAAKqmB,UACjBsD,EAAa3pB,EAAK0B,MAClBA,OAAuByhB,IAAfwG,EAA2B,GAAKA,EACxCrD,EAAkBtmB,EAAKsmB,gBAC3B,MAAO,CACHsD,KAAMjB,GAAiBvH,GAAUC,KAAMwE,EAAS+C,GAChD9C,eAAgB6C,GAAiBxH,GAAsB2E,EAAgB8C,GACvE7C,eAAgB4C,GAAiBxH,GAAsB4E,EAAgB6C,GACvEiB,KAAMlB,GAAiBvH,GAAUK,KAAMuE,EAAU4C,GACjDkB,KAAMnB,GAAiBvH,GAAUM,KAAMuE,EAAU2C,GACjDmB,SAAUpB,GAAiBvH,GAAUO,SAAUuE,EAAc0C,GAC7DoB,OAAQrB,GAAiBvH,GAAUQ,OAAQwE,EAAYwC,GACvDlxB,MAAOixB,GAAiBvH,GAAUS,MAAOwE,EAAWuC,GACpDlnB,MAAOinB,GAAiBvH,GAAUU,MAAO,CAAEpgB,MAAOA,EAAO4kB,gBAAiBA,GAAmBsC,GAErG,EAwPIqB,GAAoB,KAnmBC,SAA4B5G,GACjD,MAAO,CACHwC,QAAS/B,GAAwB,CAAC/B,GAAqBA,IAAwBsB,GAC/EyC,eAAgBnC,GAA2BxC,GAAsBkC,GACjE6G,MAAO3G,GAAqBF,EAAWnB,IACvC0G,OAAQrF,GAAqBF,EAAWnB,IACxC6D,eAAgBpC,GAA2BxC,GAAsBkC,GACjE2C,SAAU5B,GAAqBhD,GAAUK,KAAM,CAACM,GAAoBA,IAAsBsB,GAC1F4C,SAAU7B,GAAqBhD,GAAUM,KAAM,CAACK,GAAqBA,GAAwBA,GAA0BA,GAAyBA,IAA2BsB,GAC3K6C,aAAc9B,GAAqBhD,GAAUO,SAAU,CAACI,IAA4BsB,GACpF8C,oBAAqBzC,GAAuBL,GAC5C+C,WAAYhC,GAAqBhD,GAAUQ,OAAQ,CAACG,GAAoBA,IAA4BsB,GACpGgD,UAAWjC,GAAqBhD,GAAUS,MAAO,CAACE,IAA0BsB,GAC5E3hB,MAAO0hB,GAAsBC,GAC7BiD,gBAAiB3C,GAA2BxC,GAAuBkC,GAE3E,IAiC8B,SAAiCsC,GACvDF,IACAhnB,GAAqBgnB,IAGrBE,EAASuE,MACTzE,GAAkBjnB,IAAsB,WACpCknB,GAAiBC,GAAU,WACvBF,GAAkB,IACtB,GACJ,KAEAC,GAAiBC,GACjBF,GAAkB,KAE1B,GAmiBoFiE,GAA5D,EAJJ,WAChB,OAAO,IACX,IAIIS,IAxPyBnJ,EAwPHiJ,GArPf/I,EAAQD,EAAS,SAAUmJ,GAG9B,SAASC,IAEL,OAjlBS,SAAUC,EAAU3H,GACvC,KAAM2H,aAAoB3H,GACxB,MAAM,IAAInvB,UAAU,oCAExB,CA4kBY+2B,CAAepU,KAAMkU,GA9gBD,SAAUG,EAAM/kB,GAC9C,IAAK+kB,EACH,MAAM,IAAIC,eAAe,6DAG3B,OAAOhlB,GAAyB,iBAATA,GAAqC,mBAATA,EAA8B+kB,EAAP/kB,CAC5E,CAygBmBilB,CAA0BvU,KAAMiU,EAAiB7uB,MAAM4a,KAAM/a,WACxE,CA6LA,OAzuBO,SAAUuvB,EAAUC,GACjC,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIp3B,UAAU,kEAAoEo3B,GAG1FD,EAASj0B,UAAYL,OAAOgkB,OAAOuQ,GAAcA,EAAWl0B,UAAW,CACrE0jB,YAAa,CACXtU,MAAO6kB,EACP/P,YAAY,EACZE,UAAU,EACVD,cAAc,KAGd+P,IAAYv0B,OAAO2jB,eAAiB3jB,OAAO2jB,eAAe2Q,EAAUC,GAAcD,EAAS1Q,UAAY2Q,EAC7G,CAyhBQC,CAASR,EAAeD,GAOxBC,EAAc3zB,UAAUo0B,sBAAwB,SAA+BC,GAC3E,OAAQ,IAAQ5U,KAAKsE,MAAOsQ,EAChC,EAEAV,EAAc3zB,UAAUs0B,yBAA2B,SAAkCC,EAAOC,GACxF,IAAKA,EACD,OAAO,KAGX,OAAQD,EAAM5wB,MACV,KAAK+mB,GAAUQ,OACf,KAAKR,GAAUO,SACX,MAAO,CACHtjB,UAAW6sB,GAGnB,KAAK9J,GAAUS,MACX,MAAO,CACHsG,QAAS+C,GAIrB,MAAM,IAAIrwB,MAAM,IAAMowB,EAAM5wB,KAAO,qGACvC,EAEAgwB,EAAc3zB,UAAUy0B,yBAA2B,SAAkCnrB,GACjF,IAAIorB,EAEAH,EAAQjrB,EAAKirB,MACbI,EAAoBrrB,EAAKqrB,kBACzBC,EAAgBtrB,EAAKsrB,cACrBJ,EAAiBlrB,EAAKkrB,eAE1B,OAAOpI,GAAS,CAAC,EAAGuI,IAAoBD,EAAwB,CAAC,GAAyBH,EAAM5wB,MAAQ,GAAGmB,OAAO6vB,EAAkBJ,EAAM5wB,OAAS,GAAI,CAACyoB,GAAS,CAAC,EAAGwI,EAAenV,KAAK6U,yBAAyBC,EAAOC,MAAoBE,GACjP,EAEAf,EAAc3zB,UAAU60B,sBAAwB,SAA+B3qB,GAC3E,IAAI4qB,EAAwBC,EAExBR,EAAQrqB,EAAMqqB,MACdS,EAAW9qB,EAAM8qB,SACjBJ,EAAgB1qB,EAAM0qB,cACtBJ,EAAiBtqB,EAAMsqB,eAE3B,OAAQD,EAAM5wB,MACV,KAAK+mB,GAAUU,MACX,OAAOgB,GAAS,CAAC,EAAG4I,IAAWF,EAAyB,CAAC,GAA0BP,EAAM5wB,MAAQ6wB,EAAgBM,EAAuBlF,gBAAkBxD,GAAS,CAAC,EAAGwI,GAAgBE,IAE3L,KAAKpK,GAAUE,KACX,OAAOwB,GAAS,CAAC,EAAG4I,EAAU,CAC1B5F,eAAgBhD,GAAS,CAAC,EAAGwI,KAGrC,KAAKlK,GAAUI,KACX,OAAOsB,GAAS,CAAC,EAAG4I,EAAU,CAC1B3F,eAAgBjD,GAAS,CAAC,EAAGwI,KAIzC,OAAOxI,GAAS,CAAC,EAAG4I,IAAWD,EAAyB,CAAC,GAA0BR,EAAM5wB,MAAQyoB,GAAS,CAAC,EAAGwI,GAAgBG,GAClI,EAEApB,EAAc3zB,UAAUi1B,4BAA8B,SAAqCN,EAAmBK,GAC1G,IAAIE,EAAoB9I,GAAS,CAAC,EAAG4I,GAQrC,OANAr1B,OAAO2rB,KAAKqJ,GAAmBzmB,SAAQ,SAAUinB,GAC7C,IAAIC,EAEJF,EAAoB9I,GAAS,CAAC,EAAG8I,IAAoBE,EAAyB,CAAC,GAA0BD,GAAkBR,EAAkBQ,GAAiBC,GAClK,IAEOF,CACX,EAEAvB,EAAc3zB,UAAUq1B,sBAAwB,SAA+Bd,EAAOC,GAmBlF,OAAO,CACX,EAEAb,EAAc3zB,UAAUs1B,mBAAqB,SAA4BvyB,EAAUiyB,GAC/E,IAAIO,EAAS9V,KAETkV,EAAoB,CAAC,EAyCzB,OAvCA,WAAezmB,QAAQnL,GAAU,SAAUwxB,GACvC,GAAKA,GAAUA,EAAMxQ,MAArB,CAIA,IAAIyR,EAAejB,EAAMxQ,MACrByQ,EAAiBgB,EAAazyB,SAG9B6xB,EAhOoB,SAA2C7Q,GAC/E,IAAI0R,EAAiB/wB,UAAUrH,OAAS,QAAsBovB,IAAjB/nB,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE1F,OAAO/E,OAAO2rB,KAAKvH,GAAOvU,QAAO,SAAUkc,EAAK9nB,GAE5C,OADA8nB,EAAID,GAAa7nB,IAAQA,GAAOmgB,EAAMngB,GAC/B8nB,CACX,GAAG+J,EACP,CAyNoCC,CAFHrJ,GAAwBmJ,EAAc,CAAC,cAMxD,OAFAD,EAAOF,sBAAsBd,EAAOC,GAE5BD,EAAM5wB,MACV,KAAK+mB,GAAUK,KACf,KAAKL,GAAUM,KACf,KAAKN,GAAUO,SACf,KAAKP,GAAUQ,OACf,KAAKR,GAAUS,MACXwJ,EAAoBY,EAAOd,yBAAyB,CAChDF,MAAOA,EACPI,kBAAmBA,EACnBC,cAAeA,EACfJ,eAAgBA,IAEpB,MAEJ,QACIQ,EAAWO,EAAOV,sBAAsB,CACpCN,MAAOA,EACPS,SAAUA,EACVJ,cAAeA,EACfJ,eAAgBA,IA7B5B,CAiCJ,IAEAQ,EAAWvV,KAAKwV,4BAA4BN,EAAmBK,EAEnE,EAEArB,EAAc3zB,UAAU21B,OAAS,WAC7B,IAAIC,EAASnW,KAAKsE,MACdhhB,EAAW6yB,EAAO7yB,SAClBghB,EAAQsI,GAAwBuJ,EAAQ,CAAC,aAEzCZ,EAAW5I,GAAS,CAAC,EAAGrI,GAM5B,OAJIhhB,IACAiyB,EAAWvV,KAAK6V,mBAAmBvyB,EAAUiyB,IAG1C,gBAAoB1K,EAAW0K,EAC1C,EAEAlJ,GAAY6H,EAAe,KAAM,CAAC,CAC9B/vB,IAAK,YAyBLiyB,IAAK,SAAgB92B,GACjBurB,EAAUvrB,UAAYA,CAC1B,KAEG40B,CACX,CApMwB,CAoMtB,aAAkBpJ,EAAOzmB,UAAY,CACnCovB,KAAM,WACN9D,eAAgB,WAChBrsB,SAAU,cAAoB,CAAC,YAAkB,UAAiB,WAClE+yB,aAAc,WACdtC,MAAO,SACPjH,wBAAyB,SACzB8C,eAAgB,WAChB8D,KAAM,YAAkB,YACxBC,KAAM,YAAkB,YACxBC,SAAU,YAAkB,YAC5B5D,oBAAqB,SACrB6D,OAAQ,YAAkB,YAC1BtyB,MAAO,YAAkB,YACzBgK,MAAO,WACP4kB,gBAAiB,WACjBmG,cAAe,YAChBxL,EAAOyL,aAAe,CACrBxC,OAAO,EACPjH,yBAAyB,GAC1BhC,EAAO0L,KAAO3L,EAAU2L,KAAM1L,EAAO2L,OAAS,WAC7C,IAAIC,EAAc7L,EAAU4L,SAkB5B,OAjBKC,IAEDA,EAAcnD,GAAiB,CAC3B7D,QAAS,GACTC,eAAgB,CAAC,EACjB7C,yBAAyB,EACzB8C,eAAgB,CAAC,EACjBC,SAAU,GACVC,SAAU,GACVC,aAAc,GACdE,WAAY,GACZC,UAAW,GACX3kB,MAAO,GACP4kB,gBAAiB,CAAC,KAInBuG,CACX,EAAG3L,GAUPiJ,GAAa2C,aAAe3C,GAAayC,OAEzC,eCh3BO,MAAMG,GAAqB/sB,IAAA,IAAC,QACjCgtB,EAAO,aACPC,EAAY,UACZC,EAAS,WACTC,EAAa,IAIdntB,EAAA,MACe,CACZ,QAAS,eACT,MAAUgtB,EAAO,iBACjB9sB,KAAMgtB,EACNrsB,IAAKmsB,EACLI,OAAQD,EACRE,KAAM,CACJ,QAAS,cACT,MAAUL,EAAO,SACjBM,WAAY,QACZzsB,IAAI,GAAImsB,EAAUC,EAClB11B,MAAO,MACPC,OAAQ,MACR+1B,QAASL,GAEXxxB,MAAO,CACL,MAAUsxB,EAAO,UAEpB,EAEUQ,GAAgB5sB,IAAA,IAAC,QAC5BosB,EAAO,KACP9sB,EAAI,YACJyB,GAC2Df,EAAA,MAClD,CACP,QAAS,UACT,MAAUosB,EAAO,YACjBnsB,IAAKmsB,EACL9sB,KAAMA,EACNyB,YAAaA,EACb8rB,UAAW,CACT,MAAUT,EAAO,kBAEnBM,WAAY,QACb,EAEUI,GAAwBC,IAAA,IAAC,QACpCX,EAAO,UACPY,EAAS,QACTC,GAC4DF,EAAA,MAC5C,CACd,QAAS,iBACThsB,YAAa,mBACbzB,KAAM,cACN,MAAU8sB,EAAO,eACbc,sBACF,IAAIC,EAAO,CACT,CACE,QAAS,WACTz1B,SAAU,IACV01B,KAAM,CACJ,QAAS,UACT,MAAUH,EAAO,YACjBhtB,IAAKmsB,EACL9sB,KAAM,cAkBZ,OAbI0tB,GACFG,EAAKloB,KAAK,CACR,QAAS,WACTvN,SAAU,IACV01B,KAAM,CACJ,QAAS,UACT,MAAUhB,EAAO,YACjBnsB,IAAKgtB,EACL3tB,KAAM0tB,KAKLG,CACT,EACD,EAEUE,GAAgBC,IAAA,IAAC,YAC5BvsB,EAAW,QACXksB,EAAO,KACP3tB,EAAI,QACJ8sB,GACuEkB,EAAA,MAC9D,CACP,QAAS,UACT,MAAUL,EAAO,YACjBhtB,IAAKgtB,EACL3tB,KAAMA,EACNiuB,SAAU,CACR,MAAUnB,EAAO,aAEnBoB,MAAO,CACL,MAAUpB,EAAO,kBAEnBrrB,YAAaA,EACb0sB,WAAY,CACV,MAAUrB,EAAO,gBAEnBM,WAAY,QACb,EAEUgB,GAAiBr1B,IAAA,IAAC,YAC7B0I,EAAW,KACXzB,EAAI,QACJ8sB,EAAO,QACPa,EAAO,cACPU,EAAa,aACbC,GASDv1B,EAAA,MACU,CACP,QAAS,UACT,MAAU40B,EAAO,YACjBhtB,IAAI,GAAIgtB,EACR3tB,KAAMA,EACNiuB,SAAU,CACR,MAAUnB,EAAO,aAEnBoB,MAAO,CACL,MAAUpB,EAAO,kBAEnBrrB,YAAaA,EACb4sB,cAAeA,EACfC,aAAcA,EACdH,WAAY,CACV,MAAUrB,EAAO,gBAEnBM,WAAY,QACb,EAuBUmB,GAAcjxB,IAAA,IAAC,QAC1BqwB,EAAO,cACPa,GACoDlxB,EAAA,MACvC,CACX,QAAS,cACT,MAAUqwB,EAAO,iBACjBlsB,YAAa,cACbd,IAAK6tB,EACLpB,WAAY,QACb,EAEUqB,GAAavwB,IAAA,IAAC,QACzB4uB,EAAO,QACPa,EAAO,UACPD,EAAS,YACTjsB,EAAW,SACXitB,EAAQ,YACRC,EAAW,cACXN,EAAa,aACbC,EAAY,QACZM,GAYD1wB,EAAA,MACU,CACP,QAAS,UACTyC,IAAKmsB,EACL+B,SAAUnB,EACVjsB,YAAaA,EACbitB,SAAUA,EACVI,iBAAkB,OAClBvB,UAAW,CACT,MAAUT,EAAO,kBAEnBtxB,MAAO,CACL,MAAUmyB,EAAO,kBAEnBgB,YAAaA,EACbN,cAAeA,EACfC,aAAcA,EACVS,aACF,OAAIH,EAAQ/6B,OAAS,EACZ+6B,EAAQn7B,KAAIu7B,IAAa,IAAZ,GAAE/rB,GAAI+rB,EACxB,MAAO,CAAE,MAAUlC,EAAO,aAAa7pB,EAAM,IAI1C,CAAE,MAAU6pB,EAAO,aAAa8B,EAAQ,GAAG3rB,GACpD,EACD,EAEUgsB,GAAcC,IAAA,IAAC,QAC1BpC,EAAO,aACPC,EAAY,KACZ/sB,EAAI,UACJgtB,EAAS,YACTvrB,EAAW,UACXisB,EAAS,QACTC,EAAO,cACPa,EAAa,WACbvB,EAAU,SACVyB,EAAQ,YACRC,EAAW,aACXL,EAAY,cACZD,EAAa,QACbO,GACiBM,EAAA,MACV,CACL,WAAY,qBACZ,SAAU,CACRrC,GAAmB,CACjBC,UACAC,eACAC,YACAC,eAEFK,GAAc,CACZR,UACA9sB,OACAyB,gBAEF+rB,GAAsB,CACpBV,UACAY,YACAC,YAEFD,EACIU,GAAe,CACb3sB,cACAksB,UACA3tB,OACA8sB,UACAuB,gBACAC,iBAEFP,GAAc,CACZtsB,cACAksB,UACA3tB,OACA8sB,YAENY,GACEa,GAAY,CACVZ,UACAa,mBACAlzB,OACD,CACDoyB,GACEkB,EAAQn7B,KAAI07B,IAAA,IAAC,GAAElsB,EAAE,KAAEjD,EAAI,IAAEovB,EAAG,WAAEnC,GAAYkC,EAAA,MA3IxBl1B,KAAA,IAAC,QAC3B6yB,EAAO,GACP7pB,EAAE,KACFjD,EAAI,IACJovB,EAAG,WACHnC,EAAa,IACsDhzB,EAAA,MAC3D,CACN,QAAS,SACT,MAAU6yB,EAAO,aAAa7pB,EAC9BjD,KAAMA,EACNxE,MAAO,CACL,QAAS,cACT,MAAUsxB,EAAO,eACjBM,WAAY,QACZC,QAASrtB,GAEXyB,YAAa2tB,EACblC,OAAQD,EACT,EAyHSoC,CAAa,CACXvC,UACA7pB,KACAjD,OACAovB,MACAnC,cACA,KAEN,CACFS,GACEe,GAAW,CACT3B,UACAa,UACAD,YACAjsB,cACAitB,WACAC,cACAN,gBACAC,eACAM,cAEJh7B,QAAO+E,GAAKA,IACf,ECzOH,OArFgCmH,IAWzB,IAX0B,UAC/BwvB,EAAS,WACTC,EAAU,gBACVC,EAAe,UACf9B,EAAS,QACTC,EAAO,UACP8B,EAAS,SACTf,EAAQ,KACRgB,EAAI,QACJd,EAAO,QACPe,GAAU,GACX7vB,EACC,MACE2B,YAAa+d,EACbhe,MAAOwrB,EAAS,KAChBhtB,EAAI,QACJ8sB,EAAO,UACPnrB,EACAR,OAAS4d,UAAW6Q,GACpB1uB,MAAQ6d,UAAWgO,KACjB/rB,EAAAA,EAAAA,MAEE6uB,EAAUluB,EAAUK,MAAK9J,GAAe,WAAVA,EAAE8H,OAChCitB,EAAatrB,EAAU/N,QAAOsE,IAAMA,EAAE6H,WAAUtM,KAAIyE,GAAKA,EAAEyI,MAC3D6tB,EAAa,GAAM1B,GAAUwC,GAAaM,GAC1CnuB,GAAe+tB,GAAmBhQ,GAAmB,IAAI3qB,QAC7D,KACA,OAEI2M,EAAQksB,GAAa+B,GAAazC,GAAa,GAC/CrsB,EAAMgtB,GAAWb,EAEvB,OACE5sB,EAAAA,cAAC4vB,GAAM,CACLtuB,MAAUxB,GAAOwB,EAAQ,MAAQA,EAAQ,IACzCqkB,eAAgB,CAAEkK,KAAM,MACxBjG,OAAQ,EACNkG,EAAAA,GAAAA,IACEf,GAAY,CACVnC,UACAC,eACA/sB,OACAgtB,YACAvrB,cACAisB,YACAC,QAAShtB,EACT6tB,gBACAvB,aACAyB,WACAC,YAAae,EACbpB,aAAcoB,EACdrB,cAAeqB,EACfd,eAKN1uB,EAAAA,cAAA,QAAMF,KAAK,cAAc6a,QAAQ,SACjC3a,EAAAA,cAAA,QAAM+vB,SAAS,OAAOpV,QAASrZ,IAC/BtB,EAAAA,cAAA,QAAM+vB,SAAS,cAAcpV,QAASpZ,IACtCvB,EAAAA,cAAA,QAAM+vB,SAAS,QAAQpV,QAAS2T,IAChCtuB,EAAAA,cAAA,QAAMF,KAAK,cAAc6a,QAASpZ,IAElCvB,EAAAA,cAAA,QAAMF,KAAK,eAAe6a,QAAQ,wBAClC3a,EAAAA,cAAA,QAAMF,KAAK,eAAe6a,QAAS7a,IACnCE,EAAAA,cAAA,QAAMF,KAAK,gBAAgB6a,QAASrZ,IACpCtB,EAAAA,cAAA,QAAMF,KAAK,sBAAsB6a,QAASpZ,IACzCouB,GAAW3vB,EAAAA,cAAA,QAAMF,KAAK,kBAAkB6a,QAASgV,EAAQlvB,MACzD4uB,GAAcrvB,EAAAA,cAAA,QAAMF,KAAK,iBAAiB6a,QAAQ,iBAClD0U,GACCrvB,EAAAA,cAAA,QAAMF,KAAK,gBAAgB6a,QAAY0U,EAAU,cAGnDrvB,EAAAA,cAAA,QAAMykB,SAAS,UAAU9J,QAAQ,YACjC3a,EAAAA,cAAA,QAAMykB,SAAS,WAAW9J,QAASrZ,IACnCtB,EAAAA,cAAA,QAAMykB,SAAS,SAAS9J,QAASla,IACjCT,EAAAA,cAAA,QAAMykB,SAAS,WAAW9J,QAAS2T,IACnCtuB,EAAAA,cAAA,QAAMykB,SAAS,iBAAiB9J,QAASpZ,IACzCvB,EAAAA,cAAA,QAAMykB,SAAS,eAAe9J,QAAS7a,IAEtC2vB,GAAWzvB,EAAAA,cAAA,QAAMF,KAAK,SAAS6a,QAAQ,YACjC,ECzDb,OAvCoD/a,IAW7C,IAX8C,gBACnD0vB,EAAe,UACfF,EAAS,UACT5B,EAAS,QACTC,EAAO,UACP8B,EAAS,WACTF,EAAU,KACVG,EAAI,QACJd,EAAO,QACPe,EAAO,SACPp2B,GACDuG,EAGC,OAFA+C,EAAAA,EAAAA,MAGE3C,EAAAA,cAAA,OAAK3I,UAAU,SACb2I,EAAAA,cAACgwB,GAAG,CACFV,gBAAiBA,EACjBF,UAAWA,EACX5B,UAAWA,EACXC,QAASA,EACT8B,UAAWA,EACXF,WAAYA,EACZG,KAAMA,EACNd,QAASA,EACTe,QAASA,IAGXzvB,EAAAA,cAACif,EAAM,CAAC5nB,UAAU,+CAElB2I,EAAAA,cAAA,OAAK3I,UAAU,wCAAwCgC,GAEvD2G,EAAAA,cAACwf,EAAiB,CAACnoB,UAAU,iHAE7B2I,EAAAA,cAACkf,EAAY,CAAC7nB,UAAU,+CACpB,oBC1CV,IAAI44B,EAAoC,oBAAZtY,QACxBuY,EAAwB,mBAARC,IAChBC,EAAwB,mBAAR10B,IAChB20B,EAAwC,mBAAhBC,eAAgCA,YAAYC,OAIxE,SAASC,EAAM/5B,EAAG+F,GAEhB,GAAI/F,IAAM+F,EAAG,OAAO,EAEpB,GAAI/F,GAAK+F,GAAiB,iBAAL/F,GAA6B,iBAAL+F,EAAe,CAC1D,GAAI/F,EAAEujB,cAAgBxd,EAAEwd,YAAa,OAAO,EAE5C,IAAIrmB,EAAQW,EAAGstB,EA6BX6O,EA5BJ,GAAIv9B,MAAMC,QAAQsD,GAAI,CAEpB,IADA9C,EAAS8C,EAAE9C,SACG6I,EAAE7I,OAAQ,OAAO,EAC/B,IAAKW,EAAIX,EAAgB,GAARW,KACf,IAAKk8B,EAAM/5B,EAAEnC,GAAIkI,EAAElI,IAAK,OAAO,EACjC,OAAO,CACT,CAuBA,GAAI47B,GAAWz5B,aAAa05B,KAAS3zB,aAAa2zB,IAAM,CACtD,GAAI15B,EAAEi6B,OAASl0B,EAAEk0B,KAAM,OAAO,EAE9B,IADAD,EAAKh6B,EAAEk6B,YACEr8B,EAAIm8B,EAAGlrB,QAAQC,UACjBhJ,EAAEuB,IAAIzJ,EAAEoR,MAAM,IAAK,OAAO,EAEjC,IADA+qB,EAAKh6B,EAAEk6B,YACEr8B,EAAIm8B,EAAGlrB,QAAQC,UACjBgrB,EAAMl8B,EAAEoR,MAAM,GAAIlJ,EAAEgf,IAAIlnB,EAAEoR,MAAM,KAAM,OAAO,EACpD,OAAO,CACT,CAEA,GAAI0qB,GAAW35B,aAAaiF,KAASc,aAAad,IAAM,CACtD,GAAIjF,EAAEi6B,OAASl0B,EAAEk0B,KAAM,OAAO,EAE9B,IADAD,EAAKh6B,EAAEk6B,YACEr8B,EAAIm8B,EAAGlrB,QAAQC,UACjBhJ,EAAEuB,IAAIzJ,EAAEoR,MAAM,IAAK,OAAO,EACjC,OAAO,CACT,CAGA,GAAI2qB,GAAkBC,YAAYC,OAAO95B,IAAM65B,YAAYC,OAAO/zB,GAAI,CAEpE,IADA7I,EAAS8C,EAAE9C,SACG6I,EAAE7I,OAAQ,OAAO,EAC/B,IAAKW,EAAIX,EAAgB,GAARW,KACf,GAAImC,EAAEnC,KAAOkI,EAAElI,GAAI,OAAO,EAC5B,OAAO,CACT,CAEA,GAAImC,EAAEujB,cAAgBrnB,OAAQ,OAAO8D,EAAE7D,SAAW4J,EAAE5J,QAAU6D,EAAEm6B,QAAUp0B,EAAEo0B,MAK5E,GAAIn6B,EAAEo6B,UAAY56B,OAAOK,UAAUu6B,SAAgC,mBAAdp6B,EAAEo6B,SAA+C,mBAAdr0B,EAAEq0B,QAAwB,OAAOp6B,EAAEo6B,YAAcr0B,EAAEq0B,UAC3I,GAAIp6B,EAAE2hB,WAAaniB,OAAOK,UAAU8hB,UAAkC,mBAAf3hB,EAAE2hB,UAAiD,mBAAf5b,EAAE4b,SAAyB,OAAO3hB,EAAE2hB,aAAe5b,EAAE4b,WAKhJ,IADAzkB,GADAiuB,EAAO3rB,OAAO2rB,KAAKnrB,IACL9C,UACCsC,OAAO2rB,KAAKplB,GAAG7I,OAAQ,OAAO,EAE7C,IAAKW,EAAIX,EAAgB,GAARW,KACf,IAAK2B,OAAOK,UAAUwf,eAAezQ,KAAK7I,EAAGolB,EAAKttB,IAAK,OAAO,EAKhE,GAAI27B,GAAkBx5B,aAAakhB,QAAS,OAAO,EAGnD,IAAKrjB,EAAIX,EAAgB,GAARW,KACf,IAAiB,WAAZstB,EAAKttB,IAA+B,QAAZstB,EAAKttB,IAA4B,QAAZstB,EAAKttB,KAAiBmC,EAAEq6B,YAarEN,EAAM/5B,EAAEmrB,EAAKttB,IAAKkI,EAAEolB,EAAKttB,KAAM,OAAO,EAK7C,OAAO,CACT,CAEA,OAAOmC,GAAMA,GAAK+F,GAAMA,CAC1B,CAGArH,EAAOC,QAAU,SAAiBqB,EAAG+F,GACnC,IACE,OAAOg0B,EAAM/5B,EAAG+F,EAClB,CAAE,MAAOmJ,GACP,IAAMA,EAAMsV,SAAW,IAAIlZ,MAAM,oBAO/B,OADAhD,QAAQC,KAAK,mDACN,EAGT,MAAM2G,CACR,CACF,qCCzH6CvQ,EAAQ,QAAmB,EACxE,IAAI27B,EAAY,EAAQ,MACxB96B,OAAOskB,eAAenlB,EAAS,KAA/B,CAAqDolB,YAAY,EAAMgB,IAAK,WAAc,OAAOuV,EAAUjB,gBAAkB,uCCH7H75B,OAAOskB,eAAenlB,EAAS,aAAc,CAAEsQ,OAAO,IACtDtQ,EAAQ06B,iBAAmB16B,EAAQ47B,kBAAoB57B,EAAQ67B,YAAS,EACxE,MAAMjxB,EAAQ,EAAQ,MAKtB,SAASgxB,EAAkBpD,EAAM36B,EAAU,CAAC,GACxC,MAAO,CACHgH,KAAM,sBACNsE,wBAAyB,CACrBC,OAAQxB,KAAKC,UAAU2wB,EAAMsD,EAAoBj+B,EAAQk+B,QAGrE,CARA/7B,EAAQ67B,OAHR,SAAgB5W,GACZ,OAAOra,EAAMxK,cAAc,SAAUS,OAAOC,OAAO,CAAC,EAAG86B,EAAkB3W,EAAMuT,KAAMvT,IACzF,EAUAjlB,EAAQ47B,kBAAoBA,EAO5B57B,EAAQ06B,iBANR,SAA0BlC,EAAM36B,EAAU,CAAC,GACvC,MAAO,CACHgH,KAAM,sBACNgE,UAAWjB,KAAKC,UAAU2wB,EAAMsD,EAAoBj+B,EAAQk+B,OAEpE,EAEA,MAAMC,EAAkBn7B,OAAOo7B,OAAO,CAClC,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,WAEHC,EAAe,IAAI3+B,OAAO,IAAIsD,OAAO2rB,KAAKwP,GAAiBx9B,KAAK,OAAQ,KACxE29B,EAAmB/6B,GAAM46B,EAAgB56B,GAKzC06B,EAGK,CAACn8B,EAAG2Q,KACP,cAAeA,GACX,IAAK,SAED,GAAc,OAAVA,EACA,OAEJ,OAAOA,EACX,IAAK,SACL,IAAK,UACL,IAAK,SACD,OAAOA,EACX,IAAK,SACD,OAAOA,EAAM/Q,QAAQ28B,EAAcC,GACvC,QAII,OAER,qCCvER,IAF0BC,EAEtBxxB,EAAQ,EAAQ,MAChByxB,GAHsBD,EAGWxxB,IAHwB,iBAAPwxB,GAAoB,YAAaA,EAAMA,EAAY,QAAIA,EAK7G,SAASE,EAAgB1P,EAAK9nB,EAAKwL,GAYjC,OAXIxL,KAAO8nB,EACT/rB,OAAOskB,eAAeyH,EAAK9nB,EAAK,CAC9BwL,MAAOA,EACP8U,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZsH,EAAI9nB,GAAOwL,EAGNsc,CACT,CAQA,IAAI3sB,IAAiC,oBAAXC,SAA0BA,OAAOC,WAAYD,OAAOC,SAASC,eAgGvFL,EAAOC,QA/FP,SAAwBu8B,EAAoBC,EAA2BtI,GACrE,GAAkC,mBAAvBqI,EACT,MAAM,IAAIl3B,MAAM,iDAGlB,GAAyC,mBAA9Bm3B,EACT,MAAM,IAAIn3B,MAAM,wDAGlB,QAAgC,IAArB6uB,GAAgE,mBAArBA,EACpD,MAAM,IAAI7uB,MAAM,mEAOlB,OAAO,SAAco3B,GACnB,GAAgC,mBAArBA,EACT,MAAM,IAAIp3B,MAAM,sDAGlB,IACIwhB,EADA6V,EAAmB,GAGvB,SAASC,IACP9V,EAAQ0V,EAAmBG,EAAiBv+B,KAAI,SAAU22B,GACxD,OAAOA,EAAS7P,KAClB,KAEI2X,EAAW38B,UACbu8B,EAA0B3V,GACjBqN,IACTrN,EAAQqN,EAAiBrN,GAE7B,CAEA,IAAI+V,EAEJ,SAAUC,GA9Cd,IAAwB1H,EAAUC,EAiD5B,SAASwH,IACP,OAAOC,EAAe92B,MAAM4a,KAAM/a,YAAc+a,IAClD,CAnD4ByU,EA+CDyH,GA/CT1H,EA+CHyH,GA9CV17B,UAAYL,OAAOgkB,OAAOuQ,EAAWl0B,WAC9Ci0B,EAASj0B,UAAU0jB,YAAcuQ,EACjCA,EAAS1Q,UAAY2Q,EAoDjBwH,EAAWzF,KAAO,WAChB,OAAOtQ,CACT,EAEA+V,EAAWxF,OAAS,WAClB,GAAIwF,EAAW38B,UACb,MAAM,IAAIoF,MAAM,oFAGlB,IAAIy3B,EAAgBjW,EAGpB,OAFAA,OAAQ8G,EACR+O,EAAmB,GACZI,CACT,EAEA,IAAIC,EAASH,EAAW17B,UAqBxB,OAnBA67B,EAAOC,0BAA4B,WACjCN,EAAiBrsB,KAAKsQ,MACtBgc,GACF,EAEAI,EAAOE,mBAAqB,WAC1BN,GACF,EAEAI,EAAOG,qBAAuB,WAC5B,IAAI7b,EAAQqb,EAAiBlP,QAAQ7M,MACrC+b,EAAiBxK,OAAO7Q,EAAO,GAC/Bsb,GACF,EAEAI,EAAOlG,OAAS,WACd,OAAOwF,EAAej8B,cAAcq8B,EAAkB9b,KAAKsE,MAC7D,EAEO2X,CACT,CA9CA,CA8CEhyB,EAAMuyB,eAMR,OAJAb,EAAgBM,EAAY,cAAe,cA1E7C,SAAwBH,GACtB,OAAOA,EAAiBv3B,aAAeu3B,EAAiB/xB,MAAQ,WAClE,CAwE6D0yB,CAAeX,GAAoB,KAE9FH,EAAgBM,EAAY,YAAa38B,GAElC28B,CACT,CACF","sources":["webpack://www/./node_modules/camelcase/index.js","webpack://www/./node_modules/exenv/index.js","webpack://www/./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js","webpack://www/../src/image-utils.ts","webpack://www/../src/components/hooks.ts","webpack://www/../src/components/layout-wrapper.tsx","webpack://www/../src/components/picture.tsx","webpack://www/../src/components/placeholder.tsx","webpack://www/../src/components/main-image.tsx","webpack://www/../src/components/gatsby-image.server.tsx","webpack://www/../src/components/gatsby-image.browser.tsx","webpack://www/../src/components/static-image.server.tsx","webpack://www/../src/components/static-image.tsx","webpack://www/./node_modules/@pitayan/gatsby-theme-pitayan/src/components/NavigationLink/index.tsx","webpack://www/./node_modules/@pitayan/gatsby-theme-pitayan/src/components/NavigationLinksGroup/index.tsx","webpack://www/./node_modules/@pitayan/gatsby-theme-pitayan/src/hooks/useSiteMetadata.ts","webpack://www/./node_modules/@pitayan/gatsby-theme-pitayan/src/hooks/useCookiePrompt.tsx","webpack://www/./node_modules/@pitayan/gatsby-theme-pitayan/src/hooks/useTextSelection.ts","webpack://www/./node_modules/@pitayan/gatsby-theme-pitayan/src/components/DarkModeToggle/index.tsx","webpack://www/./node_modules/react-from-dom/esm/helpers.js","webpack://www/./node_modules/react-from-dom/esm/index.js","webpack://www/./node_modules/react-inlinesvg/esm/helpers.js","webpack://www/./node_modules/react-inlinesvg/esm/index.js","webpack://www/./node_modules/@pitayan/gatsby-theme-pitayan/src/components/SiteLogo/index.tsx","webpack://www/./node_modules/@pitayan/gatsby-theme-pitayan/src/components/TopNav/index.tsx","webpack://www/./node_modules/@pitayan/gatsby-theme-pitayan/src/components/BottomFooter/index.tsx","webpack://www/./node_modules/@pitayan/gatsby-theme-pitayan/src/components/SubscriptionPanel/index.tsx","webpack://www/./node_modules/react-helmet/es/Helmet.js","webpack://www/./node_modules/@pitayan/gatsby-theme-pitayan/src/components/SEO/schema.ts","webpack://www/./node_modules/@pitayan/gatsby-theme-pitayan/src/components/SEO/index.tsx","webpack://www/./node_modules/@pitayan/gatsby-theme-pitayan/src/layouts/Default/index.tsx","webpack://www/./node_modules/react-fast-compare/index.js","webpack://www/./node_modules/react-schemaorg/dist/src/index.js","webpack://www/./node_modules/react-schemaorg/dist/src/json-ld.js","webpack://www/./node_modules/react-side-effect/lib/index.js"],"sourcesContent":["'use strict';\n\nconst UPPERCASE = /[\\p{Lu}]/u;\nconst LOWERCASE = /[\\p{Ll}]/u;\nconst LEADING_CAPITAL = /^[\\p{Lu}](?![\\p{Lu}])/gu;\nconst IDENTIFIER = /([\\p{Alpha}\\p{N}_]|$)/u;\nconst SEPARATORS = /[_.\\- ]+/;\n\nconst LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source);\nconst SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, 'gu');\nconst NUMBERS_AND_IDENTIFIER = new RegExp('\\\\d+' + IDENTIFIER.source, 'gu');\n\nconst preserveCamelCase = (string, toLowerCase, toUpperCase) => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst character = string[i];\n\n\t\tif (isLastCharLower && UPPERCASE.test(character)) {\n\t\t\tstring = string.slice(0, i) + '-' + string.slice(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character)) {\n\t\t\tstring = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst preserveConsecutiveUppercase = (input, toLowerCase) => {\n\tLEADING_CAPITAL.lastIndex = 0;\n\n\treturn input.replace(LEADING_CAPITAL, m1 => toLowerCase(m1));\n};\n\nconst postProcess = (input, toUpperCase) => {\n\tSEPARATORS_AND_IDENTIFIER.lastIndex = 0;\n\tNUMBERS_AND_IDENTIFIER.lastIndex = 0;\n\n\treturn input.replace(SEPARATORS_AND_IDENTIFIER, (_, identifier) => toUpperCase(identifier))\n\t\t.replace(NUMBERS_AND_IDENTIFIER, m => toUpperCase(m));\n};\n\nconst camelCase = (input, options) => {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = {\n\t\tpascalCase: false,\n\t\tpreserveConsecutiveUppercase: false,\n\t\t...options\n\t};\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tconst toLowerCase = options.locale === false ?\n\t\tstring => string.toLowerCase() :\n\t\tstring => string.toLocaleLowerCase(options.locale);\n\tconst toUpperCase = options.locale === false ?\n\t\tstring => string.toUpperCase() :\n\t\tstring => string.toLocaleUpperCase(options.locale);\n\n\tif (input.length === 1) {\n\t\treturn options.pascalCase ? toUpperCase(input) : toLowerCase(input);\n\t}\n\n\tconst hasUpperCase = input !== toLowerCase(input);\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input, toLowerCase, toUpperCase);\n\t}\n\n\tinput = input.replace(LEADING_SEPARATORS, '');\n\n\tif (options.preserveConsecutiveUppercase) {\n\t\tinput = preserveConsecutiveUppercase(input, toLowerCase);\n\t} else {\n\t\tinput = toLowerCase(input);\n\t}\n\n\tif (options.pascalCase) {\n\t\tinput = toUpperCase(input.charAt(0)) + input.slice(1);\n\t}\n\n\treturn postProcess(input, toUpperCase);\n};\n\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;\n","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n","\"use strict\";\n\nmodule.exports = Object.assign;\n//# sourceMappingURL=object-assign.js.map","import camelCase from \"camelcase\"\nimport type { IGatsbyImageData } from \"./index\"\n\nconst DEFAULT_PIXEL_DENSITIES = [0.25, 0.5, 1, 2]\nexport const DEFAULT_BREAKPOINTS = [750, 1080, 1366, 1920]\nexport const EVERY_BREAKPOINT = [\n 320, 654, 768, 1024, 1366, 1600, 1920, 2048, 2560, 3440, 3840, 4096,\n]\nconst DEFAULT_FLUID_WIDTH = 800\nconst DEFAULT_FIXED_WIDTH = 800\nconst DEFAULT_ASPECT_RATIO = 4 / 3\n\nexport type Fit = \"cover\" | \"fill\" | \"inside\" | \"outside\" | \"contain\"\n\nexport type Layout = \"fixed\" | \"fullWidth\" | \"constrained\"\nexport type ImageFormat = \"jpg\" | \"png\" | \"webp\" | \"avif\" | \"auto\" | \"\"\n\n/**\n * The minimal required reporter, as we don't want to import it from gatsby-cli\n */\nexport interface IReporter {\n warn(message: string): void\n}\n\nexport interface ISharpGatsbyImageArgs {\n layout?: Layout\n formats?: Array<ImageFormat>\n placeholder?: \"tracedSVG\" | \"dominantColor\" | \"blurred\" | \"none\"\n tracedSVGOptions?: Record<string, unknown>\n width?: number\n height?: number\n aspectRatio?: number\n sizes?: string\n quality?: number\n transformOptions?: {\n fit?: Fit\n cropFocus?: number | string\n duotone?: {\n highlight: string\n shadow: string\n opacity?: number\n }\n grayscale?: boolean\n rotate?: number\n trim?: number\n }\n jpgOptions?: Record<string, unknown>\n pngOptions?: Record<string, unknown>\n webpOptions?: Record<string, unknown>\n avifOptions?: Record<string, unknown>\n blurredOptions?: { width?: number; toFormat?: ImageFormat }\n breakpoints?: Array<number>\n outputPixelDensities?: Array<number>\n backgroundColor?: string\n}\n\nexport interface IImageSizeArgs {\n width?: number\n height?: number\n layout?: Layout\n filename: string\n outputPixelDensities?: Array<number>\n breakpoints?: Array<number>\n fit?: Fit\n reporter?: IReporter\n sourceMetadata: { width: number; height: number }\n}\n\nexport interface IImageSizes {\n sizes: Array<number>\n presentationWidth: number\n presentationHeight: number\n aspectRatio: number\n unscaledWidth: number\n}\n\nexport interface IImage {\n src: string\n width: number\n height: number\n format: ImageFormat\n}\n\nexport interface IGatsbyImageHelperArgs {\n pluginName: string\n generateImageSource: (\n filename: string,\n width: number,\n height: number,\n format: ImageFormat,\n fit?: Fit,\n options?: Record<string, unknown>\n ) => IImage\n layout?: Layout\n formats?: Array<ImageFormat>\n filename: string\n placeholderURL?: string\n width?: number\n height?: number\n sizes?: string\n reporter?: IReporter\n sourceMetadata?: { width: number; height: number; format: ImageFormat }\n fit?: Fit\n options?: Record<string, unknown>\n breakpoints?: Array<number>\n backgroundColor?: string\n aspectRatio?: number\n}\n\nconst warn = (message: string): void => console.warn(message)\n\nconst sortNumeric = (a: number, b: number): number => a - b\n\nexport const getSizes = (width: number, layout: Layout): string | undefined => {\n switch (layout) {\n // If screen is wider than the max size, image width is the max size,\n // otherwise it's the width of the screen\n case `constrained`:\n return `(min-width: ${width}px) ${width}px, 100vw`\n\n // Image is always the same width, whatever the size of the screen\n case `fixed`:\n return `${width}px`\n\n // Image is always the width of the screen\n case `fullWidth`:\n return `100vw`\n\n default:\n return undefined\n }\n}\n\nexport const getSrcSet = (images: Array<IImage>): string =>\n images.map(image => `${image.src} ${image.width}w`).join(`,\\n`)\n\nexport function formatFromFilename(filename: string): ImageFormat | undefined {\n const dot = filename.lastIndexOf(`.`)\n if (dot !== -1) {\n const ext = filename.slice(dot + 1)\n if (ext === `jpeg`) {\n return `jpg`\n }\n if (ext.length === 3 || ext.length === 4) {\n return ext as ImageFormat\n }\n }\n return undefined\n}\n\nexport function setDefaultDimensions(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageHelperArgs {\n let {\n layout = `constrained`,\n width,\n height,\n sourceMetadata,\n breakpoints,\n aspectRatio,\n formats = [`auto`, `webp`],\n } = args\n formats = formats.map(format => format.toLowerCase() as ImageFormat)\n layout = camelCase(layout) as Layout\n\n if (width && height) {\n return { ...args, formats, layout, aspectRatio: width / height }\n }\n if (sourceMetadata.width && sourceMetadata.height && !aspectRatio) {\n aspectRatio = sourceMetadata.width / sourceMetadata.height\n }\n\n if (layout === `fullWidth`) {\n width = width || sourceMetadata.width || breakpoints[breakpoints.length - 1]\n height = height || Math.round(width / (aspectRatio || DEFAULT_ASPECT_RATIO))\n } else {\n if (!width) {\n if (height && aspectRatio) {\n width = height * aspectRatio\n } else if (sourceMetadata.width) {\n width = sourceMetadata.width\n } else if (height) {\n width = Math.round(height / DEFAULT_ASPECT_RATIO)\n } else {\n width = DEFAULT_FIXED_WIDTH\n }\n }\n\n if (aspectRatio && !height) {\n height = Math.round(width / aspectRatio)\n } else if (!aspectRatio) {\n aspectRatio = width / height\n }\n }\n return { ...args, width, height, aspectRatio, layout, formats }\n}\n\n/**\n * Use this for getting an image for the blurred placeholder. This ensures the\n * aspect ratio and crop match the main image\n */\nexport function getLowResolutionImageURL(\n args: IGatsbyImageHelperArgs,\n width = 20\n): string {\n args = setDefaultDimensions(args)\n const { generateImageSource, filename, aspectRatio } = args\n return generateImageSource(\n filename,\n width,\n Math.round(width / aspectRatio),\n args.sourceMetadata.format || `jpg`,\n args.fit,\n args.options\n )?.src\n}\n\nexport function generateImageData(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageData {\n args = setDefaultDimensions(args)\n\n let {\n pluginName,\n sourceMetadata,\n generateImageSource,\n layout,\n fit,\n options,\n width,\n height,\n filename,\n reporter = { warn },\n backgroundColor,\n placeholderURL,\n } = args\n\n if (!pluginName) {\n reporter.warn(\n `[gatsby-plugin-image] \"generateImageData\" was not passed a plugin name`\n )\n }\n\n if (typeof generateImageSource !== `function`) {\n throw new Error(`generateImageSource must be a function`)\n }\n\n if (!sourceMetadata || (!sourceMetadata.width && !sourceMetadata.height)) {\n // No metadata means we let the CDN handle max size etc, aspect ratio etc\n sourceMetadata = {\n width,\n height,\n format: sourceMetadata?.format || formatFromFilename(filename) || `auto`,\n }\n } else if (!sourceMetadata.format) {\n sourceMetadata.format = formatFromFilename(filename)\n }\n\n const formats = new Set<ImageFormat>(args.formats)\n\n if (formats.size === 0 || formats.has(`auto`) || formats.has(``)) {\n formats.delete(`auto`)\n formats.delete(``)\n formats.add(sourceMetadata.format)\n }\n\n if (formats.has(`jpg`) && formats.has(`png`)) {\n reporter.warn(\n `[${pluginName}] Specifying both 'jpg' and 'png' formats is not supported. Using 'auto' instead`\n )\n if (sourceMetadata.format === `jpg`) {\n formats.delete(`png`)\n } else {\n formats.delete(`jpg`)\n }\n }\n\n const imageSizes = calculateImageSizes({ ...args, sourceMetadata })\n\n const result: IGatsbyImageData[\"images\"] = {\n sources: [],\n }\n\n let sizes = args.sizes\n if (!sizes) {\n sizes = getSizes(imageSizes.presentationWidth, layout)\n }\n\n formats.forEach(format => {\n const images = imageSizes.sizes\n .map(size => {\n const imageSrc = generateImageSource(\n filename,\n size,\n Math.round(size / imageSizes.aspectRatio),\n format,\n fit,\n options\n )\n if (\n !imageSrc?.width ||\n !imageSrc.height ||\n !imageSrc.src ||\n !imageSrc.format\n ) {\n reporter.warn(\n `[${pluginName}] The resolver for image ${filename} returned an invalid value.`\n )\n return undefined\n }\n return imageSrc\n })\n .filter(Boolean)\n\n if (format === `jpg` || format === `png` || format === `auto`) {\n const unscaled =\n images.find(img => img.width === imageSizes.unscaledWidth) || images[0]\n\n if (unscaled) {\n result.fallback = {\n src: unscaled.src,\n srcSet: getSrcSet(images),\n sizes,\n }\n }\n } else {\n result.sources?.push({\n srcSet: getSrcSet(images),\n sizes,\n type: `image/${format}`,\n })\n }\n })\n\n const imageProps: Partial<IGatsbyImageData> = {\n images: result,\n layout,\n backgroundColor,\n }\n\n if (placeholderURL) {\n imageProps.placeholder = { fallback: placeholderURL }\n }\n\n switch (layout) {\n case `fixed`:\n imageProps.width = imageSizes.presentationWidth\n imageProps.height = imageSizes.presentationHeight\n break\n\n case `fullWidth`:\n imageProps.width = 1\n imageProps.height = 1 / imageSizes.aspectRatio\n break\n\n case `constrained`:\n imageProps.width = args.width || imageSizes.presentationWidth || 1\n imageProps.height = (imageProps.width || 1) / imageSizes.aspectRatio\n }\n\n return imageProps as IGatsbyImageData\n}\n\nconst dedupeAndSortDensities = (values: Array<number>): Array<number> =>\n Array.from(new Set([1, ...values])).sort(sortNumeric)\n\nexport function calculateImageSizes(args: IImageSizeArgs): IImageSizes {\n const {\n width,\n height,\n filename,\n layout = `constrained`,\n sourceMetadata: imgDimensions,\n reporter = { warn },\n breakpoints = DEFAULT_BREAKPOINTS,\n } = args\n\n // check that all dimensions provided are positive\n const userDimensions = { width, height }\n const erroneousUserDimensions = Object.entries(userDimensions).filter(\n ([_, size]) => typeof size === `number` && size < 1\n )\n if (erroneousUserDimensions.length) {\n throw new Error(\n `Specified dimensions for images must be positive numbers (> 0). Problem dimensions you have are ${erroneousUserDimensions\n .map(dim => dim.join(`: `))\n .join(`, `)}`\n )\n }\n\n if (layout === `fixed`) {\n return fixedImageSizes(args)\n } else if (layout === `constrained`) {\n return responsiveImageSizes(args)\n } else if (layout === `fullWidth`) {\n return responsiveImageSizes({ breakpoints, ...args })\n } else {\n reporter.warn(\n `No valid layout was provided for the image at ${filename}. Valid image layouts are fixed, fullWidth, and constrained. Found ${layout}`\n )\n return {\n sizes: [imgDimensions.width],\n presentationWidth: imgDimensions.width,\n presentationHeight: imgDimensions.height,\n aspectRatio: imgDimensions.width / imgDimensions.height,\n unscaledWidth: imgDimensions.width,\n }\n }\n}\nexport function fixedImageSizes({\n filename,\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n reporter = { warn },\n}: IImageSizeArgs): IImageSizes {\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n if (!width) {\n if (!height) {\n width = DEFAULT_FIXED_WIDTH\n } else {\n width = Math.round(height * aspectRatio)\n }\n } else if (!height) {\n height = Math.round(width / aspectRatio)\n }\n\n const originalWidth = width // will use this for presentationWidth, don't want to lose it\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n\n // If the image is smaller than requested, warn the user that it's being processed as such\n // print out this message with the necessary information before we overwrite it for sizing\n if (isTopSizeOverriden) {\n const fixedDimension = imgDimensions.width < width ? `width` : `height`\n reporter.warn(`\nThe requested ${fixedDimension} \"${\n fixedDimension === `width` ? width : height\n }px\" for the image ${filename} was larger than the actual image ${fixedDimension} of ${\n imgDimensions[fixedDimension]\n }px. If possible, replace the current image with a larger one.`)\n\n if (fixedDimension === `width`) {\n width = imgDimensions.width\n height = Math.round(width / aspectRatio)\n } else {\n height = imgDimensions.height\n width = height * aspectRatio\n }\n }\n\n const sizes = densities\n .filter(size => size >= 1) // remove smaller densities because fixed images don't need them\n .map(density => Math.round(density * (width as number)))\n .filter(size => size <= imgDimensions.width)\n\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function responsiveImageSizes({\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n breakpoints,\n layout,\n}: IImageSizeArgs): IImageSizes {\n let sizes\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n // Case 1: width of height were passed in, make sure it isn't larger than the actual image\n width = width && Math.min(width, imgDimensions.width)\n height = height && Math.min(height, imgDimensions.height)\n\n // Case 2: neither width or height were passed in, use default size\n if (!width && !height) {\n width = Math.min(DEFAULT_FLUID_WIDTH, imgDimensions.width)\n height = width / aspectRatio\n }\n\n // if it still hasn't been found, calculate width from the derived height.\n // TS isn't smart enough to realise the type for height has been narrowed here\n if (!width) {\n width = (height as number) * aspectRatio\n }\n\n const originalWidth = width\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n if (isTopSizeOverriden) {\n width = imgDimensions.width\n height = imgDimensions.height\n }\n\n width = Math.round(width)\n\n if (breakpoints?.length > 0) {\n sizes = breakpoints.filter(size => size <= imgDimensions.width)\n\n // If a larger breakpoint has been filtered-out, add the actual image width instead\n if (\n sizes.length < breakpoints.length &&\n !sizes.includes(imgDimensions.width)\n ) {\n sizes.push(imgDimensions.width)\n }\n } else {\n sizes = densities.map(density => Math.round(density * (width as number)))\n sizes = sizes.filter(size => size <= imgDimensions.width)\n }\n\n // ensure that the size passed in is included in the final output\n if (layout === `constrained` && !sizes.includes(width)) {\n sizes.push(width)\n }\n sizes = sizes.sort(sortNumeric)\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function getDimensionsAndAspectRatio(\n dimensions,\n options\n): { width: number; height: number; aspectRatio: number } {\n // Calculate the eventual width/height of the image.\n const imageAspectRatio = dimensions.width / dimensions.height\n\n let width = options.width\n let height = options.height\n\n switch (options.fit) {\n case `fill`: {\n width = options.width ? options.width : dimensions.width\n height = options.height ? options.height : dimensions.height\n break\n }\n case `inside`: {\n const widthOption = options.width\n ? options.width\n : Number.MAX_SAFE_INTEGER\n const heightOption = options.height\n ? options.height\n : Number.MAX_SAFE_INTEGER\n\n width = Math.min(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.min(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n case `outside`: {\n const widthOption = options.width ? options.width : 0\n const heightOption = options.height ? options.height : 0\n\n width = Math.max(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.max(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n\n default: {\n if (options.width && !options.height) {\n width = options.width\n height = Math.round(options.width / imageAspectRatio)\n }\n\n if (options.height && !options.width) {\n width = Math.round(options.height * imageAspectRatio)\n height = options.height\n }\n }\n }\n\n return {\n width,\n height,\n aspectRatio: width / height,\n }\n}\n","/* global GATSBY___IMAGE */\nimport { generateImageData, EVERY_BREAKPOINT } from \"../image-utils\"\nimport type { CSSProperties, HTMLAttributes, ImgHTMLAttributes } from \"react\"\nimport type { Node } from \"gatsby\"\nimport type { PlaceholderProps } from \"./placeholder\"\nimport type { MainImageProps } from \"./main-image\"\nimport type { IGatsbyImageData } from \"./gatsby-image.browser\"\nimport type {\n IGatsbyImageHelperArgs,\n Layout,\n IImage,\n ImageFormat,\n} from \"../image-utils\"\n\n// Native lazy-loading support: https://addyosmani.com/blog/lazy-loading/\nexport const hasNativeLazyLoadSupport = (): boolean =>\n typeof HTMLImageElement !== `undefined` &&\n `loading` in HTMLImageElement.prototype\n\nexport function gatsbyImageIsInstalled(): boolean {\n return typeof GATSBY___IMAGE !== `undefined` && GATSBY___IMAGE\n}\n\nexport type IGatsbyImageDataParent<T = never> = T & {\n gatsbyImageData: IGatsbyImageData\n}\nexport type IGatsbyImageParent<T = never> = T & {\n gatsbyImage: IGatsbyImageData\n}\nexport type FileNode = Partial<Node> & {\n childImageSharp?: IGatsbyImageDataParent<Partial<Node>>\n}\n\nconst isGatsbyImageData = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageData | any\n): node is IGatsbyImageData =>\n // 🦆 check for a deep prop to be sure this is a valid gatsbyImageData object\n Boolean(node?.images?.fallback?.src)\n\nconst isGatsbyImageDataParent = <T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageDataParent<T> | any\n): node is IGatsbyImageDataParent<T> => Boolean(node?.gatsbyImageData)\n\nconst isGatsbyImageParent = <T>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageParent<T> | any\n): node is IGatsbyImageParent<T> => Boolean(node?.gatsbyImage)\n\nexport type ImageDataLike =\n | FileNode\n | IGatsbyImageDataParent\n | IGatsbyImageParent\n | IGatsbyImageData\n\nexport const getImage = (\n node: ImageDataLike | null\n): IGatsbyImageData | undefined => {\n // This checks both for gatsbyImageData and gatsbyImage\n if (isGatsbyImageData(node)) {\n return node\n }\n // gatsbyImageData GraphQL field\n if (isGatsbyImageDataParent(node)) {\n return node.gatsbyImageData\n }\n // gatsbyImage GraphQL field for Gatsby's Image CDN service\n if (isGatsbyImageParent(node)) {\n return node.gatsbyImage\n }\n return node?.childImageSharp?.gatsbyImageData\n}\n\nexport const getSrc = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.src\n\nexport const getSrcSet = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.srcSet\n\nexport function getWrapperProps(\n width: number,\n height: number,\n layout: Layout\n): Pick<HTMLAttributes<HTMLElement>, \"className\" | \"style\"> & {\n \"data-gatsby-image-wrapper\": string\n} {\n const wrapperStyle: CSSProperties = {}\n\n let className = `gatsby-image-wrapper`\n\n // If the plugin isn't installed we need to apply the styles inline\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.position = `relative`\n wrapperStyle.overflow = `hidden`\n }\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n } else if (layout === `constrained`) {\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.display = `inline-block`\n wrapperStyle.verticalAlign = `top`\n }\n className = `gatsby-image-wrapper gatsby-image-wrapper-constrained`\n }\n\n return {\n className,\n \"data-gatsby-image-wrapper\": ``,\n style: wrapperStyle,\n }\n}\n\nexport interface IUrlBuilderArgs<OptionsType> {\n width: number\n height: number\n baseUrl: string\n format: ImageFormat\n options: OptionsType\n}\nexport interface IGetImageDataArgs<OptionsType = Record<string, unknown>> {\n baseUrl: string\n /**\n * For constrained and fixed images, the size of the image element\n */\n width?: number\n height?: number\n /**\n * If available, pass the source image width and height\n */\n sourceWidth?: number\n sourceHeight?: number\n /**\n * If only one dimension is passed, then this will be used to calculate the other.\n */\n aspectRatio?: number\n layout?: Layout\n /**\n * Returns a URL based on the passed arguments. Should be a pure function\n */\n urlBuilder: (args: IUrlBuilderArgs<OptionsType>) => string\n\n /**\n * Should be a data URI\n */\n placeholderURL?: string\n backgroundColor?: string\n /**\n * Used in error messages etc\n */\n pluginName?: string\n\n /**\n * If you do not support auto-format, pass an array of image types here\n */\n formats?: Array<ImageFormat>\n\n breakpoints?: Array<number>\n\n /**\n * Passed to the urlBuilder function\n */\n options?: OptionsType\n}\n\n/**\n * Use this hook to generate gatsby-plugin-image data in the browser.\n */\nexport function getImageData<OptionsType>({\n baseUrl,\n urlBuilder,\n sourceWidth,\n sourceHeight,\n pluginName = `getImageData`,\n formats = [`auto`],\n breakpoints,\n options,\n ...props\n}: IGetImageDataArgs<OptionsType>): IGatsbyImageData {\n if (\n !breakpoints?.length &&\n (props.layout === `fullWidth` || (props.layout as string) === `FULL_WIDTH`)\n ) {\n breakpoints = EVERY_BREAKPOINT\n }\n const generateImageSource = (\n baseUrl: string,\n width: number,\n height?: number,\n format?: ImageFormat\n ): IImage => {\n return {\n width,\n height,\n format,\n src: urlBuilder({ baseUrl, width, height, options, format }),\n }\n }\n\n const sourceMetadata: IGatsbyImageHelperArgs[\"sourceMetadata\"] = {\n width: sourceWidth,\n height: sourceHeight,\n format: `auto`,\n }\n\n const args: IGatsbyImageHelperArgs = {\n ...props,\n pluginName,\n generateImageSource,\n filename: baseUrl,\n formats,\n breakpoints,\n sourceMetadata,\n }\n return generateImageData(args)\n}\n\nexport function getMainProps(\n isLoading: boolean,\n isLoaded: boolean,\n images: IGatsbyImageData[\"images\"],\n loading?: \"eager\" | \"lazy\",\n style: CSSProperties = {}\n): Partial<MainImageProps> {\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n transform: `translateZ(0)`,\n transition: `opacity 250ms linear`,\n width: `100%`,\n willChange: `opacity`,\n ...style,\n }\n }\n\n const result = {\n ...images,\n loading,\n shouldLoad: isLoading,\n \"data-main-image\": ``,\n style: {\n ...style,\n opacity: isLoaded ? 1 : 0,\n },\n }\n\n return result\n}\n\nexport type PlaceholderImageAttrs = ImgHTMLAttributes<HTMLImageElement> &\n Pick<PlaceholderProps, \"sources\" | \"fallback\"> & {\n \"data-placeholder-image\"?: string\n }\n\nexport function getPlaceholderProps(\n placeholder: PlaceholderImageAttrs | undefined,\n isLoaded: boolean,\n layout: Layout,\n width?: number,\n height?: number,\n backgroundColor?: string,\n objectFit?: CSSProperties[\"objectFit\"],\n objectPosition?: CSSProperties[\"objectPosition\"]\n): PlaceholderImageAttrs {\n const wrapperStyle: CSSProperties = {}\n\n if (backgroundColor) {\n wrapperStyle.backgroundColor = backgroundColor\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n wrapperStyle.backgroundColor = backgroundColor\n wrapperStyle.position = `relative`\n } else if (layout === `constrained`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n } else if (layout === `fullWidth`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n }\n }\n\n if (objectFit) {\n wrapperStyle.objectFit = objectFit\n }\n\n if (objectPosition) {\n wrapperStyle.objectPosition = objectPosition\n }\n const result: PlaceholderImageAttrs = {\n ...placeholder,\n \"aria-hidden\": true,\n \"data-placeholder-image\": ``,\n style: {\n opacity: isLoaded ? 0 : 1,\n transition: `opacity 500ms linear`,\n ...wrapperStyle,\n },\n }\n\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n result.style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n width: `100%`,\n }\n }\n\n return result\n}\n\nexport interface IArtDirectedImage {\n media: string\n image: IGatsbyImageData\n}\n\n/**\n * Generate a Gatsby image data object with multiple, art-directed images that display at different\n * resolutions.\n *\n * @param defaultImage The image displayed when no media query matches.\n * It is also used for all other settings applied to the image, such as width, height and layout.\n * You should pass a className to the component with media queries to adjust the size of the container,\n * as this cannot be adjusted automatically.\n * @param artDirected Array of objects which each contains a `media` string which is a media query\n * such as `(min-width: 320px)`, and the image object to use when that query matches.\n */\nexport function withArtDirection(\n defaultImage: IGatsbyImageData,\n artDirected: Array<IArtDirectedImage>\n): IGatsbyImageData {\n const { images, placeholder, ...props } = defaultImage\n const output: IGatsbyImageData = {\n ...props,\n images: {\n ...images,\n sources: [],\n },\n placeholder: placeholder && {\n ...placeholder,\n sources: [],\n },\n }\n\n artDirected.forEach(({ media, image }) => {\n if (!media) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(\n \"[gatsby-plugin-image] All art-directed images passed to must have a value set for `media`. Skipping.\"\n )\n }\n return\n }\n\n if (\n image.layout !== defaultImage.layout &&\n process.env.NODE_ENV === `development`\n ) {\n console.warn(\n `[gatsby-plugin-image] Mismatched image layout: expected \"${defaultImage.layout}\" but received \"${image.layout}\". All art-directed images use the same layout as the default image`\n )\n }\n\n output.images.sources.push(\n ...image.images.sources.map(source => {\n return { ...source, media }\n }),\n {\n media,\n srcSet: image.images.fallback.srcSet,\n }\n )\n\n if (!output.placeholder) {\n return\n }\n\n output.placeholder.sources.push({\n media,\n srcSet: image.placeholder.fallback,\n })\n })\n output.images.sources.push(...images.sources)\n if (placeholder?.sources) {\n output.placeholder?.sources.push(...placeholder.sources)\n }\n return output\n}\n","import React, { Fragment, FunctionComponent, PropsWithChildren } from \"react\"\nimport terserMacro from \"../../macros/terser.macro\"\nimport { Layout } from \"../image-utils\"\n\nexport interface ILayoutWrapperProps {\n layout: Layout\n width: number\n height: number\n}\n\nconst NativeScriptLoading: FunctionComponent = () => (\n <script\n type=\"module\"\n dangerouslySetInnerHTML={{\n __html: terserMacro`\nconst hasNativeLazyLoadSupport = typeof HTMLImageElement !== \"undefined\" && \"loading\" in HTMLImageElement.prototype;\nif (hasNativeLazyLoadSupport) {\n const gatsbyImages = document.querySelectorAll('img[data-main-image]');\n for (let mainImage of gatsbyImages) {\n if (mainImage.dataset.src) {\n mainImage.setAttribute('src', mainImage.dataset.src)\n mainImage.removeAttribute('data-src')\n }\n if (mainImage.dataset.srcset) {\n mainImage.setAttribute('srcset', mainImage.dataset.srcset)\n mainImage.removeAttribute('data-srcset')\n }\n\n const sources = mainImage.parentNode.querySelectorAll('source[data-srcset]');\n for (let source of sources) {\n source.setAttribute('srcset', source.dataset.srcset)\n source.removeAttribute('data-srcset')\n }\n\n if (mainImage.complete) {\n mainImage.style.opacity = 1;\n\n // also hide the placeholder\n mainImage.parentNode.parentNode.querySelector('[data-placeholder-image]').style.opacity = 0;\n }\n }\n}\n`,\n }}\n />\n)\n\nexport function getSizer(\n layout: Layout,\n width: number,\n height: number\n): string {\n let sizer = ``\n if (layout === `fullWidth`) {\n sizer = `<div aria-hidden=\"true\" style=\"padding-top: ${\n (height / width) * 100\n }%;\"></div>`\n }\n\n if (layout === `constrained`) {\n sizer = `<div style=\"max-width: ${width}px; display: block;\"><img alt=\"\" role=\"presentation\" aria-hidden=\"true\" src=\"data:image/svg+xml;charset=utf-8,%3Csvg%20height='${height}'%20width='${width}'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E\" style=\"max-width: 100%; display: block; position: static;\"></div>`\n }\n\n return sizer\n}\n\nconst Sizer: FunctionComponent<ILayoutWrapperProps> = function Sizer({\n layout,\n width,\n height,\n}) {\n if (layout === `fullWidth`) {\n return (\n <div aria-hidden style={{ paddingTop: `${(height / width) * 100}%` }} />\n )\n }\n\n if (layout === `constrained`) {\n return (\n <div style={{ maxWidth: width, display: `block` }}>\n <img\n alt=\"\"\n role=\"presentation\"\n aria-hidden=\"true\"\n src={`data:image/svg+xml;charset=utf-8,%3Csvg%20height='${height}'%20width='${width}'%20xmlns='http://www.w3.org/2000/svg'%20version='1.1'%3E%3C/svg%3E`}\n style={{\n maxWidth: `100%`,\n display: `block`,\n position: `static`,\n }}\n />\n </div>\n )\n }\n\n return null\n}\n\nexport const LayoutWrapper: FunctionComponent<\n PropsWithChildren<ILayoutWrapperProps>\n> = function LayoutWrapper({ children, ...props }) {\n return (\n <Fragment>\n <Sizer {...props} />\n {children}\n\n {SERVER ? <NativeScriptLoading /> : null}\n </Fragment>\n )\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\n\nexport interface IResponsiveImageProps {\n sizes?: string\n srcSet: string\n}\n\nexport type SourceProps = IResponsiveImageProps &\n (\n | {\n media: string\n type?: string\n }\n | {\n media?: string\n type: string\n }\n )\n\ntype FallbackProps = { src: string } & Partial<IResponsiveImageProps>\n\ntype ImageProps = ImgHTMLAttributes<HTMLImageElement> & {\n src: string\n alt: string\n shouldLoad: boolean\n}\n\nexport type PictureProps = ImgHTMLAttributes<HTMLImageElement> & {\n fallback?: FallbackProps\n sources?: Array<SourceProps>\n alt: string\n shouldLoad?: boolean\n}\n\nconst Image: FunctionComponent<ImageProps> = function Image({\n src,\n srcSet,\n loading,\n alt = ``,\n shouldLoad,\n ...props\n}) {\n return (\n <img\n {...props}\n decoding=\"async\"\n loading={loading}\n src={shouldLoad ? src : undefined}\n data-src={!shouldLoad ? src : undefined}\n srcSet={shouldLoad ? srcSet : undefined}\n data-srcset={!shouldLoad ? srcSet : undefined}\n alt={alt}\n />\n )\n}\n\nexport const Picture: React.FC<PictureProps> = function Picture({\n fallback,\n sources = [],\n shouldLoad = true,\n ...props\n}) {\n const sizes = props.sizes || fallback?.sizes\n const fallbackImage = (\n <Image {...props} {...fallback} sizes={sizes} shouldLoad={shouldLoad} />\n )\n\n if (!sources.length) {\n return fallbackImage\n }\n\n return (\n <picture>\n {sources.map(({ media, srcSet, type }) => (\n <source\n key={`${media}-${type}-${srcSet}`}\n type={type}\n media={media}\n srcSet={shouldLoad ? srcSet : undefined}\n data-srcset={!shouldLoad ? srcSet : undefined}\n sizes={sizes}\n />\n ))}\n {fallbackImage}\n </picture>\n )\n}\n\nImage.propTypes = {\n src: PropTypes.string.isRequired,\n alt: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string,\n shouldLoad: PropTypes.bool,\n}\n\nPicture.displayName = `Picture`\nPicture.propTypes = {\n alt: PropTypes.string.isRequired,\n shouldLoad: PropTypes.bool,\n fallback: PropTypes.exact({\n src: PropTypes.string.isRequired,\n srcSet: PropTypes.string,\n sizes: PropTypes.string,\n }),\n sources: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.exact({\n media: PropTypes.string.isRequired,\n type: PropTypes.string,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n PropTypes.exact({\n media: PropTypes.string,\n type: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n ])\n ),\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\nimport { Picture, SourceProps } from \"./picture\"\n\nexport type PlaceholderProps = ImgHTMLAttributes<HTMLImageElement> & {\n fallback?: string\n sources?: Array<SourceProps>\n}\n\nexport const Placeholder: FunctionComponent<PlaceholderProps> =\n function Placeholder({ fallback, ...props }) {\n if (fallback) {\n return (\n <Picture\n {...props}\n fallback={{\n src: fallback,\n }}\n aria-hidden\n alt=\"\"\n />\n )\n } else {\n return <div {...props}></div>\n }\n }\n\nPlaceholder.displayName = `Placeholder`\nPlaceholder.propTypes = {\n fallback: PropTypes.string,\n sources: Picture.propTypes?.sources,\n alt: function (props, propName, componentName): Error | null {\n if (!props[propName]) {\n return null\n }\n\n return new Error(\n `Invalid prop \\`${propName}\\` supplied to \\`${componentName}\\`. Validation failed.`\n )\n },\n}\n","import React from \"react\"\nimport { Picture, PictureProps } from \"./picture\"\n\nexport type MainImageProps = PictureProps\n\nexport const MainImage: React.FC<PictureProps> = function MainImage(props) {\n return (\n <>\n <Picture {...props} />\n <noscript>\n <Picture {...props} shouldLoad={true} />\n </noscript>\n </>\n )\n}\n\nMainImage.displayName = `MainImage`\nMainImage.propTypes = Picture.propTypes\n","import React from \"react\"\nimport { getWrapperProps, getMainProps, getPlaceholderProps } from \"./hooks\"\nimport { Placeholder } from \"./placeholder\"\nimport { MainImage, MainImageProps } from \"./main-image\"\nimport { LayoutWrapper } from \"./layout-wrapper\"\nimport PropTypes from \"prop-types\"\nimport type { FunctionComponent, WeakValidationMap } from \"react\"\nimport type { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\n\nconst removeNewLines = (str: string): string => str.replace(/\\n/g, ``)\n\nexport const GatsbyImage: FunctionComponent<GatsbyImageProps> =\n function GatsbyImage({\n as = `div`,\n className,\n class: preactClass,\n style,\n image,\n loading = `lazy`,\n imgClassName,\n imgStyle,\n backgroundColor,\n objectFit,\n objectPosition,\n ...props\n }) {\n if (!image) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n return null\n }\n\n if (preactClass) {\n className = preactClass\n }\n\n imgStyle = {\n objectFit,\n objectPosition,\n backgroundColor,\n ...imgStyle,\n }\n\n const {\n width,\n height,\n layout,\n images,\n placeholder,\n backgroundColor: placeholderBackgroundColor,\n } = image\n\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n\n const cleanedImages: IGatsbyImageData[\"images\"] = {\n fallback: undefined,\n sources: [],\n }\n if (images.fallback) {\n cleanedImages.fallback = {\n ...images.fallback,\n srcSet: images.fallback.srcSet\n ? removeNewLines(images.fallback.srcSet)\n : undefined,\n }\n }\n\n if (images.sources) {\n cleanedImages.sources = images.sources.map(source => {\n return {\n ...source,\n srcSet: removeNewLines(source.srcSet),\n }\n })\n }\n\n return React.createElement(\n as,\n {\n ...wrapperProps,\n style: {\n ...wStyle,\n ...style,\n backgroundColor,\n },\n className: `${wClass}${className ? ` ${className}` : ``}`,\n },\n <LayoutWrapper layout={layout} width={width} height={height}>\n <Placeholder\n {...getPlaceholderProps(\n placeholder,\n false,\n layout,\n width,\n height,\n placeholderBackgroundColor,\n objectFit,\n objectPosition\n )}\n />\n\n <MainImage\n data-gatsby-image-ssr=\"\"\n className={imgClassName}\n {...(props as Omit<\n MainImageProps,\n \"images\" | \"fallback\" | \"onError\" | \"onLoad\"\n >)}\n // When eager is set we want to start the isLoading state on true (we want to load the img without react)\n {...getMainProps(\n loading === `eager`,\n false,\n cleanedImages,\n loading,\n imgStyle\n )}\n />\n </LayoutWrapper>\n )\n }\n\nexport const altValidator: PropTypes.Validator<string> = (\n props: GatsbyImageProps,\n propName,\n componentName,\n ...rest\n): Error | undefined => {\n if (!props.alt && props.alt !== ``) {\n return new Error(\n `The \"alt\" prop is required in ${componentName}. If the image is purely presentational then pass an empty string: e.g. alt=\"\". Learn more: https://a11y-style-guide.com/style-guide/section-media.html`\n )\n }\n\n return PropTypes.string(props, propName, componentName, ...rest)\n}\n\nexport const propTypes = {\n image: PropTypes.object.isRequired,\n alt: altValidator,\n} as WeakValidationMap<GatsbyImageProps>\n","import {\n createElement,\n memo,\n useMemo,\n useEffect,\n useLayoutEffect,\n useRef,\n} from \"react\"\nimport {\n getWrapperProps,\n gatsbyImageIsInstalled,\n hasNativeLazyLoadSupport,\n} from \"./hooks\"\nimport { getSizer } from \"./layout-wrapper\"\nimport { propTypes } from \"./gatsby-image.server\"\nimport type {\n FC,\n ElementType,\n FunctionComponent,\n ImgHTMLAttributes,\n CSSProperties,\n ReactEventHandler,\n} from \"react\"\nimport type { renderImageToString } from \"./lazy-hydrate\"\nimport type { PlaceholderProps } from \"./placeholder\"\nimport type { MainImageProps } from \"./main-image\"\nimport type { Layout } from \"../image-utils\"\n\nconst imageCache = new Set<string>()\nlet renderImageToStringPromise\nlet renderImage: typeof renderImageToString | undefined\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport interface GatsbyImageProps\n extends Omit<\n ImgHTMLAttributes<HTMLImageElement>,\n \"placeholder\" | \"onLoad\" | \"src\" | \"srcSet\" | \"width\" | \"height\"\n > {\n alt: string\n as?: ElementType\n className?: string\n class?: string\n imgClassName?: string\n image: IGatsbyImageData\n imgStyle?: CSSProperties\n backgroundColor?: string\n objectFit?: CSSProperties[\"objectFit\"]\n objectPosition?: CSSProperties[\"objectPosition\"]\n onLoad?: (props: { wasCached: boolean }) => void\n onError?: ReactEventHandler<HTMLImageElement>\n onStartLoad?: (props: { wasCached: boolean }) => void\n}\n\nexport interface IGatsbyImageData {\n layout: Layout\n width: number\n height: number\n backgroundColor?: string\n images: Pick<MainImageProps, \"sources\" | \"fallback\">\n placeholder?: Pick<PlaceholderProps, \"sources\" | \"fallback\">\n}\n\nconst GatsbyImageHydrator: FC<GatsbyImageProps> = function GatsbyImageHydrator({\n as = `div`,\n image,\n style,\n backgroundColor,\n className,\n class: preactClass,\n onStartLoad,\n onLoad,\n onError,\n ...props\n}) {\n const { width, height, layout } = image\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n const root = useRef<HTMLElement>()\n const cacheKey = useMemo(() => JSON.stringify(image.images), [image.images])\n\n // Preact uses class instead of className so we need to check for both\n if (preactClass) {\n className = preactClass\n }\n\n const sizer = getSizer(layout, width, height)\n\n useEffect(() => {\n if (!renderImageToStringPromise) {\n renderImageToStringPromise = import(`./lazy-hydrate`).then(\n ({ renderImageToString, swapPlaceholderImage }) => {\n renderImage = renderImageToString\n\n return {\n renderImageToString,\n swapPlaceholderImage,\n }\n }\n )\n }\n\n // The plugin image component is a bit special where if it's server-side rendered, we add extra script tags to support lazy-loading without\n // In this case we stop hydration but fire the correct events.\n const ssrImage = root.current.querySelector(\n `[data-gatsby-image-ssr]`\n ) as HTMLImageElement\n if (ssrImage && hasNativeLazyLoadSupport()) {\n if (ssrImage.complete) {\n // Trigger onStartload and onLoad events\n onStartLoad?.({\n wasCached: true,\n })\n onLoad?.({\n wasCached: true,\n })\n\n // remove ssr key for state updates but add delay to not fight with native code snippt of gatsby-ssr\n setTimeout(() => {\n ssrImage.removeAttribute(`data-gatsby-image-ssr`)\n }, 0)\n } else {\n onStartLoad?.({\n wasCached: true,\n })\n\n ssrImage.addEventListener(`load`, function onLoadListener() {\n ssrImage.removeEventListener(`load`, onLoadListener)\n\n onLoad?.({\n wasCached: true,\n })\n // remove ssr key for state updates but add delay to not fight with native code snippt of gatsby-ssr\n setTimeout(() => {\n ssrImage.removeAttribute(`data-gatsby-image-ssr`)\n }, 0)\n })\n }\n\n imageCache.add(cacheKey)\n\n return\n }\n\n if (renderImage && imageCache.has(cacheKey)) {\n return\n }\n\n let animationFrame\n let cleanupCallback\n renderImageToStringPromise.then(\n ({ renderImageToString, swapPlaceholderImage }) => {\n if (!root.current) {\n return\n }\n\n root.current.innerHTML = renderImageToString({\n isLoading: true,\n isLoaded: imageCache.has(cacheKey),\n image,\n ...props,\n })\n\n if (!imageCache.has(cacheKey)) {\n animationFrame = requestAnimationFrame(() => {\n if (root.current) {\n cleanupCallback = swapPlaceholderImage(\n root.current,\n cacheKey,\n imageCache,\n style,\n onStartLoad,\n onLoad,\n onError\n )\n }\n })\n }\n }\n )\n\n // eslint-disable-next-line consistent-return\n return (): void => {\n if (animationFrame) {\n cancelAnimationFrame(animationFrame)\n }\n if (cleanupCallback) {\n cleanupCallback()\n }\n }\n }, [image])\n\n // useLayoutEffect is ran before React commits to the DOM. This allows us to make sure our HTML is using our cached image version\n useLayoutEffect(() => {\n if (imageCache.has(cacheKey) && renderImage) {\n root.current.innerHTML = renderImage({\n isLoading: imageCache.has(cacheKey),\n isLoaded: imageCache.has(cacheKey),\n image,\n ...props,\n })\n\n // Trigger onStartload and onLoad events\n onStartLoad?.({\n wasCached: true,\n })\n onLoad?.({\n wasCached: true,\n })\n }\n }, [image])\n\n // By keeping all props equal React will keep the component in the DOM\n return createElement(as, {\n ...wrapperProps,\n style: {\n ...wStyle,\n ...style,\n backgroundColor,\n },\n className: `${wClass}${className ? ` ${className}` : ``}`,\n ref: root,\n dangerouslySetInnerHTML: {\n __html: sizer,\n },\n suppressHydrationWarning: true,\n })\n}\n\nexport const GatsbyImage: FunctionComponent<GatsbyImageProps> = memo(\n function GatsbyImage(props) {\n if (!props.image) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n }\n\n return null\n }\n\n if (!gatsbyImageIsInstalled() && process.env.NODE_ENV === `development`) {\n console.warn(\n `[gatsby-plugin-image] You're missing out on some cool performance features. Please add \"gatsby-plugin-image\" to your gatsby-config.js`\n )\n }\n\n return createElement(GatsbyImageHydrator, props)\n }\n)\n\nGatsbyImage.propTypes = propTypes\nGatsbyImage.displayName = `GatsbyImage`\n","import React, { FunctionComponent, ReactElement } from \"react\"\nimport {\n altValidator,\n GatsbyImage as GatsbyImageServer,\n} from \"./gatsby-image.server\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport PropTypes from \"prop-types\"\nimport { ISharpGatsbyImageArgs } from \"../image-utils\"\n\nexport interface IStaticImageProps\n extends Omit<GatsbyImageProps, \"image\">,\n Omit<ISharpGatsbyImageArgs, \"backgroundColor\"> {\n src: string\n filename?: string\n}\n\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nexport function _getStaticImage(\n GatsbyImage: FunctionComponent<GatsbyImageProps>\n): React.FC<IStaticImageProps & IPrivateProps> {\n return function StaticImage({\n src,\n __imageData: imageData,\n __error,\n // We extract these because they're not meant to be passed-down to GatsbyImage\n /* eslint-disable @typescript-eslint/no-unused-vars */\n width,\n height,\n aspectRatio,\n tracedSVGOptions,\n placeholder,\n formats,\n quality,\n transformOptions,\n jpgOptions,\n pngOptions,\n webpOptions,\n avifOptions,\n blurredOptions,\n breakpoints,\n outputPixelDensities,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...props\n }): ReactElement {\n if (__error) {\n console.warn(__error)\n }\n\n if (imageData) {\n return <GatsbyImage image={imageData} {...props} />\n }\n console.warn(`Image not loaded`, src)\n if (!__error && process.env.NODE_ENV === `development`) {\n console.warn(\n `Please ensure that \"gatsby-plugin-image\" is included in the plugins array in gatsby-config.js, and that your version of gatsby is at least 2.24.78`\n )\n }\n return null\n }\n}\n\nconst StaticImage: React.FC<IStaticImageProps & IPrivateProps> =\n _getStaticImage(GatsbyImageServer)\n\nconst checkDimensionProps: PropTypes.Validator<number> = (\n props: IStaticImageProps & IPrivateProps,\n propName: keyof IStaticImageProps & IPrivateProps,\n ...rest\n) => {\n if (\n props.layout === `fullWidth` &&\n (propName === `width` || propName === `height`) &&\n props[propName]\n ) {\n return new Error(\n `\"${propName}\" ${props[propName]} may not be passed when layout is fullWidth.`\n )\n }\n return PropTypes.number(props, propName, ...rest)\n}\n\nconst validLayouts = new Set([`fixed`, `fullWidth`, `constrained`])\n\nexport const propTypes = {\n src: PropTypes.string.isRequired,\n alt: altValidator,\n width: checkDimensionProps,\n height: checkDimensionProps,\n sizes: PropTypes.string,\n layout: (props: IStaticImageProps & IPrivateProps): Error | undefined => {\n if (props.layout === undefined) {\n return undefined\n }\n if (validLayouts.has(props.layout)) {\n return undefined\n }\n\n return new Error(\n `Invalid value ${props.layout}\" provided for prop \"layout\". Defaulting to \"constrained\". Valid values are \"fixed\", \"fullWidth\" or \"constrained\".`\n )\n },\n}\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import {\n GatsbyImage as GatsbyImageBrowser,\n IGatsbyImageData,\n} from \"./gatsby-image.browser\"\nimport React from \"react\"\nimport {\n _getStaticImage,\n propTypes,\n IStaticImageProps,\n} from \"./static-image.server\"\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nconst StaticImage: React.FC<IStaticImageProps & IPrivateProps> =\n _getStaticImage(GatsbyImageBrowser)\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import React, { memo } from \"react\"\nimport { Link } from \"gatsby\"\n\ntype NavigationLinkProps = {\n className?: string\n internal?: boolean\n name: string\n to: string\n}\n\nconst NavigationLink: React.FC<NavigationLinkProps> = ({\n className = \"\",\n internal = true,\n name,\n to,\n}) => {\n return internal ? (\n <Link to={to} className={className}>\n {name}\n </Link>\n ) : (\n <a href={to} className={className} target=\"_blank\" rel=\"noreferrer\">\n {name}\n </a>\n )\n}\n\nexport default memo(NavigationLink)\n","import React from \"react\"\nimport Navigationlink from \"@pitayan/gatsby-theme-pitayan/src/components/NavigationLink\"\n\nexport type NavigationLinksData = {\n internal: boolean\n name: string\n url: string\n group: string\n}\n\nexport type NavigationLinksGroupProps = {\n group: string\n data: NavigationLinksData[]\n className?: string\n}\n\nconst NavigationLinksGroup: React.FC<NavigationLinksGroupProps> = ({\n group,\n data,\n className = \"\",\n}) => {\n if (!data.length) return null\n\n return (\n <>\n {data.map(({ internal, url, name, group: _group }) =>\n _group.includes(group) ? (\n <Navigationlink\n key={url}\n name={name}\n to={url}\n internal={internal}\n className={`site-link block ${className}`}\n />\n ) : null\n )}\n </>\n )\n}\n\nexport default NavigationLinksGroup\n","import { useStaticQuery, graphql } from \"gatsby\"\nimport { NavigationLinksData } from \"@pitayan/gatsby-theme-pitayan/src/components/NavigationLinksGroup\"\nimport { ImageDataLike } from \"gatsby-plugin-image\"\n\ntype SiteMetaData = {\n description: string\n siteLinks: NavigationLinksData[]\n name: string\n siteUrl: string\n siteSlogan: string\n siteCookieConsent: {\n title: string\n description: string\n readMore: string\n }\n siteSubscription: {\n title: string\n description: string\n }\n title: string\n cover: {\n publicURL: string\n }\n icon: {\n normal: ImageDataLike | null\n extension: string\n publicURL: string\n }\n}\n\nlet _siteMetadata = null\nexport const useSiteMetadata = (): SiteMetaData => {\n if (_siteMetadata) return _siteMetadata\n\n const { site, icon, cover } = useStaticQuery(\n graphql`\n query SiteMetaData {\n site {\n siteMetadata {\n description\n siteLinks {\n name\n url\n group\n internal\n }\n name\n siteUrl\n siteSlogan\n siteCookieConsent {\n title\n description\n readMore\n }\n siteSubscription {\n title\n description\n }\n title\n }\n }\n cover: file(relativePath: {regex: \"/^sitecover\\\\./i\"}) {\n publicURL\n }\n icon: file(relativePath: {regex: \"/^sitelogo\\\\./i\"}) {\n normal: childImageSharp {\n gatsbyImageData(\n width: 36\n placeholder: BLURRED\n formats: [AUTO]\n )\n }\n extension\n publicURL\n }\n }\n `\n )\n\n _siteMetadata = {\n ...site.siteMetadata,\n icon: icon ?? {},\n cover: cover ?? {},\n }\n\n return _siteMetadata\n}\n","import { Link } from \"gatsby\"\nimport React, { useLayoutEffect, useState } from \"react\"\nimport ReactDom from \"react-dom\"\n\nimport { useSiteMetadata } from \"./useSiteMetadata\"\nimport {\n COOKIE_PROMPT_AGREEMENT,\n COOKIE_PROMPT_CONTAINER_ID,\n COOKIE_PROMPT_DEFAULT_DESCRIPTION,\n COOKIE_PROMPT_DEFAULT_READMORE,\n COOKIE_PROMPT_DEFAULT_TITLE,\n} from \"@pitayan/gatsby-theme-pitayan/src/constants\"\n\ntype NotificationProps = {\n [key: string]: any\n}\n\nexport const Notification: React.FC<NotificationProps> = () => {\n const { siteCookieConsent: { title, description, readMore }, siteLinks } = useSiteMetadata()\n const [isOpen, setIsOpen] = useState(false)\n\n const privacyLink = siteLinks.find((s) => s.name.match(/privac(y|ies)/))\n const termsLink = siteLinks.find((s) => s.name.match(/term(s?)/))\n\n const handleAgree = () => {\n if (window.localStorage.getItem(COOKIE_PROMPT_AGREEMENT)) {\n return\n }\n\n window.localStorage.setItem(COOKIE_PROMPT_AGREEMENT, \"true\")\n\n setTimeout(() => {\n setIsOpen(false)\n }, 0)\n }\n\n useLayoutEffect(() => {\n if (!window.localStorage.getItem(COOKIE_PROMPT_AGREEMENT)) {\n setIsOpen(true)\n }\n })\n\n return (\n <div className=\"notification notification-bottom-left rounded\">\n <div className={`notification-container ${isOpen ? \"open\" : \"\"}`}>\n <h4 className=\"notification-title\">{ title || COOKIE_PROMPT_DEFAULT_TITLE }</h4>\n <p className=\"mb-2 text-sm\">\n { description || COOKIE_PROMPT_DEFAULT_DESCRIPTION }\n </p>\n {(privacyLink || termsLink) &&\n <p className=\"mb-2 text-sm flex space-x-2\">\n <span>{ readMore || COOKIE_PROMPT_DEFAULT_READMORE }</span>\n {privacyLink && <Link className=\"site-link underline\" to={privacyLink.url}>{privacyLink.name}</Link>}\n {termsLink && <Link className=\"site-link underline\" to={termsLink.url}>{termsLink.name}</Link>}\n </p>\n }\n <div className=\"text-right font-bold\">\n <button className=\"ghost-button\" onClick={handleAgree}>\n Agree\n </button>\n </div>\n </div>\n </div>\n )\n}\n\nexport const useCookiePrompt = (): void => {\n useLayoutEffect(() => {\n let containerElm = document.getElementById(COOKIE_PROMPT_CONTAINER_ID)\n\n if (!containerElm) {\n containerElm = document.createElement(\"div\")\n containerElm.id = COOKIE_PROMPT_CONTAINER_ID\n }\n\n ReactDom.render(<Notification />, document.body.appendChild(containerElm))\n }, [])\n}\n","import { getSelectedTextPosition } from \"@pitayan/gatsby-theme-pitayan/src/utils\"\nimport { useCallback, useEffect, useState } from \"react\"\n\nconst events = [\"keydown\", \"keyup\", \"mouseup\"]\n\nexport const useTextSelection = (\n container: HTMLElement = document.body,\n offsetWidth = 0,\n offsetHeight = 0,\n lineHeightDelta = 32\n): {\n left: number\n top: number\n textContent: string\n} => {\n const [left, setLeft] = useState<number>(0)\n const [top, setTop] = useState<number>(0)\n const [textContent, setTextContent] = useState<string>(\"\")\n\n const checkTextSelection = (e: Event) => {\n setTimeout(() => {\n const {\n x,\n y,\n width,\n height,\n textContent: _textContent,\n } = getSelectedTextPosition()\n\n let docOffsetTop = 0\n if (container) {\n docOffsetTop =\n container.getBoundingClientRect().y -\n container.offsetTop +\n offsetHeight\n }\n let left =\n height > lineHeightDelta\n ? (e.target as HTMLElement).offsetLeft +\n (e.target as HTMLElement).clientWidth / 2 -\n offsetWidth\n : x + width / 2 - offsetWidth\n let top = y - docOffsetTop\n\n if (!_textContent) {\n left = top = -9999\n }\n\n setLeft(left || -9999)\n setTop(top || -9999)\n setTextContent(_textContent)\n }, 0)\n }\n\n const handler = useCallback(checkTextSelection, [\n container,\n offsetWidth,\n offsetHeight,\n ])\n\n useEffect(() => {\n window.addEventListener(\"resize\", checkTextSelection)\n\n events.forEach((event: string) => {\n container.addEventListener(event, handler)\n })\n\n return () => {\n window.removeEventListener(\"resize\", handler)\n\n events.forEach((event: string) => {\n container.removeEventListener(event, handler)\n })\n }\n }, [container, offsetWidth, offsetHeight])\n\n return { left, top, textContent }\n}\n","import React, { memo, useState } from \"react\"\nimport { RiSunLine, RiMoonClearFill } from \"react-icons/ri\"\nimport {\n checkIfDarkMode,\n toggleDark,\n} from \"@pitayan/gatsby-theme-pitayan/src/utils\"\n\nconst DarkModeToggle: React.FC = () => {\n const [isDark, setDark] = useState(checkIfDarkMode())\n\n const onClickToggle = () => {\n toggleDark(!isDark)\n setDark(!isDark)\n }\n\n return (\n <button onClick={onClickToggle} className=\"site-link\">\n {isDark ? (\n <RiSunLine className=\"animate-fade-in-scale\" />\n ) : (\n <RiMoonClearFill className=\"animate-fade-in-scale\" />\n )}\n </button>\n )\n}\n\nexport default memo(DarkModeToggle)\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nexport var styleToObject = function (input) {\n var attributes = input.split(/ ?; ?/);\n return attributes.reduce(function (acc, d) {\n var _a = __read(d.split(/ ?: ?/), 2), key = _a[0], value = _a[1];\n if (key && value) {\n acc[key.replace(/-(\\w)/g, function (_$0, $1) { return $1.toUpperCase(); })] = Number.isNaN(Number(value))\n ? value\n : Number(value);\n }\n return acc;\n }, {});\n};\n/* istanbul ignore next */\nexport function randomString(length) {\n if (length === void 0) { length = 6; }\n var characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n var result = '';\n for (var index = length; index > 0; --index) {\n result += characters[Math.round(Math.random() * (characters.length - 1))];\n }\n return result;\n}\nexport var noTextChildNodes = [\n 'br',\n 'col',\n 'colgroup',\n 'dl',\n 'hr',\n 'iframe',\n 'img',\n 'input',\n 'link',\n 'menuitem',\n 'meta',\n 'ol',\n 'param',\n 'select',\n 'table',\n 'tbody',\n 'tfoot',\n 'thead',\n 'tr',\n 'ul',\n 'wbr',\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// Taken from https://raw.githubusercontent.com/facebook/react/baff5cc2f69d30589a5dc65b089e47765437294b/packages/react-dom/src/shared/possibleStandardNames.js\n// tslint:disable:object-literal-sort-keys\nexport var possibleStandardNames = {\n // HTML\n 'accept-charset': 'acceptCharset',\n acceptcharset: 'acceptCharset',\n accesskey: 'accessKey',\n allowfullscreen: 'allowFullScreen',\n autocapitalize: 'autoCapitalize',\n autocomplete: 'autoComplete',\n autocorrect: 'autoCorrect',\n autofocus: 'autoFocus',\n autoplay: 'autoPlay',\n autosave: 'autoSave',\n cellpadding: 'cellPadding',\n cellspacing: 'cellSpacing',\n charset: 'charSet',\n class: 'className',\n classid: 'classID',\n classname: 'className',\n colspan: 'colSpan',\n contenteditable: 'contentEditable',\n contextmenu: 'contextMenu',\n controlslist: 'controlsList',\n crossorigin: 'crossOrigin',\n dangerouslysetinnerhtml: 'dangerouslySetInnerHTML',\n datetime: 'dateTime',\n defaultchecked: 'defaultChecked',\n defaultvalue: 'defaultValue',\n enctype: 'encType',\n for: 'htmlFor',\n formmethod: 'formMethod',\n formaction: 'formAction',\n formenctype: 'formEncType',\n formnovalidate: 'formNoValidate',\n formtarget: 'formTarget',\n frameborder: 'frameBorder',\n hreflang: 'hrefLang',\n htmlfor: 'htmlFor',\n httpequiv: 'httpEquiv',\n 'http-equiv': 'httpEquiv',\n icon: 'icon',\n innerhtml: 'innerHTML',\n inputmode: 'inputMode',\n itemid: 'itemID',\n itemprop: 'itemProp',\n itemref: 'itemRef',\n itemscope: 'itemScope',\n itemtype: 'itemType',\n keyparams: 'keyParams',\n keytype: 'keyType',\n marginwidth: 'marginWidth',\n marginheight: 'marginHeight',\n maxlength: 'maxLength',\n mediagroup: 'mediaGroup',\n minlength: 'minLength',\n nomodule: 'noModule',\n novalidate: 'noValidate',\n playsinline: 'playsInline',\n radiogroup: 'radioGroup',\n readonly: 'readOnly',\n referrerpolicy: 'referrerPolicy',\n rowspan: 'rowSpan',\n spellcheck: 'spellCheck',\n srcdoc: 'srcDoc',\n srclang: 'srcLang',\n srcset: 'srcSet',\n tabindex: 'tabIndex',\n typemustmatch: 'typeMustMatch',\n usemap: 'useMap',\n // SVG\n accentheight: 'accentHeight',\n 'accent-height': 'accentHeight',\n alignmentbaseline: 'alignmentBaseline',\n 'alignment-baseline': 'alignmentBaseline',\n allowreorder: 'allowReorder',\n arabicform: 'arabicForm',\n 'arabic-form': 'arabicForm',\n attributename: 'attributeName',\n attributetype: 'attributeType',\n autoreverse: 'autoReverse',\n basefrequency: 'baseFrequency',\n baselineshift: 'baselineShift',\n 'baseline-shift': 'baselineShift',\n baseprofile: 'baseProfile',\n calcmode: 'calcMode',\n capheight: 'capHeight',\n 'cap-height': 'capHeight',\n clippath: 'clipPath',\n 'clip-path': 'clipPath',\n clippathunits: 'clipPathUnits',\n cliprule: 'clipRule',\n 'clip-rule': 'clipRule',\n colorinterpolation: 'colorInterpolation',\n 'color-interpolation': 'colorInterpolation',\n colorinterpolationfilters: 'colorInterpolationFilters',\n 'color-interpolation-filters': 'colorInterpolationFilters',\n colorprofile: 'colorProfile',\n 'color-profile': 'colorProfile',\n colorrendering: 'colorRendering',\n 'color-rendering': 'colorRendering',\n contentscripttype: 'contentScriptType',\n contentstyletype: 'contentStyleType',\n diffuseconstant: 'diffuseConstant',\n dominantbaseline: 'dominantBaseline',\n 'dominant-baseline': 'dominantBaseline',\n edgemode: 'edgeMode',\n enablebackground: 'enableBackground',\n 'enable-background': 'enableBackground',\n externalresourcesrequired: 'externalResourcesRequired',\n fillopacity: 'fillOpacity',\n 'fill-opacity': 'fillOpacity',\n fillrule: 'fillRule',\n 'fill-rule': 'fillRule',\n filterres: 'filterRes',\n filterunits: 'filterUnits',\n floodopacity: 'floodOpacity',\n 'flood-opacity': 'floodOpacity',\n floodcolor: 'floodColor',\n 'flood-color': 'floodColor',\n fontfamily: 'fontFamily',\n 'font-family': 'fontFamily',\n fontsize: 'fontSize',\n 'font-size': 'fontSize',\n fontsizeadjust: 'fontSizeAdjust',\n 'font-size-adjust': 'fontSizeAdjust',\n fontstretch: 'fontStretch',\n 'font-stretch': 'fontStretch',\n fontstyle: 'fontStyle',\n 'font-style': 'fontStyle',\n fontvariant: 'fontVariant',\n 'font-variant': 'fontVariant',\n fontweight: 'fontWeight',\n 'font-weight': 'fontWeight',\n glyphname: 'glyphName',\n 'glyph-name': 'glyphName',\n glyphorientationhorizontal: 'glyphOrientationHorizontal',\n 'glyph-orientation-horizontal': 'glyphOrientationHorizontal',\n glyphorientationvertical: 'glyphOrientationVertical',\n 'glyph-orientation-vertical': 'glyphOrientationVertical',\n glyphref: 'glyphRef',\n gradienttransform: 'gradientTransform',\n gradientunits: 'gradientUnits',\n horizadvx: 'horizAdvX',\n 'horiz-adv-x': 'horizAdvX',\n horizoriginx: 'horizOriginX',\n 'horiz-origin-x': 'horizOriginX',\n imagerendering: 'imageRendering',\n 'image-rendering': 'imageRendering',\n kernelmatrix: 'kernelMatrix',\n kernelunitlength: 'kernelUnitLength',\n keypoints: 'keyPoints',\n keysplines: 'keySplines',\n keytimes: 'keyTimes',\n lengthadjust: 'lengthAdjust',\n letterspacing: 'letterSpacing',\n 'letter-spacing': 'letterSpacing',\n lightingcolor: 'lightingColor',\n 'lighting-color': 'lightingColor',\n limitingconeangle: 'limitingConeAngle',\n markerend: 'markerEnd',\n 'marker-end': 'markerEnd',\n markerheight: 'markerHeight',\n markermid: 'markerMid',\n 'marker-mid': 'markerMid',\n markerstart: 'markerStart',\n 'marker-start': 'markerStart',\n markerunits: 'markerUnits',\n markerwidth: 'markerWidth',\n maskcontentunits: 'maskContentUnits',\n maskunits: 'maskUnits',\n numoctaves: 'numOctaves',\n overlineposition: 'overlinePosition',\n 'overline-position': 'overlinePosition',\n overlinethickness: 'overlineThickness',\n 'overline-thickness': 'overlineThickness',\n paintorder: 'paintOrder',\n 'paint-order': 'paintOrder',\n 'panose-1': 'panose1',\n pathlength: 'pathLength',\n patterncontentunits: 'patternContentUnits',\n patterntransform: 'patternTransform',\n patternunits: 'patternUnits',\n pointerevents: 'pointerEvents',\n 'pointer-events': 'pointerEvents',\n pointsatx: 'pointsAtX',\n pointsaty: 'pointsAtY',\n pointsatz: 'pointsAtZ',\n preservealpha: 'preserveAlpha',\n preserveaspectratio: 'preserveAspectRatio',\n primitiveunits: 'primitiveUnits',\n refx: 'refX',\n refy: 'refY',\n renderingintent: 'renderingIntent',\n 'rendering-intent': 'renderingIntent',\n repeatcount: 'repeatCount',\n repeatdur: 'repeatDur',\n requiredextensions: 'requiredExtensions',\n requiredfeatures: 'requiredFeatures',\n shaperendering: 'shapeRendering',\n 'shape-rendering': 'shapeRendering',\n specularconstant: 'specularConstant',\n specularexponent: 'specularExponent',\n spreadmethod: 'spreadMethod',\n startoffset: 'startOffset',\n stddeviation: 'stdDeviation',\n stitchtiles: 'stitchTiles',\n stopcolor: 'stopColor',\n 'stop-color': 'stopColor',\n stopopacity: 'stopOpacity',\n 'stop-opacity': 'stopOpacity',\n strikethroughposition: 'strikethroughPosition',\n 'strikethrough-position': 'strikethroughPosition',\n strikethroughthickness: 'strikethroughThickness',\n 'strikethrough-thickness': 'strikethroughThickness',\n strokedasharray: 'strokeDasharray',\n 'stroke-dasharray': 'strokeDasharray',\n strokedashoffset: 'strokeDashoffset',\n 'stroke-dashoffset': 'strokeDashoffset',\n strokelinecap: 'strokeLinecap',\n 'stroke-linecap': 'strokeLinecap',\n strokelinejoin: 'strokeLinejoin',\n 'stroke-linejoin': 'strokeLinejoin',\n strokemiterlimit: 'strokeMiterlimit',\n 'stroke-miterlimit': 'strokeMiterlimit',\n strokewidth: 'strokeWidth',\n 'stroke-width': 'strokeWidth',\n strokeopacity: 'strokeOpacity',\n 'stroke-opacity': 'strokeOpacity',\n suppresscontenteditablewarning: 'suppressContentEditableWarning',\n suppresshydrationwarning: 'suppressHydrationWarning',\n surfacescale: 'surfaceScale',\n systemlanguage: 'systemLanguage',\n tablevalues: 'tableValues',\n targetx: 'targetX',\n targety: 'targetY',\n textanchor: 'textAnchor',\n 'text-anchor': 'textAnchor',\n textdecoration: 'textDecoration',\n 'text-decoration': 'textDecoration',\n textlength: 'textLength',\n textrendering: 'textRendering',\n 'text-rendering': 'textRendering',\n underlineposition: 'underlinePosition',\n 'underline-position': 'underlinePosition',\n underlinethickness: 'underlineThickness',\n 'underline-thickness': 'underlineThickness',\n unicodebidi: 'unicodeBidi',\n 'unicode-bidi': 'unicodeBidi',\n unicoderange: 'unicodeRange',\n 'unicode-range': 'unicodeRange',\n unitsperem: 'unitsPerEm',\n 'units-per-em': 'unitsPerEm',\n unselectable: 'unselectable',\n valphabetic: 'vAlphabetic',\n 'v-alphabetic': 'vAlphabetic',\n vectoreffect: 'vectorEffect',\n 'vector-effect': 'vectorEffect',\n vertadvy: 'vertAdvY',\n 'vert-adv-y': 'vertAdvY',\n vertoriginx: 'vertOriginX',\n 'vert-origin-x': 'vertOriginX',\n vertoriginy: 'vertOriginY',\n 'vert-origin-y': 'vertOriginY',\n vhanging: 'vHanging',\n 'v-hanging': 'vHanging',\n videographic: 'vIdeographic',\n 'v-ideographic': 'vIdeographic',\n viewbox: 'viewBox',\n viewtarget: 'viewTarget',\n vmathematical: 'vMathematical',\n 'v-mathematical': 'vMathematical',\n wordspacing: 'wordSpacing',\n 'word-spacing': 'wordSpacing',\n writingmode: 'writingMode',\n 'writing-mode': 'writingMode',\n xchannelselector: 'xChannelSelector',\n xheight: 'xHeight',\n 'x-height': 'xHeight',\n xlinkactuate: 'xlinkActuate',\n 'xlink:actuate': 'xlinkActuate',\n xlinkarcrole: 'xlinkArcrole',\n 'xlink:arcrole': 'xlinkArcrole',\n xlinkhref: 'xlinkHref',\n 'xlink:href': 'xlinkHref',\n xlinkrole: 'xlinkRole',\n 'xlink:role': 'xlinkRole',\n xlinkshow: 'xlinkShow',\n 'xlink:show': 'xlinkShow',\n xlinktitle: 'xlinkTitle',\n 'xlink:title': 'xlinkTitle',\n xlinktype: 'xlinkType',\n 'xlink:type': 'xlinkType',\n xmlbase: 'xmlBase',\n 'xml:base': 'xmlBase',\n xmllang: 'xmlLang',\n 'xml:lang': 'xmlLang',\n 'xml:space': 'xmlSpace',\n xmlnsxlink: 'xmlnsXlink',\n 'xmlns:xlink': 'xmlnsXlink',\n xmlspace: 'xmlSpace',\n ychannelselector: 'yChannelSelector',\n zoomandpan: 'zoomAndPan',\n // event handlers\n onblur: 'onBlur',\n onchange: 'onChange',\n onclick: 'onClick',\n oncontextmenu: 'onContextMenu',\n ondoubleclick: 'onDoubleClick',\n ondrag: 'onDrag',\n ondragend: 'onDragEnd',\n ondragenter: 'onDragEnter',\n ondragexit: 'onDragExit',\n ondragleave: 'onDragLeave',\n ondragover: 'onDragOver',\n ondragstart: 'onDragStart',\n ondrop: 'onDrop',\n onerror: 'onError',\n onfocus: 'onFocus',\n oninput: 'onInput',\n oninvalid: 'onInvalid',\n onkeydown: 'onKeyDown',\n onkeypress: 'onKeyPress',\n onkeyup: 'onKeyUp',\n onload: 'onLoad',\n onmousedown: 'onMouseDown',\n onmouseenter: 'onMouseEnter',\n onmouseleave: 'onMouseLeave',\n onmousemove: 'onMouseMove',\n onmouseout: 'onMouseOut',\n onmouseover: 'onMouseOver',\n onmouseup: 'onMouseUp',\n onscroll: 'onScroll',\n onsubmit: 'onSubmit',\n ontouchcancel: 'onTouchCancel',\n ontouchend: 'onTouchEnd',\n ontouchmove: 'onTouchMove',\n ontouchstart: 'onTouchStart',\n onwheel: 'onWheel',\n};\n//# sourceMappingURL=helpers.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n/* eslint-disable @typescript-eslint/no-use-before-define */\nimport * as React from 'react';\nimport { noTextChildNodes, possibleStandardNames, randomString, styleToObject } from './helpers';\nfunction parseAttributes(node, reactKey) {\n var attributes = {\n key: reactKey,\n };\n /* istanbul ignore else */\n if (node instanceof Element) {\n var nodeClassNames = node.getAttribute('class');\n if (nodeClassNames) {\n attributes.className = nodeClassNames;\n }\n __spreadArray([], __read(node.attributes), false).forEach(function (d) {\n switch (d.name) {\n // this is manually handled above, so break;\n case 'class':\n break;\n case 'style':\n attributes[d.name] = styleToObject(d.value);\n break;\n case 'allowfullscreen':\n case 'allowpaymentrequest':\n case 'async':\n case 'autofocus':\n case 'autoplay':\n case 'checked':\n case 'controls':\n case 'default':\n case 'defer':\n case 'disabled':\n case 'formnovalidate':\n case 'hidden':\n case 'ismap':\n case 'itemscope':\n case 'loop':\n case 'multiple':\n case 'muted':\n case 'nomodule':\n case 'novalidate':\n case 'open':\n case 'readonly':\n case 'required':\n case 'reversed':\n case 'selected':\n case 'typemustmatch':\n attributes[possibleStandardNames[d.name] || d.name] = true;\n break;\n default:\n attributes[possibleStandardNames[d.name] || d.name] = d.value;\n }\n });\n }\n return attributes;\n}\nfunction parseChildren(childNodeList, level, options) {\n var children = __spreadArray([], __read(childNodeList), false).map(function (node, index) {\n return convertFromNode(node, __assign(__assign({}, options), { index: index, level: level + 1 }));\n })\n .filter(Boolean);\n if (!children.length) {\n return null;\n }\n return children;\n}\nfunction parseName(nodeName) {\n if (/[a-z]+[A-Z]+[a-z]+/.test(nodeName)) {\n return nodeName;\n }\n return nodeName.toLowerCase();\n}\nexport function convertFromNode(input, options) {\n var _a;\n if (options === void 0) { options = {}; }\n if (!input || !(input instanceof Node)) {\n return null;\n }\n var _b = options.actions, actions = _b === void 0 ? [] : _b, _c = options.index, index = _c === void 0 ? 0 : _c, _d = options.level, level = _d === void 0 ? 0 : _d, randomKey = options.randomKey;\n var node = input;\n var key = \"\".concat(level, \"-\").concat(index);\n var result = [];\n if (randomKey && level === 0) {\n key = \"\".concat(randomString(), \"-\").concat(key);\n }\n /* istanbul ignore else */\n if (Array.isArray(actions)) {\n actions.forEach(function (action) {\n if (action.condition(node, key, level)) {\n if (typeof action.pre === 'function') {\n node = action.pre(node, key, level);\n if (!(node instanceof Node)) {\n node = input;\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn('The `pre` method always must return a valid DomNode (instanceof Node) - your modification will be ignored (Hint: if you want to render a React-component, use the `post` method instead)');\n }\n }\n }\n if (typeof action.post === 'function') {\n result.push(action.post(node, key, level));\n }\n }\n });\n }\n if (result.length) {\n return result;\n }\n switch (node.nodeType) {\n case 1: {\n // regular dom-node\n return React.createElement(parseName(node.nodeName), parseAttributes(node, key), parseChildren(node.childNodes, level, options));\n }\n case 3: {\n // textnode\n var nodeText = ((_a = node.nodeValue) === null || _a === void 0 ? void 0 : _a.toString()) || '';\n /* istanbul ignore else */\n if (/^\\s+$/.test(nodeText) && !/[\\u00A0\\u202F]/.test(nodeText)) {\n return null;\n }\n /* istanbul ignore next */\n if (!node.parentNode) {\n return nodeText;\n }\n var parentNodeName = node.parentNode.nodeName.toLowerCase();\n if (noTextChildNodes.includes(parentNodeName)) {\n /* istanbul ignore else */\n if (/\\S/.test(nodeText)) {\n // eslint-disable-next-line no-console\n console.warn(\"A textNode is not allowed inside '\".concat(parentNodeName, \"'. Your text \\\"\").concat(nodeText, \"\\\" will be ignored\"));\n }\n return null;\n }\n return nodeText;\n }\n case 8: {\n // html-comment\n return null;\n }\n /* istanbul ignore next */\n default: {\n return null;\n }\n }\n}\nexport function convertFromString(input, options) {\n if (options === void 0) { options = {}; }\n if (!input || typeof input !== 'string') {\n return null;\n }\n var _a = options.nodeOnly, nodeOnly = _a === void 0 ? false : _a, _b = options.selector, selector = _b === void 0 ? 'body > *' : _b, _c = options.type, type = _c === void 0 ? 'text/html' : _c;\n try {\n var parser = new DOMParser();\n var document_1 = parser.parseFromString(input, type);\n var node = document_1.querySelector(selector);\n if (!(node instanceof Node)) {\n throw new TypeError('Error parsing input');\n }\n if (nodeOnly) {\n return node;\n }\n return convertFromNode(node, options);\n }\n catch (error) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n }\n return null;\n}\nexport default function convert(input, options) {\n if (options === void 0) { options = {}; }\n if (typeof input === 'string') {\n return convertFromString(input, options);\n }\n if (input instanceof Node) {\n return convertFromNode(input, options);\n }\n return null;\n}\n//# sourceMappingURL=index.js.map","import { canUseDOM as canUseDOMFlag } from 'exenv';\nexport var STATUS = {\n FAILED: 'failed',\n LOADED: 'loaded',\n LOADING: 'loading',\n PENDING: 'pending',\n READY: 'ready',\n UNSUPPORTED: 'unsupported',\n};\nexport function canUseDOM() {\n return canUseDOMFlag;\n}\nexport function isSupportedEnvironment() {\n return supportsInlineSVG() && typeof window !== 'undefined' && window !== null;\n}\nexport function supportsInlineSVG() {\n /* istanbul ignore next */\n if (!document) {\n return false;\n }\n var div = document.createElement('div');\n div.innerHTML = '<svg />';\n var svg = div.firstChild;\n return !!svg && svg.namespaceURI === 'http://www.w3.org/2000/svg';\n}\nfunction randomCharacter(character) {\n return character[Math.floor(Math.random() * character.length)];\n}\nexport function randomString(length) {\n var letters = 'abcdefghijklmnopqrstuvwxyz';\n var numbers = '1234567890';\n var charset = \"\".concat(letters).concat(letters.toUpperCase()).concat(numbers);\n var R = '';\n for (var index = 0; index < length; index++) {\n R += randomCharacter(charset);\n }\n return R;\n}\n/**\n * Remove properties from an object\n */\nexport function omit(input) {\n var filter = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n filter[_i - 1] = arguments[_i];\n }\n var output = {};\n for (var key in input) {\n /* istanbul ignore else */\n if ({}.hasOwnProperty.call(input, key)) {\n if (!filter.includes(key)) {\n output[key] = input[key];\n }\n }\n }\n return output;\n}\n//# sourceMappingURL=helpers.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport convert from 'react-from-dom';\nimport { canUseDOM, isSupportedEnvironment, omit, randomString, STATUS } from './helpers';\nexport var cacheStore = Object.create(null);\nvar InlineSVG = /** @class */ (function (_super) {\n __extends(InlineSVG, _super);\n function InlineSVG(props) {\n var _this = _super.call(this, props) || this;\n Object.defineProperty(_this, \"isInitialized\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(_this, \"isActive\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(_this, \"hash\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(_this, \"handleLoad\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: function (content, hasCache) {\n if (hasCache === void 0) { hasCache = false; }\n /* istanbul ignore else */\n if (_this.isActive) {\n _this.setState({\n content: content,\n hasCache: hasCache,\n status: STATUS.LOADED,\n }, _this.getElement);\n }\n }\n });\n Object.defineProperty(_this, \"handleError\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: function (error) {\n var onError = _this.props.onError;\n var status = error.message === 'Browser does not support SVG' ? STATUS.UNSUPPORTED : STATUS.FAILED;\n /* istanbul ignore else */\n if (_this.isActive) {\n _this.setState({ status: status }, function () {\n /* istanbul ignore else */\n if (typeof onError === 'function') {\n onError(error);\n }\n });\n }\n }\n });\n Object.defineProperty(_this, \"request\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: function () {\n var _a = _this.props, cacheRequests = _a.cacheRequests, fetchOptions = _a.fetchOptions, src = _a.src;\n try {\n if (cacheRequests) {\n cacheStore[src] = { content: '', status: STATUS.LOADING };\n }\n return fetch(src, fetchOptions)\n .then(function (response) {\n var contentType = response.headers.get('content-type');\n var _a = __read((contentType || '').split(/ ?; ?/), 1), fileType = _a[0];\n if (response.status > 299) {\n throw new Error('Not found');\n }\n if (!['image/svg+xml', 'text/plain'].some(function (d) { return fileType.includes(d); })) {\n throw new Error(\"Content type isn't valid: \".concat(fileType));\n }\n return response.text();\n })\n .then(function (content) {\n var currentSrc = _this.props.src;\n // the current src don't match the previous one, skipping...\n if (src !== currentSrc) {\n if (cacheStore[src].status === STATUS.LOADING) {\n delete cacheStore[src];\n }\n return;\n }\n _this.handleLoad(content);\n /* istanbul ignore else */\n if (cacheRequests) {\n var cache = cacheStore[src];\n /* istanbul ignore else */\n if (cache) {\n cache.content = content;\n cache.status = STATUS.LOADED;\n }\n }\n })\n .catch(function (error) {\n _this.handleError(error);\n /* istanbul ignore else */\n if (cacheRequests) {\n var cache = cacheStore[src];\n /* istanbul ignore else */\n if (cache) {\n delete cacheStore[src];\n }\n }\n });\n }\n catch (error) {\n return _this.handleError(new Error(error.message));\n }\n }\n });\n _this.state = {\n content: '',\n element: null,\n hasCache: !!props.cacheRequests && !!cacheStore[props.src],\n status: STATUS.PENDING,\n };\n _this.hash = props.uniqueHash || randomString(8);\n return _this;\n }\n Object.defineProperty(InlineSVG.prototype, \"componentDidMount\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n this.isActive = true;\n if (!canUseDOM() || this.isInitialized) {\n return;\n }\n var status = this.state.status;\n var src = this.props.src;\n try {\n /* istanbul ignore else */\n if (status === STATUS.PENDING) {\n /* istanbul ignore else */\n if (!isSupportedEnvironment()) {\n throw new Error('Browser does not support SVG');\n }\n /* istanbul ignore else */\n if (!src) {\n throw new Error('Missing src');\n }\n this.load();\n }\n }\n catch (error) {\n this.handleError(error);\n }\n this.isInitialized = true;\n }\n });\n Object.defineProperty(InlineSVG.prototype, \"componentDidUpdate\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (previousProps, previousState) {\n if (!canUseDOM()) {\n return;\n }\n var _a = this.state, hasCache = _a.hasCache, status = _a.status;\n var _b = this.props, onLoad = _b.onLoad, src = _b.src;\n if (previousState.status !== STATUS.READY && status === STATUS.READY) {\n /* istanbul ignore else */\n if (onLoad) {\n onLoad(src, hasCache);\n }\n }\n if (previousProps.src !== src) {\n if (!src) {\n this.handleError(new Error('Missing src'));\n return;\n }\n this.load();\n }\n }\n });\n Object.defineProperty(InlineSVG.prototype, \"componentWillUnmount\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n this.isActive = false;\n }\n });\n Object.defineProperty(InlineSVG.prototype, \"getNode\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n var _a = this.props, description = _a.description, title = _a.title;\n try {\n var svgText = this.processSVG();\n var node = convert(svgText, { nodeOnly: true });\n if (!node || !(node instanceof SVGSVGElement)) {\n throw new Error('Could not convert the src to a DOM Node');\n }\n var svg = this.updateSVGAttributes(node);\n if (description) {\n var originalDesc = svg.querySelector('desc');\n if (originalDesc && originalDesc.parentNode) {\n originalDesc.parentNode.removeChild(originalDesc);\n }\n var descElement = document.createElementNS('http://www.w3.org/2000/svg', 'desc');\n descElement.innerHTML = description;\n svg.prepend(descElement);\n }\n if (typeof title !== 'undefined') {\n var originalTitle = svg.querySelector('title');\n if (originalTitle && originalTitle.parentNode) {\n originalTitle.parentNode.removeChild(originalTitle);\n }\n if (title) {\n var titleElement = document.createElementNS('http://www.w3.org/2000/svg', 'title');\n titleElement.innerHTML = title;\n svg.prepend(titleElement);\n }\n }\n return svg;\n }\n catch (error) {\n return this.handleError(error);\n }\n }\n });\n Object.defineProperty(InlineSVG.prototype, \"getElement\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n try {\n var node = this.getNode();\n var element = convert(node);\n if (!element || !React.isValidElement(element)) {\n throw new Error('Could not convert the src to a React element');\n }\n this.setState({\n element: element,\n status: STATUS.READY,\n });\n }\n catch (error) {\n this.handleError(new Error(error.message));\n }\n }\n });\n Object.defineProperty(InlineSVG.prototype, \"load\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n var _this = this;\n /* istanbul ignore else */\n if (this.isActive) {\n this.setState({\n content: '',\n element: null,\n hasCache: false,\n status: STATUS.LOADING,\n }, function () {\n var _a = _this.props, cacheRequests = _a.cacheRequests, src = _a.src;\n var cache = cacheRequests && cacheStore[src];\n if (cache && cache.status === STATUS.LOADED) {\n _this.handleLoad(cache.content, true);\n return;\n }\n var dataURI = src.match(/data:image\\/svg[^,]*?(;base64)?,(.*)/);\n var inlineSrc;\n if (dataURI) {\n inlineSrc = dataURI[1] ? window.atob(dataURI[2]) : decodeURIComponent(dataURI[2]);\n }\n else if (src.includes('<svg')) {\n inlineSrc = src;\n }\n if (inlineSrc) {\n _this.handleLoad(inlineSrc);\n return;\n }\n _this.request();\n });\n }\n }\n });\n Object.defineProperty(InlineSVG.prototype, \"updateSVGAttributes\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function (node) {\n var _this = this;\n var _a = this.props, _b = _a.baseURL, baseURL = _b === void 0 ? '' : _b, uniquifyIDs = _a.uniquifyIDs;\n var replaceableAttributes = ['id', 'href', 'xlink:href', 'xlink:role', 'xlink:arcrole'];\n var linkAttributes = ['href', 'xlink:href'];\n var isDataValue = function (name, value) {\n return linkAttributes.includes(name) && (value ? !value.includes('#') : false);\n };\n if (!uniquifyIDs) {\n return node;\n }\n __spreadArray([], __read(node.children), false).map(function (d) {\n if (d.attributes && d.attributes.length) {\n var attributes_1 = Object.values(d.attributes).map(function (a) {\n var attribute = a;\n var match = a.value.match(/url\\((.*?)\\)/);\n if (match && match[1]) {\n attribute.value = a.value.replace(match[0], \"url(\".concat(baseURL).concat(match[1], \"__\").concat(_this.hash, \")\"));\n }\n return attribute;\n });\n replaceableAttributes.forEach(function (r) {\n var attribute = attributes_1.find(function (a) { return a.name === r; });\n if (attribute && !isDataValue(r, attribute.value)) {\n attribute.value = \"\".concat(attribute.value, \"__\").concat(_this.hash);\n }\n });\n }\n if (d.children.length) {\n return _this.updateSVGAttributes(d);\n }\n return d;\n });\n return node;\n }\n });\n Object.defineProperty(InlineSVG.prototype, \"processSVG\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n var content = this.state.content;\n var preProcessor = this.props.preProcessor;\n if (preProcessor) {\n return preProcessor(content);\n }\n return content;\n }\n });\n Object.defineProperty(InlineSVG.prototype, \"render\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: function () {\n var _a = this.state, element = _a.element, status = _a.status;\n var _b = this.props, _c = _b.children, children = _c === void 0 ? null : _c, innerRef = _b.innerRef, _d = _b.loader, loader = _d === void 0 ? null : _d;\n var elementProps = omit(this.props, 'baseURL', 'cacheRequests', 'children', 'description', 'fetchOptions', 'innerRef', 'loader', 'onError', 'onLoad', 'preProcessor', 'src', 'title', 'uniqueHash', 'uniquifyIDs');\n if (!canUseDOM()) {\n return loader;\n }\n if (element) {\n return React.cloneElement(element, __assign({ ref: innerRef }, elementProps));\n }\n if ([STATUS.UNSUPPORTED, STATUS.FAILED].includes(status)) {\n return children;\n }\n return loader;\n }\n });\n Object.defineProperty(InlineSVG, \"defaultProps\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n cacheRequests: true,\n uniquifyIDs: false,\n }\n });\n return InlineSVG;\n}(React.PureComponent));\nexport default InlineSVG;\nexport * from './types';\n//# sourceMappingURL=index.js.map","import { getImage, ImageDataLike, GatsbyImage } from \"gatsby-plugin-image\"\nimport React, { memo } from \"react\"\nimport SVG from \"react-inlinesvg\"\n\ntype SiteLogoProps = {\n alt?: string\n className?: string\n icon: {\n normal: ImageDataLike | null\n extension: string\n publicURL: string\n }\n}\n\nconst SiteLogo: React.FC<SiteLogoProps> = ({\n alt = \"\",\n className = \"\",\n icon: { normal, extension, publicURL },\n}) => {\n if (!normal || extension == \"svg\") {\n return <SVG src={publicURL} className={className} title={alt} />\n }\n\n const image = getImage(normal)\n\n return (\n <GatsbyImage image={image} className={`site-logo ${className}`} alt={alt} />\n )\n}\n\nexport default memo(SiteLogo)\n","import React, { memo } from \"react\"\nimport { Link } from \"gatsby\"\nimport DarkModeToggle from \"@pitayan/gatsby-theme-pitayan/src/components/DarkModeToggle\"\nimport SiteLogo from \"@pitayan/gatsby-theme-pitayan/src/components/SiteLogo\"\nimport { useSiteMetadata } from \"@pitayan/gatsby-theme-pitayan/src/hooks\"\n\ntype TopNavProps = {\n className?: string\n}\n\nconst TopNav: React.FC<TopNavProps> = ({\n className = \"\",\n}) => {\n const { name, title, icon } = useSiteMetadata()\n\n return (\n <nav className={`block flex justify-between content-center ${className}`}>\n <Link to=\"/\" className=\"flex space-x-3 items-center\">\n <SiteLogo className=\"h-8 w-8\" alt={title} icon={icon} />\n <b className=\"font-serif font-extrabold tracking-wide text-2xl hidden md:block\">\n {name}\n </b>\n </Link>\n <div className=\"flex space-x-8 text-3xl items-center\">\n <DarkModeToggle />\n </div>\n </nav>\n )\n}\n\nexport default memo(TopNav)\n","import React, { memo } from \"react\"\nimport { Link } from \"gatsby\"\nimport { useSiteMetadata } from \"@pitayan/gatsby-theme-pitayan/src/hooks\"\nimport NavigationLinksGroup from \"@pitayan/gatsby-theme-pitayan/src/components/NavigationLinksGroup\"\n\ntype BottomFooterProps = {\n className?: string\n}\n\nconst BottomFooter: React.FC<BottomFooterProps> = ({\n className = \"\",\n}) => {\n const year = new Date().getFullYear()\n const { siteLinks, name, siteDescription } = useSiteMetadata()\n\n return (\n <footer className={className}>\n <div className=\"flex flex-wrap justify-between\">\n <div className=\"flex flex-col justify-between w-96\">\n <h1 className=\"font-black\">\n {name}\n <br />\n <small className=\"text-sm text-gray-500 dark:text-gray-400\">\n {siteDescription}\n </small>\n </h1>\n </div>\n <div className=\"flex flex-wrap justify-between grow\">\n <div className=\"space-y-2 text-base\">\n <h5 className=\"font-bold mb-3\">Explore</h5>\n <Link className=\"site-link block\" to=\"/\">\n home\n </Link>\n <Link className=\"site-link block\" to=\"/posts\">\n posts\n </Link>\n <Link className=\"site-link block\" to=\"/categories\">\n categories\n </Link>\n <Link className=\"site-link block\" to=\"/authors\">\n authors\n </Link>\n <NavigationLinksGroup group=\"explore\" data={siteLinks} />\n </div>\n <div className=\"space-y-2 text-base\">\n <h5 className=\"font-bold mb-3\">Site</h5>\n <NavigationLinksGroup group=\"site\" data={siteLinks} />\n </div>\n <div className=\"space-y-2 text-base\">\n <h5 className=\"font-bold mb-3\">Connect</h5>\n <NavigationLinksGroup group=\"connect\" data={siteLinks} />\n </div>\n </div>\n </div>\n <div className=\"text-sm text-gray-500 font-bold dark:text-gray-400 mt-8 mb-16\">\n © {year} {name}. All rights reserved.\n </div>\n </footer>\n )\n}\n\nexport default memo(BottomFooter)\n","import React, { memo, useState } from \"react\"\n\nimport {\n CUSTOM_EVENT_SUBSCRIPTION,\n SUBSCRIPTION_DEFAULT_DESCRIPTION,\n SUBSCRIPTION_DEFAULT_TITLE\n} from \"@pitayan/gatsby-theme-pitayan/src/constants\"\nimport { dispatchCustomEvent, subscribeMailChimp } from \"@pitayan/gatsby-theme-pitayan/src/utils\"\nimport { useSiteMetadata } from \"@pitayan/gatsby-theme-pitayan/src/hooks\"\n\ntype SubscriptionPanelProps = {\n className?: string\n}\n\nconst SubscriptionPanel: React.FC<SubscriptionPanelProps> = ({\n className = \"\",\n}) => {\n const { siteSubscription: { title, description } } = useSiteMetadata()\n const [email, setEmail] = useState(\"\")\n const [message, setMessage] = useState(\"\")\n const [subscribed, setSubscribed] = useState(false)\n\n const handleOnSubmit = (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n\n subscribeMailChimp(email)\n .then(data => {\n if ((data as any).result === \"error\") {\n throw data\n }\n\n setSubscribed(true)\n setMessage(\"Subscribed!\")\n\n dispatchCustomEvent(CUSTOM_EVENT_SUBSCRIPTION, { email })\n\n setTimeout(() => {\n setSubscribed(false)\n setEmail(\"\")\n setMessage(\"\")\n }, 6000)\n })\n .catch(error => {\n setMessage(error.msg)\n })\n }\n\n const handleOnChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = event.currentTarget.value\n setEmail(value)\n setMessage(\"\")\n }\n\n return (\n <div className={`subscription ${className}`}>\n <div className=\"subscription-container\">\n <h3 className=\"subscription-title\">\n { title || SUBSCRIPTION_DEFAULT_TITLE }\n </h3>\n <div className=\"subscription-content\">\n { description || SUBSCRIPTION_DEFAULT_DESCRIPTION }\n </div>\n <form className=\"subscription-action\" onSubmit={handleOnSubmit}>\n <div className=\"w-full relative max-w-lg mx-auto\">\n <span className=\"absolute top-[23%] left-3 text-gray-400 dark:text-gray-500\">\n @\n </span>\n <input\n placeholder=\"your email\"\n name=\"email\"\n type=\"email\"\n className=\"outline-input md:!pr-32 !pl-8\"\n value={email}\n onChange={handleOnChange}\n formNoValidate\n />\n <button\n className=\"ghost-button ml-auto absolute top-[2%] right-0 hidden md:block\"\n type=\"submit\"\n disabled={subscribed}\n >\n Subscribe\n </button>\n </div>\n <small\n className={`block mt-2 ${\n subscribed ? \"text-green-500\" : \"text-red-500\"\n }`}\n >\n {message}\n </small>\n <br />\n <div className=\"w-full text-center -mb-2\">\n <button\n className=\"ghost-button md:hidden block mx-auto\"\n type=\"submit\"\n disabled={subscribed}\n >\n Subscribe\n </button>\n </div>\n </form>\n </div>\n </div>\n )\n}\n\nexport default memo(SubscriptionPanel)\n","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\n\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\n\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\n\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\n\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\n\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\n\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\n\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\n\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\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\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\nvar inherits = 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);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = 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};\n\nvar possibleConstructorReturn = 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 === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\n\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n\n var addedTags = {};\n var removedTags = {};\n\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n cb && cb();\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"</\" + type + \">\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"</\" + type + \">\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return React.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }, encode)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``}</\" + child.type + \"> ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return React.createElement(Component, newProps);\n };\n\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n\n\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \"<img src='http://mysite.com/js/test.js'\"}]\n * @param {Function} onChangeClientState: \"(newState) => console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\n\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\n\nexport default HelmetExport;\nexport { HelmetExport as Helmet };\n","import {\n Article,\n WebSite,\n WebPage,\n BreadcrumbList,\n Person,\n Organization,\n Graph,\n ImageObject,\n} from \"schema-dts\"\n\ntype SiteSchemasProps = {\n siteUrl: string\n siteLogoPath: string\n name: string\n postTitle: string\n description: string\n siteTitle: string\n pageUrl: string\n coverImageUrl: string\n socialUrls: string[]\n keywords: string\n dateCreated: string\n dateModified: string\n datePublished: string\n authors: {\n id: string\n name: string\n bio: string\n socialUrls: string[]\n }[]\n}\n\nexport const organizationSchema = ({\n siteUrl,\n siteLogoPath,\n siteTitle,\n socialUrls = [],\n}: Pick<\n SiteSchemasProps,\n \"siteUrl\" | \"siteLogoPath\" | \"siteTitle\" | \"socialUrls\"\n>) =>\n <Organization>{\n \"@type\": \"Organization\",\n \"@id\": `${siteUrl}/#organization`,\n name: siteTitle,\n url: siteUrl,\n sameAs: socialUrls,\n logo: {\n \"@type\": \"ImageObject\",\n \"@id\": `${siteUrl}/#logo`,\n inLanguage: \"en-US\",\n url: `${siteUrl}${siteLogoPath}`,\n width: \"512\",\n height: \"512\",\n caption: siteTitle,\n },\n image: {\n \"@id\": `${siteUrl}/#logo`,\n },\n }\n\nexport const websiteSchema = ({\n siteUrl,\n name,\n description,\n}: Pick<SiteSchemasProps, \"siteUrl\" | \"name\" | \"description\">) =>\n <WebSite>{\n \"@type\": \"WebSite\",\n \"@id\": `${siteUrl}/#website`,\n url: siteUrl,\n name: name,\n description: description,\n publisher: {\n \"@id\": `${siteUrl}/#organization`,\n },\n inLanguage: \"en-US\",\n }\n\nexport const breadcrumbsListSchema = ({\n siteUrl,\n postTitle,\n pageUrl,\n}: Pick<SiteSchemasProps, \"siteUrl\" | \"postTitle\" | \"pageUrl\">) =>\n <BreadcrumbList>{\n \"@type\": \"BreadcrumbList\",\n description: \"Breadcrumbs list\",\n name: \"Breadcrumbs\",\n \"@id\": `${siteUrl}/#breadcrumb`,\n get itemListElement() {\n let list = [\n {\n \"@type\": \"ListItem\",\n position: \"1\",\n item: {\n \"@type\": \"WebPage\",\n \"@id\": `${pageUrl}/#webpage`,\n url: siteUrl,\n name: \"Homepage\",\n },\n },\n ]\n\n if (postTitle) {\n list.push({\n \"@type\": \"ListItem\",\n position: \"2\",\n item: {\n \"@type\": \"WebPage\",\n \"@id\": `${siteUrl}/#webpage`,\n url: pageUrl,\n name: postTitle,\n },\n })\n }\n\n return list\n },\n }\n\nexport const webPageSchema = ({\n description,\n pageUrl,\n name,\n siteUrl,\n}: Pick<SiteSchemasProps, \"description\" | \"pageUrl\" | \"name\" | \"siteUrl\">) =>\n <WebPage>{\n \"@type\": \"WebPage\",\n \"@id\": `${pageUrl}/#webpage`,\n url: pageUrl,\n name: name,\n isPartOf: {\n \"@id\": `${siteUrl}/#website`,\n },\n about: {\n \"@id\": `${siteUrl}/#organization`,\n },\n description: description,\n breadcrumb: {\n \"@id\": `${siteUrl}/#breadcrumb`,\n },\n inLanguage: \"en-US\",\n }\n\nexport const postPageSchema = ({\n description,\n name,\n siteUrl,\n pageUrl,\n datePublished,\n dateModified,\n}: Pick<\n SiteSchemasProps,\n | \"description\"\n | \"pageUrl\"\n | \"name\"\n | \"siteUrl\"\n | \"datePublished\"\n | \"dateModified\"\n>) =>\n <WebPage>{\n \"@type\": \"WebPage\",\n \"@id\": `${pageUrl}/#webpage`,\n url: `${pageUrl}`,\n name: name,\n isPartOf: {\n \"@id\": `${siteUrl}/#website`,\n },\n about: {\n \"@id\": `${siteUrl}/#organization`,\n },\n description: description,\n datePublished: datePublished,\n dateModified: dateModified,\n breadcrumb: {\n \"@id\": `${siteUrl}/#breadcrumb`,\n },\n inLanguage: \"en-US\",\n }\n\nexport const authorSchema = ({\n siteUrl,\n id,\n name,\n bio,\n socialUrls = [],\n}: Pick<SiteSchemasProps, \"siteUrl\"> & SiteSchemasProps[\"authors\"][0]) =>\n <Person>{\n \"@type\": \"Person\",\n \"@id\": `${siteUrl}/#/schema/${id}`,\n name: name,\n image: {\n \"@type\": \"ImageObject\",\n \"@id\": `${siteUrl}/#personlogo`,\n inLanguage: \"en-US\",\n caption: name,\n },\n description: bio,\n sameAs: socialUrls,\n }\n\nexport const imageSchema = ({\n pageUrl,\n coverImageUrl,\n}: Pick<SiteSchemasProps, \"pageUrl\" | \"coverImageUrl\">) =>\n <ImageObject>{\n \"@type\": \"ImageObject\",\n \"@id\": `${pageUrl}/#primaryimage`,\n description: \"Cover Image\",\n url: coverImageUrl,\n inLanguage: \"en-US\",\n }\n\nexport const postSchema = ({\n siteUrl,\n pageUrl,\n postTitle,\n description,\n keywords,\n dateCreated,\n datePublished,\n dateModified,\n authors,\n}: Pick<\n SiteSchemasProps,\n | \"siteUrl\"\n | \"pageUrl\"\n | \"postTitle\"\n | \"description\"\n | \"keywords\"\n | \"dateCreated\"\n | \"dateModified\"\n | \"datePublished\"\n | \"authors\"\n>) =>\n <Article>{\n \"@type\": \"Article\",\n url: siteUrl,\n headline: postTitle,\n description: description,\n keywords: keywords,\n mainEntityOfPage: \"True\",\n publisher: {\n \"@id\": `${siteUrl}/#organization`,\n },\n image: {\n \"@id\": `${pageUrl}/#primaryimage`,\n },\n dateCreated: dateCreated,\n datePublished: datePublished,\n dateModified: dateModified,\n get author() {\n if (authors.length > 1) {\n return authors.map(({ id }) => {\n return { \"@id\": `${siteUrl}/#/schema/${id}` }\n })\n }\n\n return { \"@id\": `${siteUrl}/#/schema/${authors[0].id}` }\n },\n }\n\nexport const siteSchemas = ({\n siteUrl,\n siteLogoPath,\n name,\n siteTitle,\n description,\n postTitle,\n pageUrl,\n coverImageUrl,\n socialUrls,\n keywords,\n dateCreated,\n dateModified,\n datePublished,\n authors,\n}: SiteSchemasProps) =>\n <Graph>{\n \"@context\": \"https://schema.org\",\n \"@graph\": [\n organizationSchema({\n siteUrl,\n siteLogoPath,\n siteTitle,\n socialUrls,\n }),\n websiteSchema({\n siteUrl,\n name,\n description,\n }),\n breadcrumbsListSchema({\n siteUrl,\n postTitle,\n pageUrl,\n }),\n postTitle\n ? postPageSchema({\n description,\n pageUrl,\n name,\n siteUrl,\n datePublished,\n dateModified,\n })\n : webPageSchema({\n description,\n pageUrl,\n name,\n siteUrl,\n }),\n postTitle &&\n imageSchema({\n pageUrl,\n coverImageUrl,\n }),\n ...[\n postTitle &&\n authors.map(({ id, name, bio, socialUrls }) =>\n authorSchema({\n siteUrl,\n id,\n name,\n bio,\n socialUrls,\n })\n ),\n ],\n postTitle &&\n postSchema({\n siteUrl,\n pageUrl,\n postTitle,\n description,\n keywords,\n dateCreated,\n datePublished,\n dateModified,\n authors,\n }),\n ].filter(d => d),\n }\n","import React from \"react\"\nimport { Helmet } from \"react-helmet\"\nimport { helmetJsonLdProp } from \"react-schemaorg\"\nimport { useSiteMetadata } from \"@pitayan/gatsby-theme-pitayan/src/hooks\"\nimport { siteSchemas } from \"./schema\"\n\nexport type SEOProps = {\n postDescription?: string\n pageImage?: string\n timeToRead?: number\n postTitle?: string\n pageUrl?: string\n pageTitle?: string\n keywords?: string\n authors?: {\n id: string\n name: string\n bio: string\n socialUrls: string[]\n }[]\n date?: string\n noIndex?: boolean\n}\n\nconst SEO: React.FC<SEOProps> = ({\n pageImage,\n timeToRead,\n postDescription,\n postTitle,\n pageUrl,\n pageTitle,\n keywords,\n date,\n authors,\n noIndex = false,\n}) => {\n const {\n description: siteDescription,\n title: siteTitle,\n name,\n siteUrl,\n siteLinks,\n cover: { publicURL: siteCoverPath },\n icon: { publicURL: siteLogoPath },\n } = useSiteMetadata()\n\n const twitter = siteLinks.find(l => l.name == \"twitter\")\n const socialUrls = siteLinks.filter(l => !l.internal).map(l => l.url)\n const coverImageUrl = `${siteUrl}${pageImage || siteCoverPath}`\n const description = (postDescription || siteDescription || \"\").replace(\n /\"/g,\n '\\\\\"'\n )\n const title = postTitle || pageTitle || siteTitle || \"\"\n const url = pageUrl || siteUrl\n\n return (\n <Helmet\n title={`${name}${title ? \" | \" + title : \"\"}`}\n htmlAttributes={{ lang: \"en\" }}\n script={[\n helmetJsonLdProp(\n siteSchemas({\n siteUrl,\n siteLogoPath,\n name,\n siteTitle,\n description,\n postTitle,\n pageUrl: url,\n coverImageUrl,\n socialUrls,\n keywords,\n dateCreated: date,\n dateModified: date,\n datePublished: date,\n authors,\n })\n ),\n ]}\n >\n <meta name=\"theme-color\" content=\"#fff\" />\n <meta itemProp=\"name\" content={title} />\n <meta itemProp=\"description\" content={description} />\n <meta itemProp=\"image\" content={coverImageUrl} />\n <meta name=\"description\" content={description} />\n\n <meta name=\"twitter:card\" content=\"summary_large_image\" />\n <meta name=\"twitter:site\" content={name} />\n <meta name=\"twitter:title\" content={title} />\n <meta name=\"twitter:description\" content={description} />\n {twitter && <meta name=\"twitter:creator\" content={twitter.url} />}\n {timeToRead && <meta name=\"twitter:label1\" content=\"Reading time\" />}\n {timeToRead && (\n <meta name=\"twitter:data1\" content={`${timeToRead} min read`} />\n )}\n\n <meta property=\"og:type\" content=\"website\" />\n <meta property=\"og:title\" content={title} />\n <meta property=\"og:url\" content={url} />\n <meta property=\"og:image\" content={coverImageUrl} />\n <meta property=\"og:description\" content={description} />\n <meta property=\"og:site_name\" content={name} />\n\n {noIndex && <meta name=\"robots\" content=\"noindex\" />}\n </Helmet>\n )\n}\n\nexport default SEO\n","import React from \"react\"\nimport TopNav from \"@pitayan/gatsby-theme-pitayan/src/components/TopNav\"\nimport BottomFooter from \"@pitayan/gatsby-theme-pitayan/src/components/BottomFooter\"\nimport SubscriptionPanel from \"@pitayan/gatsby-theme-pitayan/src/components/SubscriptionPanel\"\nimport SEO, { SEOProps } from \"@pitayan/gatsby-theme-pitayan/src/components/SEO\"\nimport { useCookiePrompt } from \"@pitayan/gatsby-theme-pitayan/src/hooks\"\n\ntype DefaultLayoutProps = React.PropsWithChildren<SEOProps>\n\nconst DefaultLayout: React.FC<DefaultLayoutProps> = ({\n postDescription,\n pageImage,\n postTitle,\n pageUrl,\n pageTitle,\n timeToRead,\n date,\n authors,\n noIndex,\n children,\n}) => {\n useCookiePrompt()\n\n return (\n <div className=\"my-16\">\n <SEO\n postDescription={postDescription}\n pageImage={pageImage}\n postTitle={postTitle}\n pageUrl={pageUrl}\n pageTitle={pageTitle}\n timeToRead={timeToRead}\n date={date}\n authors={authors}\n noIndex={noIndex}\n />\n\n <TopNav className=\"pb-20 px-6 md:px-8 max-w-screen-xl mx-auto\" />\n\n <div className=\"px-6 md:px-8 max-w-screen-xl mx-auto\">{children}</div>\n\n <SubscriptionPanel className=\"p-8 text-center mx-auto bg-gray-50 border border-solid border-gray-100 dark:bg-gray-800 dark:border-gray-800\" />\n\n <BottomFooter className=\"pt-16 px-6 md:px-8 max-w-screen-xl mx-auto\" />\n </div>\n )\n}\n\nexport default DefaultLayout\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","\"use strict\";\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.jsonLdScriptProps = exports.JsonLd = exports.helmetJsonLdProp = void 0;\nvar json_ld_1 = require(\"./json-ld\");\nObject.defineProperty(exports, \"helmetJsonLdProp\", { enumerable: true, get: function () { return json_ld_1.helmetJsonLdProp; } });\nObject.defineProperty(exports, \"JsonLd\", { enumerable: true, get: function () { return json_ld_1.JsonLd; } });\nObject.defineProperty(exports, \"jsonLdScriptProps\", { enumerable: true, get: function () { return json_ld_1.jsonLdScriptProps; } });\n","\"use strict\";\n/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.helmetJsonLdProp = exports.jsonLdScriptProps = exports.JsonLd = void 0;\nconst React = require(\"react\");\nfunction JsonLd(props) {\n return React.createElement(\"script\", Object.assign({}, jsonLdScriptProps(props.item, props)));\n}\nexports.JsonLd = JsonLd;\nfunction jsonLdScriptProps(item, options = {}) {\n return {\n type: \"application/ld+json\",\n dangerouslySetInnerHTML: {\n __html: JSON.stringify(item, safeJsonLdReplacer, options.space),\n },\n };\n}\nexports.jsonLdScriptProps = jsonLdScriptProps;\nfunction helmetJsonLdProp(item, options = {}) {\n return {\n type: \"application/ld+json\",\n innerHTML: JSON.stringify(item, safeJsonLdReplacer, options.space),\n };\n}\nexports.helmetJsonLdProp = helmetJsonLdProp;\nconst ESCAPE_ENTITIES = Object.freeze({\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\",\n});\nconst ESCAPE_REGEX = new RegExp(`[${Object.keys(ESCAPE_ENTITIES).join(\"\")}]`, \"g\");\nconst ESCAPE_REPLACER = (t) => ESCAPE_ENTITIES[t];\n/**\n * A replacer for JSON.stringify to strip JSON-LD of illegal HTML entities\n * per https://www.w3.org/TR/json-ld11/#restrictions-for-contents-of-json-ld-script-elements\n */\nconst safeJsonLdReplacer = (() => {\n // Replace per https://www.w3.org/TR/json-ld11/#restrictions-for-contents-of-json-ld-script-elements\n // Solution from https://stackoverflow.com/a/5499821/864313\n return (_, value) => {\n switch (typeof value) {\n case \"object\":\n // Omit null values.\n if (value === null) {\n return undefined;\n }\n return value; // JSON.stringify will recursively call replacer.\n case \"number\":\n case \"boolean\":\n case \"bigint\":\n return value; // These values are not risky.\n case \"string\":\n return value.replace(ESCAPE_REGEX, ESCAPE_REPLACER);\n default: {\n // We shouldn't expect other types.\n isNever(value);\n // JSON.stringify will remove this element.\n return undefined;\n }\n }\n };\n})();\n// Utility: Assert never\nfunction isNever(_) { }\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);\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 _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\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 if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\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\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect =\n /*#__PURE__*/\n 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 // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\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 React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;\n"],"names":["UPPERCASE","LOWERCASE","LEADING_CAPITAL","IDENTIFIER","SEPARATORS","LEADING_SEPARATORS","RegExp","source","SEPARATORS_AND_IDENTIFIER","NUMBERS_AND_IDENTIFIER","camelCase","input","options","Array","isArray","TypeError","pascalCase","preserveConsecutiveUppercase","map","x","trim","filter","length","join","toLowerCase","locale","string","toLocaleLowerCase","toUpperCase","toLocaleUpperCase","isLastCharLower","isLastCharUpper","isLastLastCharUpper","i","character","test","slice","preserveCamelCase","replace","lastIndex","m1","charAt","_","identifier","m","postProcess","module","exports","canUseDOM","window","document","createElement","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","addEventListener","attachEvent","canUseViewport","screen","Object","assign","W","hasNativeLazyLoadSupport","HTMLImageElement","prototype","e","t","a","Boolean","images","fallback","src","gatsbyImageData","gatsbyImage","childImageSharp","z","s","width","height","className","style","P","h","loading","shouldLoad","opacity","A","r","n","o","l","backgroundColor","position","top","left","bottom","right","objectFit","objectPosition","d","transition","H","F","_ref5","layout","paddingTop","maxWidth","display","alt","role","G","children","u","V","B","U","srcSet","decoding","Y","sources","sizes","_ref6","media","type","key","X","propTypes","isRequired","displayName","J","Z","Error","K","Q","ee","te","ae","_len","arguments","_key","c","apply","concat","ie","image","se","re","ne","Set","oe","le","de","as","class","g","onStartLoad","p","onLoad","onError","f","w","y","b","v","E","k","S","M","N","$","JSON","stringify","I","then","_ref7","renderImageToString","swapPlaceholderImage","current","querySelector","complete","wasCached","setTimeout","removeAttribute","removeEventListener","add","has","_ref8","innerHTML","isLoading","isLoaded","requestAnimationFrame","cancelAnimationFrame","ref","dangerouslySetInnerHTML","__html","suppressHydrationWarning","ce","he","ue","__imageData","__error","console","warn","ge","imgClassName","imgStyle","placeholder","pe","_len2","_key2","me","fe","we","NavigationLink","_ref","internal","name","to","React","Link","href","target","rel","memo","group","data","_ref2","url","_group","includes","Navigationlink","_siteMetadata","useSiteMetadata","site","icon","cover","useStaticQuery","siteMetadata","Notification","siteCookieConsent","title","description","readMore","siteLinks","isOpen","setIsOpen","useState","privacyLink","find","match","termsLink","useLayoutEffect","localStorage","getItem","COOKIE_PROMPT_AGREEMENT","COOKIE_PROMPT_DEFAULT_TITLE","COOKIE_PROMPT_DEFAULT_DESCRIPTION","COOKIE_PROMPT_DEFAULT_READMORE","onClick","handleAgree","setItem","useCookiePrompt","containerElm","getElementById","COOKIE_PROMPT_CONTAINER_ID","id","ReactDom","body","appendChild","events","useTextSelection","container","offsetWidth","offsetHeight","lineHeightDelta","setLeft","setTop","textContent","setTextContent","checkTextSelection","_textContent","getSelectedTextPosition","docOffsetTop","getBoundingClientRect","offsetTop","offsetLeft","clientWidth","handler","useCallback","useEffect","forEach","event","DarkModeToggle","isDark","setDark","checkIfDarkMode","onClickToggle","toggleDark","RiSunLine","RiMoonClearFill","__read","Symbol","iterator","call","ar","next","done","push","value","error","styleToObject","split","reduce","acc","_a","_$0","$1","Number","isNaN","noTextChildNodes","possibleStandardNames","acceptcharset","accesskey","allowfullscreen","autocapitalize","autocomplete","autocorrect","autofocus","autoplay","autosave","cellpadding","cellspacing","charset","classid","classname","colspan","contenteditable","contextmenu","controlslist","crossorigin","dangerouslysetinnerhtml","datetime","defaultchecked","defaultvalue","enctype","for","formmethod","formaction","formenctype","formnovalidate","formtarget","frameborder","hreflang","htmlfor","httpequiv","innerhtml","inputmode","itemid","itemprop","itemref","itemscope","itemtype","keyparams","keytype","marginwidth","marginheight","maxlength","mediagroup","minlength","nomodule","novalidate","playsinline","radiogroup","readonly","referrerpolicy","rowspan","spellcheck","srcdoc","srclang","srcset","tabindex","typemustmatch","usemap","accentheight","alignmentbaseline","allowreorder","arabicform","attributename","attributetype","autoreverse","basefrequency","baselineshift","baseprofile","calcmode","capheight","clippath","clippathunits","cliprule","colorinterpolation","colorinterpolationfilters","colorprofile","colorrendering","contentscripttype","contentstyletype","diffuseconstant","dominantbaseline","edgemode","enablebackground","externalresourcesrequired","fillopacity","fillrule","filterres","filterunits","floodopacity","floodcolor","fontfamily","fontsize","fontsizeadjust","fontstretch","fontstyle","fontvariant","fontweight","glyphname","glyphorientationhorizontal","glyphorientationvertical","glyphref","gradienttransform","gradientunits","horizadvx","horizoriginx","imagerendering","kernelmatrix","kernelunitlength","keypoints","keysplines","keytimes","lengthadjust","letterspacing","lightingcolor","limitingconeangle","markerend","markerheight","markermid","markerstart","markerunits","markerwidth","maskcontentunits","maskunits","numoctaves","overlineposition","overlinethickness","paintorder","pathlength","patterncontentunits","patterntransform","patternunits","pointerevents","pointsatx","pointsaty","pointsatz","preservealpha","preserveaspectratio","primitiveunits","refx","refy","renderingintent","repeatcount","repeatdur","requiredextensions","requiredfeatures","shaperendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stopcolor","stopopacity","strikethroughposition","strikethroughthickness","strokedasharray","strokedashoffset","strokelinecap","strokelinejoin","strokemiterlimit","strokewidth","strokeopacity","suppresscontenteditablewarning","suppresshydrationwarning","surfacescale","systemlanguage","tablevalues","targetx","targety","textanchor","textdecoration","textlength","textrendering","underlineposition","underlinethickness","unicodebidi","unicoderange","unitsperem","unselectable","valphabetic","vectoreffect","vertadvy","vertoriginx","vertoriginy","vhanging","videographic","viewbox","viewtarget","vmathematical","wordspacing","writingmode","xchannelselector","xheight","xlinkactuate","xlinkarcrole","xlinkhref","xlinkrole","xlinkshow","xlinktitle","xlinktype","xmlbase","xmllang","xmlnsxlink","xmlspace","ychannelselector","zoomandpan","onblur","onchange","onclick","oncontextmenu","ondoubleclick","ondrag","ondragend","ondragenter","ondragexit","ondragleave","ondragover","ondragstart","ondrop","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onmousedown","onmouseenter","onmouseleave","onmousemove","onmouseout","onmouseover","onmouseup","onscroll","onsubmit","ontouchcancel","ontouchend","ontouchmove","ontouchstart","onwheel","__assign","hasOwnProperty","this","__spreadArray","from","pack","convertFromNode","Node","nodeName","_b","actions","_c","index","_d","level","randomKey","node","result","characters","Math","round","random","randomString","action","condition","pre","post","nodeType","reactKey","attributes","Element","nodeClassNames","getAttribute","parseAttributes","childNodeList","parseChildren","childNodes","nodeText","nodeValue","toString","parentNode","parentNodeName","convert","nodeOnly","selector","DOMParser","parseFromString","convertFromString","STATUS","FAILED","LOADED","LOADING","PENDING","READY","UNSUPPORTED","isSupportedEnvironment","div","svg","firstChild","namespaceURI","supportsInlineSVG","extendStatics","__extends","setPrototypeOf","__proto__","String","__","constructor","create","cacheStore","InlineSVG","_super","props","_this","defineProperty","enumerable","configurable","writable","content","hasCache","isActive","setState","status","getElement","message","cacheRequests","fetchOptions","fetch","response","contentType","headers","get","fileType","some","text","currentSrc","handleLoad","cache","catch","handleError","state","element","hash","uniqueHash","letters","R","floor","isInitialized","load","previousProps","previousState","processSVG","SVGSVGElement","updateSVGAttributes","originalDesc","removeChild","descElement","createElementNS","prepend","originalTitle","titleElement","getNode","inlineSrc","dataURI","atob","decodeURIComponent","request","baseURL","uniquifyIDs","replaceableAttributes","linkAttributes","attributes_1","values","attribute","preProcessor","innerRef","loader","elementProps","_i","output","omit","SiteLogo","normal","extension","publicURL","SVG","getImage","GatsbyImage","TopNav","BottomFooter","year","Date","getFullYear","siteDescription","NavigationLinksGroup","SubscriptionPanel","siteSubscription","email","setEmail","setMessage","subscribed","setSubscribed","SUBSCRIPTION_DEFAULT_TITLE","SUBSCRIPTION_DEFAULT_DESCRIPTION","onSubmit","preventDefault","subscribeMailChimp","dispatchCustomEvent","CUSTOM_EVENT_SUBSCRIPTION","msg","onChange","currentTarget","formNoValidate","disabled","clock","Component","_class","_temp","ATTRIBUTE_NAMES","TAG_NAMES","BASE","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","TAG_PROPERTIES","keys","REACT_TAG_MAP","HELMET_PROPS","HTML_TAG_MAP","obj","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","_typeof","createClass","defineProperties","descriptor","Constructor","protoProps","staticProps","_extends","objectWithoutProperties","indexOf","encodeSpecialCharacters","str","undefined","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","getBaseTagFromPropsList","primaryAttributes","reverse","innermostBaseTag","tag","lowerCaseAttributeKey","getTagsFromPropsList","tagName","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","property","rafPolyfill","now","callback","currentTime","cafPolyfill","clearTimeout","bind","webkitRequestAnimationFrame","mozRequestAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","_helmetCallback","commitTagChanges","newState","cb","baseTag","bodyAttributes","htmlAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","titleAttributes","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","elementTag","getElementsByTagName","helmetAttributeString","helmetAttributes","attributesToRemove","attributeKeys","setAttribute","indexToSave","splice","tags","headElement","head","tagNodes","querySelectorAll","indexToDelete","newElement","styleSheet","cssText","createTextNode","existingTag","isEqualNode","generateElementAttributesAsString","attr","convertElementAttributestoReactProps","initProps","getMethodsForTag","encode","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","mapStateOnServer","_ref$title","base","link","meta","noscript","script","HelmetSideEffects","defer","HelmetExport","_React$Component","HelmetWrapper","instance","classCallCheck","self","ReferenceError","possibleConstructorReturn","subClass","superClass","inherits","shouldComponentUpdate","nextProps","mapNestedChildrenToProps","child","nestedChildren","flattenArrayTypeChildren","_babelHelpers$extends","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_babelHelpers$extends2","_babelHelpers$extends3","newProps","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_babelHelpers$extends4","warnOnInvalidChildren","mapChildrenToProps","_this2","_child$props","initAttributes","convertReactPropstoHtmlAttributes","render","_props","set","defaultTitle","titleTemplate","defaultProps","peek","rewind","mappedState","renderStatic","organizationSchema","siteUrl","siteLogoPath","siteTitle","socialUrls","sameAs","logo","inLanguage","caption","websiteSchema","publisher","breadcrumbsListSchema","_ref3","postTitle","pageUrl","itemListElement","list","item","webPageSchema","_ref4","isPartOf","about","breadcrumb","postPageSchema","datePublished","dateModified","imageSchema","coverImageUrl","postSchema","keywords","dateCreated","authors","headline","mainEntityOfPage","author","_ref9","siteSchemas","_ref10","_ref11","bio","authorSchema","pageImage","timeToRead","postDescription","pageTitle","date","noIndex","siteCoverPath","twitter","Helmet","lang","helmetJsonLdProp","itemProp","SEO","hasElementType","hasMap","Map","hasSet","hasArrayBuffer","ArrayBuffer","isView","equal","it","size","entries","flags","valueOf","$$typeof","json_ld_1","jsonLdScriptProps","JsonLd","safeJsonLdReplacer","space","ESCAPE_ENTITIES","freeze","ESCAPE_REGEX","ESCAPE_REPLACER","ex","React__default","_defineProperty","reducePropsToState","handleStateChangeOnClient","WrappedComponent","mountedInstances","emitChange","SideEffect","_PureComponent","recordedState","_proto","UNSAFE_componentWillMount","componentDidUpdate","componentWillUnmount","PureComponent","getDisplayName"],"sourceRoot":""}